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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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