|
|
/*
|
|
|
Пример использования
|
|
|
Работа с ресурсом kvmvm (compute)
|
|
|
Ресурс позволяет:
|
|
|
1. Создавать compute
|
|
|
2. Редактировать compute
|
|
|
3. Удалять compute
|
|
|
*/
|
|
|
#Расскомментируйте этот код,
|
|
|
#и внесите необходимые правки в версию и путь,
|
|
|
#чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером
|
|
|
/*
|
|
|
terraform {
|
|
|
required_providers {
|
|
|
decort = {
|
|
|
version = "<VERSION>"
|
|
|
source = "basis/decort/decort"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
*/
|
|
|
|
|
|
|
|
|
provider "decort" {
|
|
|
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 "decort_cb_kvmvm" "comp" {
|
|
|
#имя compute
|
|
|
#обязательный параметр
|
|
|
#мб изменен
|
|
|
#тип - строка
|
|
|
name = "test-tf-compute-update-new"
|
|
|
|
|
|
#id resource group
|
|
|
#обязательный параметр
|
|
|
#тип - число
|
|
|
rg_id = 1111
|
|
|
|
|
|
#тип драйвера для compute
|
|
|
#обязательный параметр
|
|
|
#тип - строка
|
|
|
driver = "KVM_X86"
|
|
|
|
|
|
#число cpu
|
|
|
#обязательный параметр
|
|
|
#тип - число
|
|
|
cpu = 1
|
|
|
|
|
|
#кол-во оперативной памяти, МБ
|
|
|
#обязательный параметр
|
|
|
#тип - число
|
|
|
ram = 2048
|
|
|
|
|
|
#id образа диска для создания compute
|
|
|
#обязательный параметр
|
|
|
#тип - число
|
|
|
image_id = 111
|
|
|
|
|
|
#размер загрузочного диска
|
|
|
#опциональный параметр
|
|
|
#тип - число
|
|
|
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"
|
|
|
|
|
|
#stack id
|
|
|
#опциональный параметр
|
|
|
#тип - число
|
|
|
stack_id = 1
|
|
|
|
|
|
#id образа CD-ROM для загрузки
|
|
|
#используется при изменении ресурса, при повторном старте вм
|
|
|
#опциональный параметр
|
|
|
#тип - число
|
|
|
alt_boot_id = 1
|
|
|
|
|
|
#Создание и добавление диска дял compute
|
|
|
#опциональный параметр
|
|
|
#тип - список дисков
|
|
|
disks {
|
|
|
#Имя диска
|
|
|
#Обязательный для диска параметр
|
|
|
#Тип - строка
|
|
|
disk_name = "disk_name"
|
|
|
|
|
|
#Размер диска
|
|
|
#Обязательный для диска параметр
|
|
|
#Тип - число
|
|
|
size = 5
|
|
|
|
|
|
#Тип диска
|
|
|
#опциональный параметр
|
|
|
#тип - строка
|
|
|
disk_type = "D"
|
|
|
|
|
|
#опциональный параметр
|
|
|
#тип - число
|
|
|
sep_id = 1
|
|
|
|
|
|
#Название пула
|
|
|
#опциональный параметр
|
|
|
#тип - строка
|
|
|
pool = "data01"
|
|
|
|
|
|
#Описание диска
|
|
|
#опциональный параметр
|
|
|
#тип - строка
|
|
|
desc = ""
|
|
|
|
|
|
#Айди образа
|
|
|
#опциональный параметр
|
|
|
image_id = 378
|
|
|
|
|
|
#Флаг для удаления диска
|
|
|
#опциональный параметр
|
|
|
#тип - bool
|
|
|
permanently = false
|
|
|
}
|
|
|
|
|
|
#правила 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"
|
|
|
|
|
|
|
|
|
#наименование системы
|
|
|
#опциональный параметр
|
|
|
#используется при создании вм
|
|
|
#по умолчанию - не задан
|
|
|
#тип - строка
|
|
|
is=""
|
|
|
|
|
|
#назначение вм
|
|
|
#опциональный параметр
|
|
|
#используется при создании вм
|
|
|
#по умолчанию - не задан
|
|
|
#тип - строка
|
|
|
ipa_type = ""
|
|
|
|
|
|
#Id экстра дисков
|
|
|
#опциональный параметр
|
|
|
#тип - список чисел
|
|
|
extra_disks = [1234, 4322, 1344]
|
|
|
|
|
|
#Управление XML виртуальной машины
|
|
|
#опциональный параметр
|
|
|
#тип - строка (json-encoded)
|
|
|
custom_fields = "{`key`:`value`}"
|
|
|
|
|
|
#Описание необходимости выполнения действия
|
|
|
#опциональный параметр
|
|
|
#тип - строка
|
|
|
reason = "need"
|
|
|
|
|
|
#Присоеденения сетей и удаление сетей в компьюте
|
|
|
#опциональный параметр
|
|
|
#тип - блок
|
|
|
network {
|
|
|
#Тип сети VINS/EXTNET
|
|
|
#Обязательный параметр
|
|
|
#тип - строка
|
|
|
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
|
|
|
|
|
|
#id stack для добавления компьюта на этот стэк
|
|
|
#опциональный параметр
|
|
|
#тип - число
|
|
|
target_stack_id = 1
|
|
|
|
|
|
#Флаг для принужительного добавления компьюта на стэк
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
force_pin = true
|
|
|
|
|
|
#Флаг доступности компьюта для проведения с ним операций
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
enabled = true
|
|
|
|
|
|
#pause/resume компьюта
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
pause = true
|
|
|
|
|
|
#сделать компьют заново
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
reset = true
|
|
|
|
|
|
#восстановить удаленный компьют из корзины
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
restore = true
|
|
|
|
|
|
#флаг для редеплоя компьюта
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
auto_start = true
|
|
|
|
|
|
#флаг для редеплоя компьюта
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
force_stop = true
|
|
|
|
|
|
#поле для редеплоя компьюта
|
|
|
#опциональный параметр
|
|
|
#тип - строка
|
|
|
data_disks = "KEEP"
|
|
|
|
|
|
#запуск/стоп компьюта
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
started = true
|
|
|
|
|
|
#detach диска при удалении компьюта
|
|
|
#опциональный параметр
|
|
|
#тип - булев
|
|
|
detach_disks = true
|
|
|
|
|
|
#Флаг для удаления компьюта
|
|
|
#опциональный параметр
|
|
|
#тип - bool
|
|
|
permanently = false
|
|
|
}
|
|
|
|
|
|
output "test" {
|
|
|
value = decort_cb_kvmvm.comp
|
|
|
}
|