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-Инструкция-по-миграци...

306 lines
11 KiB

4 weeks ago
## Инструкция по миграции с 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.<br/>
*Для запуска `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 = <DECORT_CONTROLLER_URL>
controller_url = "https://ds1.digitalenergy.online"
#oauth2_url = <DECORT_SSO_URL>
oauth2_url = "https://sso.digitalenergy.online"
allow_unverified_ssl = true
}
```
##### Стало
```go
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`.
##### Было
```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 инициализирует провайдер и будет готов к дальнейшей работе.<br/>
Для ресурсов, которые описаны ниже необходимо сделать несколько дополнительных изменений.
#### Аккаунты 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`