Создать выделенный сервер готовой конфигурации
Мы рекомендуем создавать ресурсы по порядку. Если вы создаете все ресурсы единовременно, Terraform будет учитывать зависимости между ресурсами, которые вы указали в конфигурационном файле. Если зависимости не указаны, ресурсы будут создаваться пара ллельно, что может приводить к ошибкам. Например, ресурс, который требуется для создания другого ресурса, может быть еще не создан.
Чтобы назначить на сервер публичный выделенный IP-адрес, используйте инструкцию Создать выделенный сервер готовой конфигурации с публичным выделенным IP-адресом.
- Опционально: настройте провайдера.
- Получите ID готовой конфигурации.
- Получите ID локации.
- Получите образ ОС.
- Создайте выделенный сервер.
Конфигурационные файлы
Пример файла для настройки провайдеров
terraform {
required_providers {
selectel = {
source = "selectel/selectel"
version = "~> 7.1.0"
}
}
}
provider "selectel" {
domain_name = "123456"
username = "user"
password = "password"
auth_region = "ru-1"
auth_url = "https://cloud.api.selcloud.ru/identity/v3/"
}
Пример файла для создания выделенного сервера готовой конфигурации
data "selectel_dedicated_configuration_v1" "server_config" {
project_id = selectel_vpc_project_v2.project_1.id
deep_filter = <<EOT
{
"name": "CL25-SSD"
}
EOT
}
data "selectel_dedicated_location_v1" "server_location" {
project_id = selectel_vpc_project_v2.project_1.id
filter {
name = "SPB-2"
}
}
data "selectel_dedicated_os_v1" "server_os" {
project_id = selectel_vpc_project_v2.project_1.id
filter {
name = "Ubuntu"
version_value = "2404"
configuration_id = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
location_id = data.selectel_dedicated_location_v1.server_location.locations[0].id
}
}
resource "selectel_dedicated_server_v1" "server_1" {
project_id = selectel_vpc_project_v2.project_1.id
configuration_id = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
location_id = data.selectel_dedicated_location_v1.server_location.locations[0].id
os_id = data.selectel_dedicated_os_v1.server_os.os[0].id
price_plan_name = "1 day"
}
1. Опционально: настроить провайдера
-
Убедитесь, что в панели управления вы создали сервисного пользователя с ролями
memberв области доступа Аккаунт иiam.admin. -
Создайте директорию для хранения конфигурационных файлов и отдельный файл с расширением
.tfдля настройки провайдеров. -
В файл для настройки провайдеров добавьте провайдер Selectel:
terraform {required_providers {selectel = {source = "selectel/selectel"version = "~> 7.1.0"}}}Здесь
version— версии провайдеров. Актуальную версию можно посмотреть в документации Selectel (в 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.
-
-
Опционально: если вы хотите использовать зеркало, создайте отдельный конфигурационный файл 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. Созданные ресурсы отобразятся в панели управления.
-
Если для создания ресурсов оказалось недостаточно квот, увеличьте квоты.
2. Получить ID готовой конфигурации
data "selectel_dedicated_configuration_v1" "server_config" {
project_id = selectel_vpc_project_v2.project_1.id
deep_filter = <<EOT
{
"name": "EL50-SSD"
}
EOT
}
Здесь deep_filter — фильтр списка готовых конфигураций:
name— название готовой конфигурации, напримерEL50-SSD. Можно посмотреть в панели управления: в верхнем меню нажмите Продукты и выберите Выделенные серверы. Если в проекте есть созданные серверы, в разделе Серверы нажмите Заказать сервер. Если в проекте нет серверов, страница заказа откроется автоматически.
Посмотрите подробное оп исание источника данных selectel_dedicated_configuration_v1.
Посмотрите подробное описание ресурса selectel_vpc_project_v2.
3. Получить ID локации
data "selectel_dedicated_location_v1" "server_location" {
project_id = selectel_vpc_project_v2.project_1.id
filter {
name = "SPB-2"
}
}
Здесь filter — фильтр списка локаций:
name— пул, в котором будет создан выделенный сервер, напримерSPB-2. Список доступных пулов можно посмотреть в инструкции Матрицы доступности.
Посмотрите подробное описание источника данных selectel_dedicated_location_v1.
4. Получить образ ОС
data "selectel_dedicated_os_v1" "server_os" {
project_id = selectel_vpc_project_v2.project_1.id
filter {
name = "Ubuntu"
version_value = "2404"
configuration_id = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
location_id = data.selectel_dedicated_location_v1.server_location.locations[0].id
}
}
Здесь filter — фильтр списка ОС:
-
name— имя семейства ОС, напримерUbuntu. Вы можете создать сервер без ОС, для этого укажитеnoosи не указывайте версию. Список доступных ОС можно посмотреть в инструкции Образы ОС для установки; -
version_value— версия образа. Посмотреть версию образа ОС можно с помощью API метода List OS configurations.
Посмотрите подробное описание источника данных selectel_dedicated_os_v1.
5. Создать выделенный сервер
resource "selectel_dedicated_server_v1" "server_1" {
project_id = selectel_vpc_project_v2.project_1.id
configuration_id = data.selectel_dedicated_configuration_v1.server_config.configurations[0].id
location_id = data.selectel_dedicated_location_v1.server_location.locations[0].id
os_id = data.selectel_dedicated_os_v1.server_os.os[0].id
price_plan_name = "1 day"
}
Здесь price_plan_name — тарифный план, например 1 day.
Посмотреть названия тарифных планов можно с помощью API метода Price Plans, подробнее о тарифных планах в инструкции Модель оплаты и цены выделенного сервера.
Доступные значения:
1 day;1 month;3 months;6 months;12 months;12 months • monthly payment.
Посмотрите подробное описание ресурса selectel_dedicated_server_v1.