/* Пример использования Работа с ресурсом 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" #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 }