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.

397 lines
13 KiB

7 months ago
/*
Пример использования
Работа с ресурсом 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 = <DECORT_CONTROLLER_URL>
controller_url = "https://ds1.digitalenergy.online"
#oauth2_url = <DECORT_SSO_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", "KVM_PPC"
driver = "KVM_X86"
#число cpu
#обязательный параметр
#тип - целое число
cpu = 1
#кол-во оперативной памяти, МБ
#обязательный параметр
#тип - целое число
#возможные значения: кратные 128
ram = 2048
#размер загрузочного диска
#опциональный параметр
#тип - целое число
boot_disk_size = 20
#id сепа для boot диска
#опциональный параметр
#тип - целое число
sep_id = 1
#название пула
#опциональный параметр
#тип - строка
pool = "data02"
#конфигурация cloud init
#опциональный параметр
#тип - файл в формате JSON/YAML
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
#правила 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 (для KVM_X86)
#обязательный параметр
#тип - строка
net_type = "VINS"
#id сети
#обязательный параметр
#тип - целое число
net_id = 1234
#ip адрес входящий в сеть
#опциональный параметр
#тип - строка
ip_address = "127.0.0.1"
}]
#добавление и удаление тэгов
#опциональный параметр
#тип - список тэгов
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
}
#добавить компьют на стэк
#опциональный параметр
#тип - булев
pin_to_stack = 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
}