Локальное тестирование Terraform-манифестаBeta
Чтобы локально протестировать манифест Terraform, описывающий облачную инфраструктуру для вашего image-based приложения и порядок ее развертывания:
-
Подготовьте сеть и подсеть: используйте подсети существующих сетей или создайте новую сеть и используйте ее подсеть.
-
Установите Terraform локально:
- Скачайте Terraform с официального зеркала VK Cloud.
- Распакуйте архив и в переменной среды
Pathукажите путь к распакованному файлу. - Выполните команду
terraform -help, чтобы убедиться в успешной установке Terraform.
-
Активируйте доступ по API.
-
Отредактируйте файл с конфигурацией CLI для Terraform: для Windows —
terraform.rc, для других ОС —.terraformrc.-
Чтобы Terraform одновременно работал с зеркалами и локальными провайдерами, добавьте следующую информацию:
provider_installation {filesystem_mirror {# Полный путь до директории pluginspath = "/home/user_name/.terraform.d/plugins"include = ["vk-cs.local/*/*", "ivk-cs.local/*/*"]}network_mirror {url = "https://terraform-mirror.mcs.mail.ru"include = ["registry.terraform.io/*/*"]}direct {exclude = ["registry.terraform.io/*/*", "vk-cs.local/*/*", "ivk-cs.local/*/*"]}} -
Если не требуется, чтобы Terraform одновременно работал с зеркалами и локальными провайдерами, очистите содержимое файла.
-
Если на локальном компьютере такого файла нет, пропустите этот шаг.
Подробнее — в официальной документации Terraform.
-
-
Скачайте плагин провайдера VK CS c GitHub.
-
Отправьте письмо на marketplace@cloud.vk.com, чтобы получить плагин провайдера iVK CS. В письме укажите ОС компьютера, на котором вы будете локально тестировать манифест, и архитектуру ОС. Пример: Linux на архитектуре amd64.
-
Если файла с конфигурацией CLI для Terraform нет на локальном компьютере или он был очищен, скачайте плагин провайдера Null c официального сайта Terraform.
-
В директории
terraform.dсоздайте директориюplugins. Директорияterraform.dсоздается на компьютере автоматически после установки Terraform, ее путь зависит от ОС. Подробнее — в официальной документации Terraform. -
В директории
pluginsсоздайте следующую структуру директорий:├── ivk-cs.local│ └── ivk-cs│ └── ivkcs│ └── <ВЕРСИЯ_ПЛАГИНА>│ └── <ОС>├── registry.terraform.io│ └── hashicorp│ └── null│ └── <ВЕРСИЯ_ПЛАГИНА>│ └── <ОС>└── vk-cs.local└── vk-cs└── vkcs└── <ВЕРСИЯ_ПЛАГИНА>└── <ОС>Здесь:
-
<ВЕРСИЯ_ПЛАГИНА>— версия плагина провайдера. Значение определяется из имени файла плагина. Например, для плагинаterraform-provider-vkcs_0.4.2версия равна0.4.2, для плагинаterraform-provider-null_v3.2.1_x5—3.2.1. -
<ОС>— ОС компьютера. Чтобы определить значение, выполните командуterraform --version. В выводе команды отображается текущая версия Terraform и название ОС с архитектурой.Пример ответа команды:
Terraform v1.5.4on linux_amd64В этом примере значение
<ОС>равноlinux_amd64.
-
-
Поместите скачанные плагины провайдеров в соответствующие директории
<ОС>.Пример структуры директории
/home/user_name/.terraform.d/pluginsдля ОС Linux на архитектуре amd64:/home/user_name/.terraform.d│└── plugins├── ivk-cs.local│ └── ivk-cs│ └── ivkcs│ └── 0.0.4│ └── linux_amd64│ └── terraform-provider-ivkcs_0.0.4├── registry.terraform.io│ └── hashicorp│ └── null│ └── 3.2.1│ └── linux_amd64│ └── terraform-provider-null_v3.2.1└── vk-cs.local└── vk-cs└── vkcs└── 0.4.2└── linux_amd64└── terraform-provider-vkcs_0.4.2 -
Создайте рабочую директорию для тестирования манифеста.
-
В рабочей директории создайте файл
auth.tf. -
В файле
auth.tfопишите используемые провайдеры.-
Укажите провайдеры VK CS и iVK CS. Если файла с конфигурацией CLI для Terraform нет на локальном компьютере или он был очищен, дополнительно укажите провайдер Null.
terraform {required_providers {vkcs = {# Путь к локальному плагину провайдера. Указывается часть пути после terraform.d/pluginssource = "vk-cs.local/vk-cs/vkcs"# Версия провайдераversion = "0.2.2"}ivkcs = {source = "ivk-cs.local/ivk-cs/ivkcs"version = "0.1.15"}null = {source = "registry.terraform.io/hashicorp/null"version = "3.2.1"}}} -
Для провайдеров VK CS и iVK CS укажите информацию об аккаунте и проекте VK Cloud, от имени которых вы будете тестировать манифест:
provider "vkcs" {# User Domain IDuser_domain_name = "users"username = "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>"password = "<ПАРОЛЬ>"project_id = "<ИДЕНТИФИКАТОР_ПРОЕКТА>"# Region Nameregion = "RegionOne"}provider "ivkcs" {# URL компонента Keystone платформы VK Cloudauth_url = "https://cloud.vk.com/infra/identity/v3/"user_domain_name = "users"username = "<ИМЯ_ПОЛЬЗОВАТЕЛЯ>"password = "<ПАРОЛЬ>"project_id = "<ИДЕНТИФИКАТОР_ПРОЕКТА>"region = "RegionOne"# URL сервиса Infra APIinfra_url = "https://cloud.vk.com/marketplace/api/infra-api/api/v1/"}Здесь:
<ИДЕНТИФИКАТОР_ПРОЕКТА>— идентификатор проекта (Project ID), который вы указали в письме на этапе подготовки.<ИМЯ_ПОЛЬЗОВАТЕЛЯ>— имя пользователя этого проекта VK Cloud.<ПАРОЛЬ>— пароль пользователя.
-
-
Скопируйте файл
plans/<ИМЯ_ПЛАНА>/deployment/deploy.tfв рабочую директорию. -
Если для локального тестирования требуется создать дополнительные сущности, которые не описаны в манифесте
deploy.tf(например, ВМ с внешним IP):- В рабочей директории создайте файл
extended.tf. - В файле
extended.tfопишите дополнительные сущности с использованием ресурсов и источников данных провайдеров.
- В рабочей директории создайте файл
-
Чтобы инициализировать провайдеры, в рабочей директории выполните команду
terraform init. -
Чтобы запустить создание ресурсов, описанных в файлах
deploy.tfиextended.tf, в рабочей директории выполните командуterraform apply. -
Чтобы подтвердить создание ресурсов, введите
yes. -
После завершения выполнения манифестов зайдите в личный кабинет VK Cloud и убедитесь, что ресурсы созданы.