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.
wiki-terraform-provider-dyn.../1.3.0/05.07-Инструкция-по-миграци...

11 KiB

Инструкция по миграции с 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 не забудьте изменить права доступа к файлу
chmod u+x install.sh
  1. Дождаться сообщения об успешной установке. Установщик выведет актуальный блок конфигурации провайдера, скопируйте его
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"
    }
  }
}
  1. Теперь вам необходимо отредактировать ваши конфигурационные .tf файлы terraform-provider-decort для работы с terraform-provider-dynamix.

Общие изменения

Измените блок подключения провайдера. Замените decort на dynamix, source = "basis/decort/decort" на source = "basistech.ru/tf/dynamix", укажите нужную версию.

Было
terraform {
  required_providers {
    decort = {
      source = "basis/decort/decort"
      version = "4.6.1"
    }
  }
}
Стало
terraform {
  required_providers {
    dynamix = {
      source  = "basistech.ru/tf/dynamix"
      version = "1.3.0"
    }
  }
}

Измените блок настройки провайдера. Замените название провайдера с decort на dynamix.

Было
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
}
Стало
provider "dynamix" {
  authenticator = "decs3o"
  #controller_url = <DYNAMIX_CONTROLLER_URL>
  controller_url = "https://ds1.digitalenergy.online"
  #oauth2_url = <DYNAMIX_SSO_URL>
  oauth2_url           = "https://sso.digitalenergy.online"
  allow_unverified_ssl = true
}

Если параметры провайдера указаны в переменных окружения, замените префикс DECORT на DYNAMIX

Было

DECORT_CONTROLLER_URL

Стало

DYNAMIX_CONTROLLER_URL

Измените блок описания самого ресурса/датасурса. Замените decort на dynamix.

Было
data "decort_account" "a" {
  #id аккаунта
  #обязательный параметр
  #тип - целое число
  account_id = 11111
}
Стало
data "dynamix_account" "a" {
  #id аккаунта
  #обязательный параметр
  #тип - целое число
  account_id = 11111
}

Не забудьте изменить название ресурса/датасурса в блоке вывода. Замените decort на dynamix.

Было
output "test" {
  value = data.decort_account.a
}
Стало
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 так же должен быть изменен.
      Было
      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
      }
      
      Стало
      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 стали обязательными. Ранее были опциональными. Необходимо их заполнить.
    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