Чтобы взаимодействовать с облачными ресурсами и управлять инфраструктурой, Terraform использует плагины — провайдеры. Провайдеры разрабатываются независимо от Terraform и имеют собственный релизный цикл и номера версий. Каждый провайдер добавляет свой набор ресурсов и источников данных, которыми Terraform может управлять.
Для максимальной совместимости с текущей версией платформы рекомендуется использовать Terraform-провайдер для Cloud.ru Advanced.
С помощью инструкции в этом разделе вы настроите Terraform-провайдер для работы с облаком Cloud.ru Advanced.
Перед началом работы
Зарегистрируйтесь в личном кабинете Cloud.ru, если у вас нет аккаунта.
Создайте IAM-пользователя с типом доступа «Programmatic access» или добавьте программный доступ (en) существующему IAM-пользователю, которого будете использовать для работы с Terraform.
Войдите в консоль управления Advanced как IAM-пользователь, которого будете использовать, и сгенерируйте ключи авторизации Access Key (AK) и Secret Key (SK).
Скачайте Terraform с официального сайта HashiCorp или из зеркала Cloud.ru для Terraform и установите по инструкции.
Шаг 1. Укажите Terraform-провайдер
Создайте каталог, где будут находиться конфигурационные файлы Terraform для работы с платформой Cloud.ru Advanced, и перейдите в него. Например:
mkdir -p terraform/terraform_cloudru_advanced && cd terraform/terraform_cloudru_advancedДля описания конфигурации Terraform-провайдера в каталоге создайте файл с расширением .tf и откройте его в любом текстовом редакторе. Например:
touch terraform.tfnano terraform.tfПримечаниеНаименование файлов с расширением .tf в каталоге может быть произвольным, однако рекомендуем придерживаться общепринятых наименований файлов Terraform.
В файл terraform.tf вставьте блок кода с указанием нужного провайдера (required_providers), адреса авторизации на платформе (auth_url) и переменных для ключей авторизации (var.access_key и var.secret_key):
terraform {required_providers {sbercloud = {source = "sbercloud-terraform/sbercloud" # Specifies Cloud.ru Advanced provider}}}# Cloud.ru Advanced provider configurationsprovider "sbercloud" {auth_url = "https://iam.ru-moscow-1.hc.sbercloud.ru/v3" # Authorization addressregion = "ru-moscow-1" # The region to deploy cloud infrastructure to# Authorization keysaccess_key = var.access_keysecret_key = var.secret_key}Сохраните изменения в файле terraform.tf.
Шаг 2. Укажите ключи авторизации
В том же каталоге terraform/terraform_cloudru_advanced создайте файл с расширением .tf для хранения переменных, например variables.tf.
Откройте файл variables.tf для редактирования и вставьте в него шаблон для переменных:
variable "access_key" {default = "access-key-id"}variable "secret_key" {default = "secret-access-key"}В шаблоне замените access-key-id и secret-access-key на ваши значения Access Key (AK) и Secret Key (SK) из файла credentials.csv, который вы сохранили после генерации ключей.
Сохраните изменения в файле variables.tf.
Шаг 3. Переопределите способ установки провайдера
Когда при инициализации каталога Terraform устанавливает провайдер, по умолчанию он ищет его в общем реестре провайдеров. Terraform-провайдер для Cloud.ru Advanced доступен через зеркало, поэтому необходимо переопределить способ установки провайдера с помощью конфигурационного файла CLI.
Создайте конфигурационный файл CLI. Название и расположение файла зависит от вашей операционной системы:
Создайте файл .terraformrc и поместите его в домашний каталог вашего пользователя. Например:
cdtouch .terraformrcЧтобы при инициализации Terraform обратился к зеркалу по адресу https://terraform.cloud.ru/ за копией Terraform-провайдера для Cloud.ru Advanced, в конфигурационный файл CLI добавьте блок provider_installation с параметром network_mirror:
provider_installation {network_mirror {url = "https://terraform.cloud.ru/"include = ["registry.terraform.io/*/*"]}direct {exclude = ["registry.terraform.io/*/*"]}}Сохраните изменения в конфигурационном файле CLI.
Шаг 4. Инициализируйте каталог с настройками Terraform
Чтобы Terraform сформировал рабочую конфигурацию, описанную в .tf-файлах, необходимо инициализировать каталог, в котором они находятся. Для этого перейдите в каталог с .tf-файлами и выполните команду:
terraform init
Во время инициализации Terraform скачает Terraform-провайдер для Cloud.ru Advanced из зеркала https://terraform.cloud.ru/ и установит его на ваш компьютер. На этом настройка Terraform-провайдера завершена.