Быстрый старт Terraform
Все ресурсы, созданные с помощью Terraform, оплачиваются согласно модели оплаты услуги. Тарификация за ресурс начинается после создания ресурса.
Стоимость ресурсов, созданных с помощью Terraform, не отличается от стоимости ресурсов, созданных с помощью панели управления.
1. Установить Terraform
- Скачайте дистрибутив Terraform для вашей операционной системы с сайта HashiCorp. Рекомендуем скачать версию Terraform 1.9.
- Установите Terraform. Для ОС Linux и macOS используйте инструкцию Install Terraform документации HashiCorp.
2. Создать сервисного пользователя
Для работы с примерами нужно создать сервисного пользователя с двумя ролями:
member
в области доступа Аккаунт — роль нужна для инициализации провайдера Servercore и создания ресурсов;- и
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. Настроить провайдеры
-
Убедитесь, что в панели управления вы создали сервисного пользователя с ролями
member
в области доступа Аккаунт иiam_admin
. -
Создайте директорию для хранения конфигурационных файлов и отдельный файл с расширением
.tf
для настройки провайдеров. -
В файл для настройки провайдеров добавьте провайдеры Servercore и OpenStack:
terraform {
required_providers {
servercore = {
source = "terraform.servercore.com/servercore/servercore"
version = "~> 6.0"
}
openstack = {
source = "terraform-provider-openstack/openstack"
version = "2.1.0"
}
}
}Здесь
version
— версии провайдеров. Актуальную версию провайдера OpenStack можно посмотреть в Terraform Registry и GitHub.Подробнее о продуктах, услугах и сервисах, которыми можно управлять с помощью провайдеров, в инструкции Провайдеры Servercore и OpenStack.
-
Инициализируйте провайдер Servercore:
provider "servercore" {
domain_name = "123456"
username = "user"
password = "password"
auth_region = "ru-9"
auth_url = "https://cloud.api.selcloud.ru/identity/v3/"
}Здесь:
domain_name
— номер аккаунта Servercore. Можно посмотреть в панели управления в правом верхнем углу;username
— имя сервисного пользователя с ролямиmember
в области доступа Аккаунт иiam_admin
. Можно посмотреть в панели управления: в верхнем меню нажмите Аккаунт → раздел Сервисные пользователи (раздел доступен только Владельцу аккаунта и пользователю с рольюiam_admin
);password
— пароль сервисного пользователя. Можно посмотреть при создании пользователя или изменить на новый;auth_region
— пул, напримерru-9
. Все ресурсы будут создаваться в этом пуле. Список доступных пулов можно посмотреть в инструкции Матрицы доступности.
-
Создайте проект:
resource "servercore_project_v2" "project_1" {
name = "project"
}Посмотрите подробное описание ресурса servercore_vpc_project_v2.
-
Создайте сервисного пользователя для доступа к проекту и назначьте ему роль
member
в области доступа Проект:resource "servercore_iam_serviceuser_v1" "serviceuser_1" {
name = "username"
password = "password"
role {
role_name = "member"
scope = "project"
project_id = servercore_project_v2.project_1.id
}
}Здесь:
username
— имя пользователя;password
— пароль пользователя. Пароль должен быть не короче восьми символов и содержать латинские буквы разных регистров и цифры;project_id
— ID проекта. Можно посмотреть в панели управления: в верхнем меню нажмите Продукты и выберите Облачные серверы → откройте меню проектов → в строке нужного проекта нажмите .
Посмотрите подробное описание ресурса servercore_iam_serviceuser_v1.
-
Инициализируйте провайдер OpenStack:
provider "openstack" {
auth_url = "https://cloud.api.selcloud.ru/identity/v3"
domain_name = "123456"
tenant_id = servercore_project_v2.project_1.id
user_name = servercore_iam_serviceuser_v1.serviceuser_1.name
password = servercore_iam_serviceuser_v1.serviceuser_1.password
region = "ru-9"
}Здесь:
domain_name
— номер аккаунта Servercore. Можно посмотреть в панели управления в правом верхнем углу;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 = [
servercore_project_v2.project_1,
servercore_iam_serviceuser_v1.serviceuser_1
]
} -
Откройте CLI.
-
Инициализируйте конфигурацию Terraform в директории:
terraform init
-
Проверьте, что конфигурационные файлы составлены без ошибок:
terraform validate
-
Отформатируйте конфигурационные файлы:
terraform fmt
-
Проверьте, какие ресурсы будут созданы:
terraform plan
-
Примените изменения и создайте ресурсы:
terraform apply
-
Подтвердите создание — введите yes и нажмите Enter. Созданные ресурсы отобразятся в панели управления.
-
Если для создания ресурсов оказалось недостаточно квот, увеличьте квоты.