/* Пример использования Работа с ресурсом kvmvm (compute) Ресурс позволяет: 1. Создавать compute 2. Редактировать compute 3. Удалять compute */ #Раскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* terraform { required_providers { dynamix = { version = "" source = "basistech.ru/tf/dynamix" } } } */ provider "dynamix" { authenticator = "decs3o" #controller_url = controller_url = "https://ds1.digitalenergy.online" #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 }