Перейти к основному содержимому
Быстрый старт Terraform
Последнее изменение:

Быстрый старт Terraform

  1. Установите Terraform.
  2. Создайте сервисного пользователя.
  3. Настройте провайдеры.

Все ресурсы, созданные с помощью Terraform, оплачиваются согласно модели оплаты услуги. Тарификация за ресурс начинается после создания ресурса.

Стоимость ресурсов, созданных с помощью Terraform, не отличается от стоимости ресурсов, созданных с помощью панели управления.

1. Установить Terraform

  1. Скачайте дистрибутив Terraform для вашей операционной системы с сайта HashiCorp или с зеркала. Рекомендуем скачать версию Terraform 1.9.

  2. Если вы загрузили дистрибутив Terraform из зеркала, экспортируйте в переменную окружения PATH путь к нему:

    export PATH=$PATH:<path>

    Укажите <path> — путь к бинарному файлу Terraform.

  3. Установите Terraform. Для ОС Linux и macOS используйте инструкцию Install Terraform документации HashiCorp.

2. Создать сервисного пользователя

Для работы с примерами нужно создать сервисного пользователя с двумя ролями:

  • Администратор аккаунта — роль нужна для инициализации провайдера Selectel и создания ресурсов;
  • и Администратор пользователей — для создания дополнительных пользователей и разграничения доступа в проектах.

  1. В панели управления перейдите в раздел Управление доступомУправление пользователями.
  2. Нажмите Добавить пользователя.
  3. Выберите тип пользователя Сервисный пользователь.
  4. Введите имя пользователя. Оно будет использоваться при авторизации.
  5. Введите пароль для пользователя или сгенерируйте его. После создания пользователя посмотреть пароль нельзя — можно только сгенерировать новый. Пароль должен быть не короче восьми символов и содержать латинские буквы разных регистров и цифры.
  6. Выберите роль пользователя Администратор аккаунта.
  7. Нажмите Добавить роль и выберите роль Администратор пользователей.
  8. Нажмите Добавить пользователя. Он будет добавлен в список на вкладке Сервисные пользователи. Учетная запись будет активна сразу.

3. Настроить провайдеры

Если используемая версия Terraform-провайдера Selectel ниже 6.0.0, вы можете обновить ее. Подробнее в инструкции Upgrading Terraform Selectel Provider to version 6.0.0 на Terraform Registry.

  1. Убедитесь, что в панели управления вы создали сервисного пользователя с ролями Администратор аккаунта и Администратор пользователей.

  2. Создайте директорию для хранения конфигурационных файлов и отдельный файл с расширением .tf для настройки провайдеров.

  3. В файл для настройки провайдеров добавьте провайдеры Selectel и OpenStack:

    terraform {
    required_providers {
    selectel = {
    source = "selectel/selectel"
    version = "6.0.0"
    }
    openstack = {
    source = "terraform-provider-openstack/openstack"
    version = "2.1.0"
    }
    }
    }

    Здесь version — версии провайдеров. Актуальную версию можно посмотреть в документации Selectel (в Terraform Registry и GitHub) и OpenStack (в Terraform Registry и GitHub).

    Подробнее о продуктах, услугах и сервисах, которыми можно управлять с помощью провайдеров, в инструкции Провайдеры Selectel и OpenStack.

  4. Инициализируйте провайдер Selectel:

    provider "selectel" {
    domain_name = "123456"
    username = "user"
    password = "password"
    }

    Здесь:

    • domain_name — номер аккаунта Selectel. Можно посмотреть в панели управления в правом верхнем углу;
    • username — имя сервисного пользователя с ролями Администратор аккаунта и Администратор пользователей. Можно посмотреть в панели управления: раздел Управление доступомУправление пользователями → вкладка Сервисные пользователи (раздел доступен только Владельцу аккаунта и Администратору пользователей);
    • password — пароль сервисного пользователя. Можно посмотреть при создании пользователя или изменить на новый.
  5. Создайте проект:

    resource "selectel_vpc_project_v2" "project_1" {
    name = "project"
    }

    Посмотрите подробное описание ресурса selectel_vpc_project_v2.

  6. Создайте сервисного пользователя для доступа к проекту и назначьте ему роль Администратор проекта:

    resource "selectel_iam_serviceuser_v1" "serviceuser_1" {
    name = "username"
    password = "password"
    role {
    role_name = "member"
    scope = "project"
    project_id = selectel_vpc_project_v2.project_1.id
    }
    }

    Здесь:

    • username — имя пользователя;
    • password — пароль пользователя. Пароль должен быть не короче восьми символов и содержать латинские буквы разных регистров и цифры;
    • project_id — ID проекта. Можно посмотреть в панели управления: раздел Облачная платформа → откройте меню проектов (название текущего проекта) → в строке нужного проекта нажмите .

    Посмотрите подробное описание ресурса selectel_iam_serviceuser_v1.

  7. Инициализируйте провайдер OpenStack:

    provider "openstack" {
    auth_url = "https://cloud.api.selcloud.ru/identity/v3"
    domain_name = "123456"
    tenant_id = selectel_vpc_project_v2.project_1.id
    user_name = selectel_iam_serviceuser_v1.serviceuser_1.name
    password = selectel_iam_serviceuser_v1.serviceuser_1.password
    region = "ru-9"
    }

    Здесь:

    • domain_name — номер аккаунта Selectel. Можно посмотреть в панели управления в правом верхнем углу;
    • region — пул, например ru-9. Все ресурсы будут создаваться в этом пуле. Список доступных пулов можно посмотреть в инструкции Матрицы доступности.
  8. Если одновременно с настройкой провайдеров вы создаете ресурсы, то для ресурсов OpenStack добавьте аргумент depends_on. Например, для ресурса openstack_networking_network_v2:

    resource "openstack_networking_network_v2" "network_1" {
    name = "private-network"
    admin_state_up = "true"

    depends_on = [
    selectel_vpc_project_v2.project_1,
    selectel_iam_serviceuser_v1.serviceuser_1
    ]
    }
  9. Опционально: если вы хотите использовать зеркало, создайте отдельный конфигурационный файл Terraform CLI и добавьте в него блок:

    provider_installation {
    network_mirror {
    url = "https://tf-proxy.selectel.ru/mirror/v1/"
    include = ["registry.terraform.io/*/*"]
    }
    direct {
    exclude = ["registry.terraform.io/*/*"]
    }
    }

    Подробнее о настройках зеркал в инструкции CLI Configuration File документации HashiCorp.

  10. Откройте CLI.

  11. Инициализируйте конфигурацию Terraform в директории:

    terraform init
  12. Проверьте, что конфигурационные файлы составлены без ошибок:

    terraform validate
  13. Отформатируйте конфигурационные файлы:

    terraform fmt
  14. Проверьте, какие ресурсы будут созданы:

    terraform plan
  15. Примените изменения и создайте ресурсы:

    terraform apply
  16. Подтвердите создание — введите yes и нажмите Enter. Созданные ресурсы отобразятся в панели управления.

  17. Если для создания ресурсов оказалось недостаточно квот, увеличьте квоты.