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