VK Cloud logo
Обновлена 15 апреля 2024 г. в 08:50

Файлы конфигурации

При создании ресурсов Terraform работает с файлами конфигурации. Они имеют расширение .tf.

Рекомендуется создавать отдельную рабочую директорию для каждого проекта VK Cloud. В рабочей директории размещаются следующие файлы:

  • файл конфигурации провайдера (специфичный для проекта);
  • файлы конфигурации ресурсов, которые вы планируете создать.

Для корректной работы Terraform требуется дополнительный файл — файл конфигурации зеркала Terraform.

Файл конфигурации провайдера Terraform

Файл содержит информацию о Terraform-провайдерах и данные для аутентификации пользователя в проекте.

Имя файла может быть любым. Рекомендуется использовать имя provider.tf, чтобы подчеркнуть, что в файле содержатся основные настройки подключения к VK Cloud.

Файл должен быть размещен во всех рабочих директориях Terraform.

Файл доступен для скачивания в личном кабинете, на странице Настройки проекта на вкладке Terraform. Скачанный файл имеет имя vkcs_provider.tf и содержит данные одного провайдера (vkcs). После скачивания отредактируйте файл — укажите в параметре password пароль от вашей учетной записи.

Пример содержимого файла:

terraform {    required_providers {        vkcs = {            source = "vk-cs/vkcs"        }    }}provider "vkcs" {    # Your user account.    username = "<user_email>"    # The password of the account    password = "<user_password>"    # The tenant token can be taken from the project Settings tab - > API keys.    # Project ID will be our token.    project_id = "<project_ID>"    # Region name    region = "<Region>"    auth_url = "<auth_url>"}

Файл состоит из секций:

  • terraform.required_providers {} — список используемых провайдеров. Для работы с VK Cloud должен быть указан провайдер vkcs, его источник и версии. Если вы собираетесь использовать дополнительные провайдеры, добавьте их в эту секцию.

  • provider "vkcs" {} — настройки аутентификации в проекте:

    • password: укажите пароль от вашей учетной записи;
    • username, project_id, region: значения, указанные в скачанном через личный кабинет файле, валидны для работы с текущим проектом. Эти значения также указаны на странице Настройки проекта на вкладке Terraform.

Значения некоторых параметров зависят от региона:

  • region:

    • для региона Москва: RegionOne;
    • для региона Казахстан: kz;
  • auth_url:

    • для региона Москва: https://infra.mail.ru:35357/v3/;
    • для региона Казахстан: https://kz.infra.mail.ru:35357/v3/.

Файлы конфигурации ресурсов

Файлы конфигурации ресурсов описывают ресурсы, которые создаются при помощи Terraform, их настройки и зависимости.

Файлы конфигурации могут иметь любые имена. В примерах в этой документации используются такие принципы именования:

  • variables.tf — переменные, которые используются в конфигурации. Вынесение часто изменяемых параметров в переменные позволяет легко менять конфигурацию инфраструктуры для нового проекта.
  • main.tf — содержит описание основного ресурса, который создается в том или ином сценарии. Например, при создании виртуальной машины в файле main.tf рекомендуется размещать конфигурацию виртуальной машины.

Иногда файлы могут именоваться по типам ресурсов, например:

  • network.tf — описание облачной сети.
  • kubernetes.tf — описание ресурсов Kubernetes.

Обычно в конфигурации ресурсов используются:

  • resource "resource_type" "resource_name" {} — создаваемый ресурс, например, сеть, подсеть, кластер Kubernetes или кластер базы данных.
  • data "data_type" "data_name" {} — позволяет использовать данные, указанные вне конфигурации Terraform, которые существуют в облаке или локально. Например, конфигурацию ВМ, шаблон/версию кластера и т.д.
  • variable "parameter" {}входные переменные. Используются для объявления переменных, которые применяются в конфигурации (variables.tf).
  • output "parameter" {}выходные переменные. Выводят данные в командную строку.

Для определения последовательности создания ресурсов и их зависимостей можно использовать мета-аргумент depends_on. Мета-аргумент указывает ресурс, от которого зависит создаваемый ресурс:

depends_on = [    vkcs_kubernetes_cluster.k8s-cluster,]

Сначала будет создан ресурс, указанный при помощи мета-аргумента, затем — ресурс, для которого указана зависимость.

Файл конфигурации зеркала Terraform

Этот файл необходим для запуска Terraform, он содержит адрес зеркала Terraform от VK Cloud. Файл должен иметь имя terraform.rc для Windows и .terraformrc для других ОС. Содержимое файла одинаково для всех проектов и регионов.

Файл доступен для скачивания на странице Настройки проекта личного кабинета на вкладке Terraform. После скачивания вносить в файл какие-либо изменения не нужно.

Файл должен быть размещен:

  • Для Windows — в директории Application Data текущего пользователя.
  • Для других ОС — в домашней директории пользователя.

Содержимое файла для проектов VK Cloud:

provider_installation {    network_mirror {        url = "https://terraform-mirror.mcs.mail.ru"        include = ["registry.terraform.io/*/*"]    }    direct {        exclude = ["registry.terraform.io/*/*"]    }}