Files

497 lines
18 KiB
Terraform
Raw Normal View History

2024-07-25 14:33:38 +03:00
/*
Пример использования
Работа с ресурсом kvmvm (compute)
Ресурс позволяет:
1. Создавать compute
2. Редактировать compute
3. Удалять compute
*/
#Раскомментируйте этот код,
#и внесите необходимые правки в версию и путь,
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
/*
terraform {
required_providers {
dynamix = {
version = "<VERSION>"
source = "basistech.ru/tf/dynamix"
}
}
}
*/
provider "dynamix" {
authenticator = "decs3o"
2024-08-23 16:55:50 +03:00
#controller_url = <DYNAMIX_CONTROLLER_URL>
2024-07-25 14:33:38 +03:00
controller_url = "https://ds1.digitalenergy.online"
2024-08-23 16:55:50 +03:00
#oauth2_url = <DYNAMIX_OAUTH2_URL>
2024-07-25 14:33:38 +03:00
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
resource "dynamix_kvmvm" "comp" {
#имя compute
#может быть изменен
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
2024-07-25 14:33:38 +03:00
name = "test-tf-compute-update-new"
#id resource group
#обязательный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#используется при создании
2024-07-25 14:33:38 +03:00
rg_id = 1111
#тип драйвера для compute
#обязательный параметр
#тип - строка
2024-12-04 13:18:58 +03:00
#возможные значения: "SVA_KVM_X86", "KVM_X86"
2025-07-01 13:44:09 +03:00
#используется при создании
2024-07-25 14:33:38 +03:00
driver = "KVM_X86"
#число cpu
#обязательный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
2024-07-25 14:33:38 +03:00
cpu = 1
#кол-во оперативной памяти, МБ
#обязательный параметр
#тип - целое число
#возможные значения: кратные 128
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
2024-07-25 14:33:38 +03:00
ram = 2048
#размер загрузочного диска
#опциональный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#boot_disk_size = 20
2024-07-25 14:33:38 +03:00
2024-12-04 13:18:58 +03:00
#тип эмулируемой системы
#опциональный параметр
#тип - строка
#возможные значения: "i440fx", "Q35"
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#chipset = "i440fx"
2024-12-04 13:18:58 +03:00
2024-07-25 14:33:38 +03:00
#id сепа для boot диска
#опциональный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#используется при создании
#sep_id = 1
2024-07-25 14:33:38 +03:00
#название пула
#опциональный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#используется при создании
#pool = "data02"
2024-07-25 14:33:38 +03:00
#конфигурация cloud init
#опциональный параметр
2024-12-04 13:18:58 +03:00
#тип - файл в формате JSON
2025-07-01 13:44:09 +03:00
#используется при создании
#cloud_init = file("initconfig.tftpl")
2024-07-25 14:33:38 +03:00
#описание compute
#опциональный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#description = "test update description in tf words update"
2024-07-25 14:33:38 +03:00
#id образа диска для создания compute
#опциональный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#image_id = 111
2024-07-25 14:33:38 +03:00
#создание без загрузочного диска в остановленном состоянии
#опциональный параметр
#если значение равно True, параметры image_id, boot_disk_size, sep_id, pool должны быть пустыми
#тип - булев
2025-07-01 13:44:09 +03:00
#используется при создании
#without_boot_disk = true
2024-07-25 14:33:38 +03:00
#необходимость выравнивать ВМ по NUMA
#опциональный параметр
#возможные значения - "none "strict" "loose"
#по умолчанию - "none"
#тип - строка
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#numa_affinity = "loose"
2024-07-25 14:33:38 +03:00
#необходимость запускать ВМ на выделенных CPU ядрах
#опциональный параметр
#по умолчанию - false
#тип - булев
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#cpu_pin = true
2024-07-25 14:33:38 +03:00
#необходимость использовать для выделения RAM виртуальной машины Huge Pages
#опциональный параметр
#по умолчанию - false
#тип - булев
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#hp_backed = true
2024-07-25 14:33:38 +03:00
2024-12-04 13:18:58 +03:00
#список PCI девайсов
#опциональный параметр
#тип - массив целых чисел
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#pci_devices = [1,2]
2024-12-04 13:18:58 +03:00
2024-07-25 14:33:38 +03:00
#правила affinity
#опциональный параметр
#может быть один, несколько или ни одного
#тип - список объектов правил
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#affinity_rules = [{
2024-07-25 14:33:38 +03:00
#тип правила
#обязательный параметр
#возможные значения - compute или node
#тип - строка
2025-07-01 13:44:09 +03:00
#topology = "compute"
2024-07-25 14:33:38 +03:00
#строгость правила
#обязательный параметр
#возможные значения - RECOMMENDED и REQUIRED
#тип - строка
2025-07-01 13:44:09 +03:00
#policy = "RECOMMENDED"
2024-07-25 14:33:38 +03:00
#режим проверки
#обязательный параметр
#возможные значения - ANY, EQ, NE
#тип - строка
2025-07-01 13:44:09 +03:00
#mode = "ANY"
2024-07-25 14:33:38 +03:00
#ключ правила
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#key = "testkey"
2024-07-25 14:33:38 +03:00
#ключ правила
#опциональный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#value = "testvalue"
#}]
2024-07-25 14:33:38 +03:00
#правила anti-affinity
#опциональный параметр
#может быть один, несколько или ни одного
#тип - список объектов правил
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#anti_affinity_rules = [{
2024-07-25 14:33:38 +03:00
#тип правила
#обязательный параметр
#возможные значения - compute или node
#тип - строка
2025-07-01 13:44:09 +03:00
#topology = "compute"
2024-07-25 14:33:38 +03:00
#строгость правила
#обязательный параметр
#возможные значения - RECOMMENDED и REQUIRED
#тип - строка
2025-07-01 13:44:09 +03:00
#policy = "RECOMMENDED"
2024-07-25 14:33:38 +03:00
#режим проверки
#обязательный параметр
#возможные значения - ANY, EQ, NE
#тип - строка
2025-07-01 13:44:09 +03:00
#mode = "ANY"
2024-07-25 14:33:38 +03:00
#ключ правила
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#key = "testkey"
2024-07-25 14:33:38 +03:00
#ключ правила
#опциональный параметр
#тип -строка
2025-07-01 13:44:09 +03:00
#value = "testvalue"
#}]
2024-07-25 14:33:38 +03:00
#установка метки для вм
#опциональный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#affinity_label = "test4"
2024-07-25 14:33:38 +03:00
#Управление XML виртуальной машины
#опциональный параметр
#тип - строка (json-encoded)
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#custom_fields = "{`key`:`value`}"
2024-07-25 14:33:38 +03:00
#наименование системы
#опциональный параметр
#используется при создании вм
#по умолчанию - не задан
#тип - строка
2025-07-01 13:44:09 +03:00
#используется при создании
#is = ""
2024-07-25 14:33:38 +03:00
#назначение вм
#опциональный параметр
#используется при создании вм
#по умолчанию - не задан
#тип - строка
2025-07-01 13:44:09 +03:00
#используется при создании
#ipa_type = ""
2024-07-25 14:33:38 +03:00
#id экстра дисков
#опциональный параметр
#тип - массив целых чисел
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#extra_disks = [1234, 4322, 1344]
2024-07-25 14:33:38 +03:00
#присоединения сетей и удаление сетей в компьюте
#опциональный параметр
#тип - список объектов сетей
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#network = [{
2024-12-04 13:18:58 +03:00
#тип сети
2024-07-25 14:33:38 +03:00
#обязательный параметр
#тип - строка
2025-02-07 11:59:43 +03:00
#возможные значения - "VINS", "EXTNET", "VFNIC", "DPDK" (при выборе типа DPDK, необходимо указать hp_backed = true)
2025-07-01 13:44:09 +03:00
#net_type = "VINS"
2024-07-25 14:33:38 +03:00
#id сети
#обязательный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#net_id = 1234
2024-07-25 14:33:38 +03:00
#ip адрес входящий в сеть
#опциональный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#ip_address = "127.0.0.1"
#mac-адрес интерфейса компьюта
#опциональный параметр
#тип - строка
#mac = "52:54:01:12:34:60"
2024-12-04 13:18:58 +03:00
#вес сети, указывается при необходимости указания порядка подключения сетей
#первой подключается сеть с наименьшим весом
#сеть с нулевым или неуказанным весом имеет наименьший приоритет
#опциональный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#weight = 15
2024-12-04 13:18:58 +03:00
#максимальный объём данных, который может быть передан за одну итерацию
#используется только с сетями типа "DPDK"
#возможные значения - 1-9216
#опциональный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#mtu = 1500
#}]
2024-07-25 14:33:38 +03:00
#добавление и удаление тэгов
#опциональный параметр
#тип - список тэгов
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#tags = [{
2024-07-25 14:33:38 +03:00
#ключ для тэга
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#key = "key"
2024-07-25 14:33:38 +03:00
#значения тэга
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#value = "value"
#}]
2024-07-25 14:33:38 +03:00
#добавление и удаление port forwarding
#опциональный параметр
#тип - список объектов переадресации портов
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#port_forwarding = [{
2024-07-25 14:33:38 +03:00
#номер внешнего начального порта для правила
#Обязательный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#public_port_start = 2023
2024-07-25 14:33:38 +03:00
#номер внешнего последнего порта для правила
#опциональный параметр
#тип - целое число
#по умолчанию - -1
2025-07-01 13:44:09 +03:00
#public_port_end = 2023
2024-07-25 14:33:38 +03:00
#номер внутреннего базового порта
#обязательный параметр
#тип - целое число
2025-07-01 13:44:09 +03:00
#local_port = 80
2024-07-25 14:33:38 +03:00
#сетевой протокол
2025-07-01 13:44:09 +03:00
#обязательный параметр
2024-07-25 14:33:38 +03:00
#тип - строка
2025-07-01 13:44:09 +03:00
#proto = "tcp"
#}]
2024-07-25 14:33:38 +03:00
#предоставить/забрать пользователю доступ к компьюту
#опциональный параметр
#тип - список объектов прав пользователя
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#user_access = [{
2024-07-25 14:33:38 +03:00
#имя юзера, которому предоставляем доступ
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#username = "some@decs3o"
2024-07-25 14:33:38 +03:00
#права: 'R' - только на чтение, 'RCX' - чтение/запись, 'ARCXDU' - админ
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#access_type = "ARCXDU"
#}]
2024-07-25 14:33:38 +03:00
#создать/удалить снапшот компьюта
#опциональный параметр
#тип - список объектов снапшотов
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#snapshot = [{
2024-07-25 14:33:38 +03:00
#лейбл снапшота
#обязательный параметр
#тип - строка
2025-07-01 13:44:09 +03:00
#label = "label1"
#}]
#флаг для удаления снапшотов в асинхронном режиме
#опциональный параметр
#по умолчанию - false
#тип - булев
#используется при удалении
#snapshot_delete_async = true
2024-07-25 14:33:38 +03:00
#rollback на нужный снапшот
#опциональный параметр
#не имеет смысла при отсутсвии снапшотов
#тип - объект
2025-07-01 13:44:09 +03:00
#используется при обновлении
#rollback = {
#лейбл снапшота
#обязательный параметр
2024-07-25 14:33:38 +03:00
#тип - строка
2025-07-01 13:44:09 +03:00
#label = "label1"
#}
2024-07-25 14:33:38 +03:00
#вставить/удалить СD rom
#опциональный параметр
2025-07-01 13:44:09 +03:00
#тип - целое число
#используется при создании и обновлении
#cd_image_id = 344
2024-07-25 14:33:38 +03:00
2025-02-07 11:59:43 +03:00
#список ядер для использования в механизме vcpupinning. Количество указанных ядер должно быть равно количеству виртуальных процессоров ВМ
#игнорируется если cpu_pin=false или pin_to_stack=false
#опциональный параметр
#тип - массив целых чисел
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#preferred_cpu = [1234, 456]
2025-02-07 11:59:43 +03:00
2024-07-25 14:33:38 +03:00
#добавить компьют на стэк
#опциональный параметр
#тип - булев
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#pin_to_stack = true
2024-07-25 14:33:38 +03:00
2025-01-21 12:16:49 +03:00
#флаг для старта компьюта при рестарте ноды
#опциональный параметр
#тип - булев
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#auto_start_w_node = true
2025-01-21 12:16:49 +03:00
2024-07-25 14:33:38 +03:00
#флаг доступности компьюта для проведения с ним операций
#опциональный параметр
#тип - булев
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#enabled = true
2024-07-25 14:33:38 +03:00
#pause/resume компьюта
#опциональный параметр
#тип - булев
#по умолчанию - false
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#pause = true
2024-07-25 14:33:38 +03:00
#reset компьюта
#опциональный параметр
#тип - булев
#по умолчанию - false
2025-07-01 13:44:09 +03:00
#используется при обновлении
#reset = true
2024-07-25 14:33:38 +03:00
#восстановить компьют из корзины
#опциональный параметр
#тип - булев
#по умолчанию - true
2025-07-01 13:44:09 +03:00
#используется при обновлении
#restore = true
2024-07-25 14:33:38 +03:00
#флаг для редеплоя компьюта
#опциональный параметр
#тип - булев
#по умолчанию - false
force_stop = true
#флаг для ресайза компьюта
#опциональный параметр
#тип - булев
#по умолчанию - false
2025-07-01 13:44:09 +03:00
#используется при обновлении
#force_resize = true
2024-07-25 14:33:38 +03:00
#запуск/стоп компьюта
#опциональный параметр
#тип - булев
#по умолчанию - true
2025-07-01 13:44:09 +03:00
#используется при создании и обновлении
#started = true
2024-07-25 14:33:38 +03:00
#detach диска при удалении компьюта
#опциональный параметр
#тип - булев
#по умолчанию - true
2025-07-01 13:44:09 +03:00
#используется при удалении
#detach_disks = true
2024-07-25 14:33:38 +03:00
#флаг для удаления компьюта
#опциональный параметр
#тип - булев
#по умолчанию - true
2025-07-01 13:44:09 +03:00
#используется при удалении
#permanently = false
#тип вм
#возможные значения - linux, windows, unknown
#опциональный параметр
#тип - строка
#используется при создании и обновлении
#loader_type = "unknown"
#тип загрузки образа
#возможные значения - bios, uefi
#опциональный параметр
#тип - строка
#используется при создании и обновлении
#boot_type = "bios"
#изменение размера ВМ
#опциональный параметр
#тип - булев
#используется при создании и обновлении
#hot_resize = false
#наименование сетевого интерфейса
#возможные значения - eth, ens
#опциональный параметр
#тип - строка
#используется при создании и обновлении
#network_interface_naming = "ens"
2024-07-25 14:33:38 +03:00
}
output "test" {
value = dynamix_kvmvm.comp
}