VK Cloud logo
Обновлена20 декабря 2023 г. в 05:58

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

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

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

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

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

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

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

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

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

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

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

1terraform {
2    required_providers {
3        vkcs = {
4            source = "vk-cs/vkcs"
5        }
6    }
7}
8
9provider "vkcs" {
10    # Your user account.
11    username = "<user_email>"
12
13    # The password of the account
14    password = "<user_password>"
15
16    # The tenant token can be taken from the project Settings tab - > API keys.
17    # Project ID will be our token.
18    project_id = "<project_ID>"
19
20    # Region name
21    region = "<Region>"
22
23    auth_url = "<auth_url>"
24}

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

  • 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. Мета-аргумент указывает ресурс, от которого зависит создаваемый ресурс:

    1depends_on = [
    2    vkcs_kubernetes_cluster.k8s-cluster,
    3]

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

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

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

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

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

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

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

1provider_installation {
2    network_mirror {
3        url = "https://terraform-mirror.mcs.mail.ru"
4        include = ["registry.terraform.io/*/*"]
5    }
6    direct {
7        exclude = ["registry.terraform.io/*/*"]
8    }
9}