/* Пример использования Работа с ресурсом kvmvm (compute) Ресурс позволяет: 1. Создавать compute 2. Редактировать compute 3. Удалять compute */ #Расскомментируйте этот код, #и внесите необходимые правки в версию и путь, #чтобы работать с установленным вручную (не через hashicorp provider registry) провайдером /* terraform { required_providers { decort = { source = "basis/decort/decort" version = "" } } } */ provider "decort" { authenticator = "decs3o" #controller_url = controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" #app_id = #app_secret = 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 #флаг для ресайза компьюта #опциональный параметр #тип - булев force_resize = true #поле для редеплоя компьюта #опциональный параметр #тип - строка data_disks = "KEEP" #запуск/стоп компьюта #опциональный параметр #тип - булев started = true #detach диска при удалении компьюта #опциональный параметр #тип - булев detach_disks = true #Флаг для удаления компьюта #опциональный параметр #тип - bool permanently = false } output "test" { value = decort_cb_kvmvm.comp }