Облачная платформаEvolution

Миграция провайдера с версии 1.x.x на версию 2.x.x


Чтобы использовать актуальные возможности провайдера, мигрируйте Terraform провайдер Cloud.ru с версии 1.x.x на версию 2.x.x. Старый провайдер 1.x.x версии содержит устаревшие API и ограничения, которые препятствуют развитию конфигурации.

Миграция проводится в три основных этапа:

  1. Изменение блоков required_providers и provider в main.tf (создание каталога актуальной версии).

  2. Импорт ресурсов актуальной (v2.1.3 и выше) версии провайдера.

  3. Проверка отсутствия изменений.

Перед началом работы

Миграция осуществляется при следующих условиях:

  • Скачан GO-скрипт, он понадобится для выполнения некоторых этапов миграции.

  • Провайдер установлен вручную.

  • В файле .terraformrc в блоке dev_overrides прописаны исходный и целевой файлы провайдера.

    Например:

    provider_installation {
    dev_overrides {
    "local.v1.cloud.ru/cloudru/cloud" = "/Users/testuser/.terraform.d/plugins/cloud.ru/cloudru/cloud/1.7.1/darwin_arm64"
    "local.v2.cloud.ru/cloudru/cloud" = "/Users/testuser/.terraform.d/plugins/cloud.ru/cloudru/cloud/v2.1.3/darwin_arm64"
    }
    direct {}
    }

Шаг 1. Измените блоки required_providers и provider в main.tf

  1. В блоке required_providers измените "source" на актуальный.

  2. Измените содержимое блока provider "cloudru" согласно примеру из актуальной версии в новом каталоге проекта. Иными словами — создайте там новый актуальный main.tf.

Пример из старой версии провайдера:

provider "cloudru" {
# NOTE: Это опциональный параметр
project_id = var.project_id
# NOTE: Это опциональный параметр
# customer_id = ""
# NOTE: Это обязательный параметр
auth_key_id = var.auth_key_id
# NOTE: Это обязательный параметр
auth_secret = var.auth_secret
# NOTE: Это обязательный параметр, требуется для работы с IAM
iam_endpoint = var.iam_endpoint
# NOTE: Это опциональный параметр, требуется для работы с K8S
k8s_endpoint = var.k8s_endpoint
# NOTE: Это опциональный параметр, требуется для работы с Evolution
evolution_endpoint = var.evolution_endpoint
# NOTE: Это опциональный параметр, требуется для работы с CloudPlatform
cloudplatform_endpoint = var.cloudplatform_endpoint
# NOTE: Это опциональный параметр, требуется для работы с DBaaS
dbaas_endpoint = var.dbaas_endpoint
}

Пример из новой версии провайдера:

provider "cloudru" {
auth_key_id = var.auth_key_id
auth_secret = var.auth_secret
region = "ru-central-1"
project_id = var.project_id
endpoints = {
iam_endpoint = "iam.api.cloud.ru:443"
compute_endpoint = "compute.api.cloud.ru:443"
baremetal_endpoint = "baremetal.api.cloud.ru:443"
mk8s_endpoint = "mk8s.api.cloud.ru:443"
vpc_endpoint = "vpc.api.cloud.ru:443"
magic_router_endpoint = "magic-router.api.cloud.ru:443"
dns_endpoint = "dns.api.cloud.ru:443"
nlb_endpoint = "nlb.api.cloud.ru:443"
kafka_endpoint = "kafka.api.cloud.ru:443"
redis_endpoint = "redis.api.cloud.ru:443"
postgresql_endpoint = "postgresql.api.cloud.ru:443"
clickhouse_endpoint = "clickhouse.api.cloud.ru:443"
spark_endpoint = "dataplatform.api.cloud.ru:443"
trino_endpoint = "dataplatform.api.cloud.ru:443"
metastore_endpoint = "dataplatform.api.cloud.ru:443"
bi_endpoint = "dataplatform.api.cloud.ru:443"
dataplatform_endpoint = "dataplatform.api.cloud.ru:443"
artifact_registry_endpoint = "ar.api.cloud.ru:443"
object_storage_endpoint = "https://s3.cloud.ru"
cloudplatform_endpoint = "organization.api.cloud.ru:443"
}
}
Внимание

Обратите внимание на появление блока «endpoints» и его содержимое в новой версии провайдера.

Шаг 2. Импортируйте ресурсы актуальной версии провайдера

  1. В каталоге вашего продукта Terraform запустите бинарный файл go-скрипта "migration":

    ./migration
  2. Перенесите сгенерированные файлы (import-resources.sh и import.tf), а также файлы с вашими переменными в новый каталог с main.tf актуальной версии.

  3. Запустите скрипт:

    bash ./import-resources.sh

Шаг 3. Проверьте отсутствие изменений

  1. В каталоге вашего проекта выполните следующую команду:

    terraform plan
  2. Убедитесь в наличии лога No changes. Your infrastructure matches the configuration..