Быстрый старт Terraform
Все ресурсы, созданные с помощью Terraform, оплачиваются согласно модели оплаты услуги. Тарификация за ресурс начинается после создания ресурса.
Стоимость ресурсов, созданных с помощью Terraform, не отличается от стоимости ресурсов, созданных с помощью панели управления.
1. Установить Terraform
-
Скачайте дистрибутив Terraform для вашей операционной системы с сайта HashiCorp или с зеркала. Рекомендуем скачать версию Terraform 1.9.
-
Если вы загрузили дистрибутив Terraform из зеркала, экспортируйте в переменную окружения
PATHпуть к нему:export PATH=$PATH:<path>Укажите
<path>— путь к бинарному файлу Terraform. -
Установите Terraform. Для ОС Linux и macOS используйте инструкцию Install Terraform документации HashiCorp.
2. Создать сервисного пользователя
Для работы с примерами нужно создать сервисного пользователя с двумя ролями:
memberв области доступа Аккаунт — роль нужна для инициализации провайдера Selectel и создания ресурсов;- и
iam.admin— для создания дополнительных пользователей и разграничения доступа в проектах.
-
В панели управления в верхнем меню нажмите Аккаунт.
-
Перейдите в раздел Сервисные пользователи.
-
Нажмите Добавить сервисного пользователя.
-
В блоке Данные сервисного пользователя:
4.1. Введите имя пользователя. Оно будет использоваться при авторизации.
4.2. Введите пароль для пользователя или сгенерируйте его. После создания пользователя посмотреть пароль нельзя — можно только изменить его. Пароль должен быть не короче 20 символов и включать минимум:
- одну заглавную и одну строчную латинскую букву (
A-Z,a-z); - одну цифру (
0-9); - один специальный символ из списка ASCII Printable 7-Bit Special Characters:
!"#$%&'()*+,-./:;<=>?@[]^_{|}~.
- одну заглавную и одну строчную латинскую букву (
-
В блоке Доступ к аккаунту:
5.1. Настройте разрешение, для этого выберите:
- область доступа — Аккаунт;
- роль —
iam.admin.
5.2. Опционально: чтобы назначить пользователю еще одно разрешение, нажмите Добавить разрешение и повторите шаг 5.1.
5.3. Опционально: выберите группу для пользователя.
-
Нажмите Добавить пользователя. Он будет добавлен в список на странице Сервисные пользователи. Учетная запись будет активна сразу.
3. Настроить провайдеры
Если используемая версия Terraform-провайдера Selectel ниже 6.0.0, вы можете обновить ее. Подробнее в инструкции Upgrading Terraform Selectel Provider to version 6.0.0 на Terraform Registry.
Провайдеры Selectel и Openstack
Провайдер Selectel
-
Убедитесь, что в панели управления вы создали сервисного пользователя с ролями
memberв области доступа Аккаунт иiam.admin. -
Создайте директорию для хранения конфигурационных файлов и отдельный файл с расширением
.tfдля настройки провайдеров. -
В файл для настройки провайдеров добавьте провайдеры Selectel и OpenStack:
terraform {required_providers {selectel = {source = "selectel/selectel"version = "~> 7.1.0"}openstack = {source = "terraform-provider-openstack/openstack"version = "2.1.0"}}}Здесь
version— версии провайдеров. Актуальную версию можно посмотреть в документации Selectel (в Terraform Registry и GitHub) и OpenStack (в Terraform Registry и GitHub).Подробнее о продуктах, услугах и сервисах, которыми можно управлять с помощью провайдеров, в инструкции Провайдеры Selectel и OpenStack.
-
Инициализируйте провайдер Selectel:
provider "selectel" {domain_name = "123456"username = "user"password = "password"auth_region = "ru-9"auth_url = "https://cloud.api.selcloud.ru/identity/v3/"}Здесь:
domain_name— номер аккаунта Selectel. Можно посмотреть в панели управления в правом верхнем углу;username— имя сервисного пользователя с ролямиmemberв области доступа Аккаунт иiam.admin. Можно посмотреть в панели управления: в верхнем меню нажмите Аккаунт → раздел Сервисные пользователи (раздел доступен только Владельцу аккаунта и пользователю с рольюiam.admin);password— пароль сервисного пользователя. Можно посмотреть при создании пользователя или изменить на новый;auth_region— пул для авторизации, напримерru-9. Создавать ресурсы можно в других пулах. Список доступных пулов можно посмотреть в инструкции Матрицы доступности.
-
Создайте проект:
resource "selectel_vpc_project_v2" "project_1" {name = "project"}Посмотрите подробное описание ресурса selectel_vpc_project_v2.
-
Создайте сервисного пользователя для доступа к проекту и назначьте ему роль
memberв области доступа Проект: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— пароль пользователя. Пароль должен быть не короче 20 символов и включать минимум:- одну заглавную и одну строчную латинскую букву (
A-Z,a-z); - одну цифру (
0-9); - один специальный символ из списка ASCII Printable 7-Bit Special Characters:
!"#$%&'()*+,-./:;<=>?@[]^_{|}~;
- одну заглавную и одну строчную латинскую букву (
-
project_id— ID проекта. Можно посмотреть в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → откройте меню проектов → в строке нужного проекта нажмите .
Посмотрите подробное описание ресурса selectel_iam_serviceuser_v1.
-
-
Инициализируйте провайдер OpenStack:
provider "openstack" {auth_url = "https://cloud.api.selcloud.ru/identity/v3"domain_name = "123456"tenant_id = selectel_vpc_project_v2.project_1.iduser_name = selectel_iam_serviceuser_v1.serviceuser_1.namepassword = selectel_iam_serviceuser_v1.serviceuser_1.passwordregion = "ru-9"}Здесь:
domain_name— номер аккаунта Selectel. Можно посмотреть в панели управления в правом верхнем углу;region— пул, напримерru-9. Все ресурсы будут создаваться в этом пуле. Список доступных пулов можно посмотреть в инструкции Матрицы доступности.
-
Если одновременно с настройкой провайдеров вы создаете ресурсы, то для ресурсов 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]} -
Опционально: если вы хотите использовать зеркало, создайте отдельный конфигурационный файл 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.
-
Откройте CLI.
-
Инициализируйте конфигурацию Terraform в директории:
terraform init -
Проверьте, что конфигурационные файлы составлены без ошибок:
terraform validate -
Отформатируйте конфигурационные файлы:
terraform fmt -
Проверьте, какие ресурсы будут созданы:
terraform plan -
Примените изменения и создайте ресурсы:
terraform apply -
Подтвердите создание — введите yes и нажмите Enter. Созданные ресурсы отобразятся в панели управления.
-
Если для создания ресурсов оказалось недостаточно квот, увеличьте квоты.