Чтобы использовать актуальные возможности провайдера, мигрируйте Terraform провайдер Cloud.ru с версии 1.x.x на версию 2.x.x. Старый провайдер 1.x.x версии содержит устаревшие API и ограничения, которые препятствуют развитию конфигурации.
Миграция проводится в три основных этапа:
Изменение блоков required_providers и provider в main.tf (создание каталога актуальной версии).
Импорт ресурсов актуальной (v2.1.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 {}}
В блоке required_providers измените "source" на актуальный.
Измените содержимое блока 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: Это обязательный параметр, требуется для работы с IAMiam_endpoint = var.iam_endpoint# NOTE: Это опциональный параметр, требуется для работы с K8Sk8s_endpoint = var.k8s_endpoint# NOTE: Это опциональный параметр, требуется для работы с Evolutionevolution_endpoint = var.evolution_endpoint# NOTE: Это опциональный параметр, требуется для работы с CloudPlatformcloudplatform_endpoint = var.cloudplatform_endpoint# NOTE: Это опциональный параметр, требуется для работы с DBaaSdbaas_endpoint = var.dbaas_endpoint}
Пример из новой версии провайдера:
provider "cloudru" {auth_key_id = var.auth_key_idauth_secret = var.auth_secretregion = "ru-central-1"project_id = var.project_idendpoints = {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» и его содержимое в новой версии провайдера.
В каталоге вашего продукта Terraform запустите бинарный файл go-скрипта "migration":
./migration
Перенесите сгенерированные файлы (import-resources.sh и import.tf), а также файлы с вашими переменными в новый каталог с main.tf актуальной версии.
Запустите скрипт:
bash ./import-resources.sh
В каталоге вашего проекта выполните следующую команду:
terraform plan
Убедитесь в наличии лога No changes. Your infrastructure matches the configuration..