You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

497 lines
18 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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