|
|
|
|
/*
|
|
|
|
|
Пример использования
|
|
|
|
|
Работа с ресурсом 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"
|
|
|
|
|
|
|
|
|
|
#вес сети, указывается при необходимости указания порядка подключения сетей
|
|
|
|
|
#первой подключается сеть с наименьшим весом
|
|
|
|
|
#сеть с нулевым или неуказанным весом имеет наименьший приоритет
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#тип - целое число
|
|
|
|
|
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"
|
|
|
|
|
}]
|
|
|
|
|
|
|
|
|
|
#rollback на нужный снапшот
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#не имеет смысла при отсутсвии снапшотов
|
|
|
|
|
#тип - объект
|
|
|
|
|
rollback = {
|
|
|
|
|
#Лейбл снапшота
|
|
|
|
|
#Обязательный параметр
|
|
|
|
|
#тип - строка
|
|
|
|
|
label = "label1"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#вставить/удалить СD rom
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#максимальное кол-во - 1
|
|
|
|
|
#тип - объект
|
|
|
|
|
cd = {
|
|
|
|
|
#id образа диска CD rom
|
|
|
|
|
#обязательный параметр
|
|
|
|
|
#тип - целое число
|
|
|
|
|
cdrom_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
|
|
|
|
|
auto_start = true
|
|
|
|
|
|
|
|
|
|
#флаг для редеплоя компьюта
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#тип - булев
|
|
|
|
|
#по умолчанию - false
|
|
|
|
|
force_stop = true
|
|
|
|
|
|
|
|
|
|
#флаг для ресайза компьюта
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#тип - булев
|
|
|
|
|
#по умолчанию - false
|
|
|
|
|
force_resize = true
|
|
|
|
|
|
|
|
|
|
#поле для редеплоя компьюта
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#тип - строка
|
|
|
|
|
#возможные значения - "KEEP", "DETACH", "DESTROY"
|
|
|
|
|
data_disks = "KEEP"
|
|
|
|
|
|
|
|
|
|
#запуск/стоп компьюта
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#тип - булев
|
|
|
|
|
#по умолчанию - true
|
|
|
|
|
started = true
|
|
|
|
|
|
|
|
|
|
#detach диска при удалении компьюта
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#тип - булев
|
|
|
|
|
#по умолчанию - true
|
|
|
|
|
detach_disks = true
|
|
|
|
|
|
|
|
|
|
#флаг для удаления компьюта
|
|
|
|
|
#опциональный параметр
|
|
|
|
|
#тип - булев
|
|
|
|
|
#по умолчанию - true
|
|
|
|
|
permanently = false
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
output "test" {
|
|
|
|
|
value = dynamix_kvmvm.comp
|
|
|
|
|
}
|