## Инструкция по миграции с terraform-provider-decort на terraform-provider-dynamix ### Установка terraform-provider-dynamix В релизном архиве находятся скрипты-инсталляторы. Чтобы выполнить установку, необходимо: 1. Перейти по адресу: https://repository.basistech.ru/BASIS/terraform-provider-dynamix/releases 2. Выбрать необходимую версию провайдера подходящую под операционную систему. 3. Скачать архив. 4. Распаковать архив. 5. Выполнить скрипт установщика, `install.sh` или `install.bat` для Windows.
*Для запуска `install.sh` не забудьте изменить права доступа к файлу* ```bash chmod u+x install.sh ``` 6. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его ```bash DYNAMIX provider version 1.3.0 has been successfully installed Copy this provider configuration to main.tf file: terraform { required_providers { dynamix = { source = "basistech.ru/tf/dynamix" version = "1.3.0" } } } ``` 7. Теперь вам необходимо отредактировать ваши конфигурационные .tf файлы terraform-provider-decort для работы с terraform-provider-dynamix. #### Общие изменения Измените блок подключения провайдера. Замените `decort` на `dynamix`, `source = "basis/decort/decort"` на `source = "basistech.ru/tf/dynamix"`, укажите нужную версию. ##### Было ```go terraform { required_providers { decort = { source = "basis/decort/decort" version = "4.6.1" } } } ``` ##### Стало ```go terraform { required_providers { dynamix = { source = "basistech.ru/tf/dynamix" version = "1.3.0" } } } ``` Измените блок настройки провайдера. Замените название провайдера с `decort` на `dynamix`. ##### Было ```go provider "decort" { authenticator = "decs3o" #controller_url = controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true } ``` ##### Стало ```go provider "dynamix" { authenticator = "decs3o" #controller_url = controller_url = "https://ds1.digitalenergy.online" #oauth2_url = oauth2_url = "https://sso.digitalenergy.online" allow_unverified_ssl = true } ``` Если параметры провайдера указаны в переменных окружения, замените префикс DECORT на DYNAMIX #### Было `DECORT_CONTROLLER_URL` #### Стало `DYNAMIX_CONTROLLER_URL` Измените блок описания самого ресурса/датасурса. Замените `decort` на `dynamix`. ##### Было ```go data "decort_account" "a" { #id аккаунта #обязательный параметр #тип - целое число account_id = 11111 } ``` ##### Стало ```go data "dynamix_account" "a" { #id аккаунта #обязательный параметр #тип - целое число account_id = 11111 } ``` Не забудьте изменить название ресурса/датасурса в блоке вывода. Замените `decort` на `dynamix`. ##### Было ```go output "test" { value = data.decort_account.a } ``` ##### Стало ```go output "test" { value = data.dynamix_account.a } Все поля внутри resource и data source, которые являлись блоками стали атрибутами и теперь их следует задавать через знак равно. ##### Было ```go affinity_rules { #тип правила #обязательный параметр #возможные значения - compute или node #тип - строка topology = "compute" #строгость правила #обязательный параметр #возможные значения - RECOMMENDED и REQUIRED #тип - строка policy = "RECOMMENDED" #режим проверки #обязательный параметр #возможные значения - ANY, EQ, NE #тип - строка mode = "ANY" #ключ правила #обязательный параметр #тип - строка key = "testkey" #ключ правила #необязательный параметр #тип - строка value = "testvalue" } ``` ##### Стало ```go affinity_rules = [{ #тип правила #обязательный параметр #возможные значения - compute или node #тип - строка topology = "compute" #строгость правила #обязательный параметр #возможные значения - RECOMMENDED и REQUIRED #тип - строка policy = "RECOMMENDED" #режим проверки #обязательный параметр #возможные значения - ANY, EQ, NE #тип - строка mode = "ANY" #ключ правила #обязательный параметр #тип - строка key = "testkey" #ключ правила #опциональный параметр #тип - строка value = "testvalue" }] ``` Для большинства конфигурационных файлов этих изменений будет достаточно. В терминале выполните команду ```bash terraform init ``` В случае успешной установки, Terraform инициализирует провайдер и будет готов к дальнейшей работе.
Для ресурсов, которые описаны ниже необходимо сделать несколько дополнительных изменений. #### Аккаунты account 1. data source `dynamix_account_deleted_list` - Data source `dynamix_account_deleted_list` теперь имеет название `dynamix_account_list_deleted` и должен быть переименован. Блок `output` так же должен быть изменен. ##### Было ```go data "dynamix_account_deleted_list" "adl" { #фильтр по id аккаунта #опциональный параметр #тип - целое число #by_id = 100 #фильтр по имени аккаунта #опциональный параметр #тип - строка #name = "test" #фильтр по acl #опциональный параметр #тип - строка #acl = "acl" #сортировка по одному из поддерживаемых полей #опциональный параметр #тип - строка #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" #номер страницы для отображения #опциональный параметр #тип - целое число #если не задан - выводятся все доступные данные #page = 2 #размер страницы #опциональный параметр #тип - целое число #если не задан - выводятся все доступные данные #size = 3 } output "test" { value = data.dynamix_account_deleted_list.adl } ``` ##### Стало ```go data "dynamix_account_list_deleted" "adl" { #фильтр по id аккаунта #опциональный параметр #тип - целое число #by_id = 100 #фильтр по имени аккаунта #опциональный параметр #тип - строка #name = "test" #фильтр по acl #опциональный параметр #тип - строка #acl = "acl" #сортировка по одному из поддерживаемых полей #опциональный параметр #тип - строка #формат - "+поле" по возрастанию / "-поле" по убыванию #sort_by = "+name" #номер страницы для отображения #опциональный параметр #тип - целое число #если не задан - выводятся все доступные данные #page = 2 #размер страницы #опциональный параметр #тип - целое число #если не задан - выводятся все доступные данные #size = 3 } output "test" { value = data.dynamix_account_list_deleted.adl } ``` #### Внутренние сети vins 1. resource `dynamix_vins` - В блоке `nat_rule` поля `int_ip` и `ext_port_start` стали обязательными. Ранее были опциональными. Необходимо их заполнить. ```go nat_rule = { #ip внутренний #обязательный параметр #тип - строка int_ip = "192.168.0.28" #начало диапазона внешних портов #обязательный параметр #тип - целое число ext_port_start = 8001 } ``` #### Виртуальные машины KVM KVMVM 1. resource `dynamix_kvmvm` - Необходимо полностью удалить удалить блок `disks` из конфигурационного файла. Теперь диски нужно создавать через функцию `dynamix_disk`. В `dynamix_kvmvm` их можно указать в поле `extra_disks` #### Базовые сервисы bservice 1. resource `dynamix_bservice` - Удалено поле `service_id` для импорта resource dynamix_bservice , теперь необходимо передавать service_id, при импорте например `terraform import dynamix_bservice.bs 5` - Удалено поле `compgroup_id` для импорта resource dynamix_bservice , теперь необходимо использовать связку bservice_id#compgroup_id, например `terraform import dynamix_bservice_group.bsg 5#10`