IaC-провайдер РУСТЭК используется для взаимодействия Terraform/OpenTofu с облаком под управлением RCP. Для этого провайдер задействует API Оркестратора RCP.
Для авторизации провайдера должны быть заданы соответствующие учётные данные.
terraform {
required_providers {
rustack = {
source = "terraform.rustack.ru/rustack-cloud-platform/rcp"
version = "> 1.1.0"
}
}
}
provider "rustack" {
api_endpoint = "Ссылка на API облачной платформы"
token = "Токен пользователя облачной платформы"
}
Обязательно:
api_endpoint (String) — ссылка на API облачной платформы, например, https://dev.cloud.online;token (String) — токен пользователя для операций с API.С помощью источников данных можно получать информацию о различных сущностях: проектах, серверах, роутерах, дисках и т.д.
Данными нельзя управлять, но можно, обращаясь к ним, создавать зависимые от них ресурсы (resource).
Получение информации об учётной записи для использования в других ресурсах. Учётная запись определяется токеном пользователя (см. выше).
data "rustack_account" "account" { }
Только для чтения:
email (String) — адрес электронной почты пользователя;id (String) — уникальный идентификатор пользователя;username (String) — имя пользователя.Получение информации о публичном ключе для использования в других ресурсах.
data "rustack_account" "me"{}
data "rustack_pub_key" "key" {
account_id = data.rustack_account.me.id
name = "Debian 10"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название публичного ключа или id (String) — идентификатор ключа;account_id (String) — идентификатор учётной записи.Только для чтения:
fingerprint (Integer) — отпечаток публичного ключа;public_key (Integer) — значение публичного ключа.Получение информации по проекту для использования в других ресурсах.
Если выполняется обращение по имени (
name) проекта и имя проекта не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название проекта или id (String) — идентификатор проекта.Получение списка проектов пользователя для использования в других ресурсах.
data "rustack_projects" "all_projects" { }
Только для чтения:
projects (List of Object) (см. вложенную схему ниже).Вложенная схема для projects:
Только для чтения:
id(String) — идентификатор проекта;name (String) — название проекта.Получение информации о ресурсном пуле для использования в других ресурсах.
Если выполняется обращение по имени (
name) ресурсного пула и имя ресурсного пула не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_hypervisor" "single_hypervisor" {
project_id = data.rustack_project.single_project.id
name = "VMWARE"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название гипервизора или id (String) — идентификатор гипервизора;project_id (String) — идентификатор проекта.Только для чтения:
type (String) — тип гипервизора.Получение списка ресурсных пулов, доступных в проекте для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_hypervisors" "all_hypervisors" {
project_id = data.rustack_project.single_project.id
}
Обязательно для заполнения:
project_id (String) — идентификатор проекта.Только для чтения:
hypervisors (List of Object) (см. вложенную схему ниже).Вложенная схема для hypervisors:
Только для чтения:
id (String) — идентификатор гипервизора;name (String) — название гипервизора;type (String) — тип гипервизора.Получение информации о ВЦОД для использования в других ресурсах. Это удобно для использования параметров ВЦОД, который не управляется с помощью Terraform.
Если выполняется обращение по имени (
name) ВЦОД и имя ВЦОД не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_vdc" "single_vdc2" {
name = "Terraform VDC"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название ВЦОД или id (String) — идентификатор ВЦОД.Опционально:
project_id (String) — идентификатор проекта.Только для чтения:
hypervisor (String) — название гипервизора;hypervisor_type (String) — тип гипервизора.Получение списка ВЦОД, доступных в проекте для использования в других ресурсах.
Пример использования:
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdcs" "all_vdcs" {
project_id = data.rustack_project.single_project.id
}
Обязательно для заполнения:
project_id (String) — идентификатор проекта.Только для чтения:
vdcs (List of Object) (см. вложенную схему ниже).Вложенная схема для vdcs:
Только для чтения:
hypervisor (String) — название гипервизора;hypervisor_type (String) — тип гипервизора;id (String) — идентификатор ВЦОД;name (String) — название гипервизора.Только для гипервизора VMware.
Получение информации о платформе (типе процессора) для использования в других ресурсах.
Если выполняется обращение по имени (
name) платформы и имя платформы не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_platform" "platform"{
vdc_id = data.rustack_vdc.single_vdc.id
name = "Intel Cascade Lake"
# or
id = ""
}
Обязательно для заполнения:
name (String) — название платформы или id (String) — идентификатор платформы.Только для гипервизора VMware.
Получение информации о списке платформ (типах процессора) для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_platforms" "platforms"{
vdc_id = data.rustack_vdc.single_vdc.id
}
Только для чтения:
platforms (List of Object) (см. вложенную схему ниже).Вложенная схема для platforms:
Только для чтения:
id (String) — идентификатор платформы;name (String) — название платформы.Получение информации о сети для использования в других ресурсах.
Если выполняется обращение по имени (
name) сети и имя сети не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_network" "single_network" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Сеть 1"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название сети или id (String) — идентификатор сети;vdc_id (String) — идентификатор ВЦОД.Только для чтения:
mtu (Integer) — максимальный размер полезного блока данных пакета, передаваемого в сети;subnets (List of Object) — список подсетей (см. вложенную схему ниже).Вложенная схема для subnets:
Только для чтения:
cidr (String) — CIDR подсети;dhcp (Boolean) — включен или выключен DHCP для подсети;dns (List of String) — список DNS-серверов подсети;end_ip (String) — конечный адрес диапазона IP-адресов подсети;gateway (String) — IP-адрес шлюза подсети;id (String) — идентификатор подсети;start_ip (String) — начальный адрес диапазона IP-адресов подсети.Получение списка сетей, доступных во ВЦОД для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_networks" "all_networks" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
networks (List of Object) (см. вложенную схему ниже).Вложенная схема для networks:
Только для чтения:
id (String) — идентификатор сети;name (String) — название сети;mtu (Integer) — максимальный размер полезного блока данных пакета, передаваемого в сети;subnets (List of Object) (см. вложенную схему ниже).Вложенная схема для subnets:
Только для чтения:
cidr (String) — CIDR подсети;dhcp (Boolean) — включен или выключен DHCP для подсети;dns (List of String) — список DNS-серверов;end_ip (String) — конечный адрес диапазона IP-адресов;gateway (String) — адрес шлюза подсети;id (String) — идентификатор подсети;start_ip (String) — начальный адрес диапазона IP-адресов.Получение информации о роутере для использования в других ресурсах.
Если выполняется обращение по имени (
name) роутера и имя роутера не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_router" "single_Router" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Terraform Router"
# or
id = "id"
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД;name (String) — название роутера или id (String) — идентификатор роутера.Получение списка роутеров, доступных во ВЦОД, для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_routers" "vdc_routers" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
routers (List of Object) (см. ниже вложенную схему).Вложенная схема для routers:
Только для чтения:
id (String) — идентификатор роутера;name (String) — название роутера.Получение информации о портах, доступных во ВЦОД, для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_port" "port" {
vdc_id = data.rustack_vdc.single_vdc.id
ip_address = "0.0.0.0"
id = "00000000-0000-0000-0000-000000000000"
}
Обязательно для заполнения:
id (String) — идентификатор порта;vdc_id (String) — идентификатор ВЦОД;ip_address (String) — локальный IP-адрес порта.Только для чтения:
network_id (String) — идентификатор сети;firewall_templates (List of String) — список шаблонов брандмауэра, настроенных на порте.Получение списка портов в ВЦОД, для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_ports" "all_ports" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
ports (List of Object) — список портов.Вложенная схема для ports:
Только для чтения:
id (String) — идентификатор порта;network_id (String) — идентификатор подключенной сети;ip_address (String) — IP-адрес порта;firewall_templates (List of String) — шаблоны брандмауэра.Получение информации о шаблоне брандмауэра для использования в других ресурсах.
Если выполняется обращение по имени (
name) шаблона и имя шаблона не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_firewall_template" "single_template" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Разрешить Web"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название шаблона или id (String) — идентификатор шаблона;vdc_id (String) — идентификатор ВЦОД.Только для чтения:
id (String) — идентификатор шаблона;Получение списка шаблонов брандмауэра для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_firewall_templates" "all_templates" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
firewall_templates (List of Object) (см. вложенную схему ниже).Вложенная схема для firewall_templates:
Только для чтения:
id (String) — идентификатор шаблона брандмауэра;name (String) — название шаблона брандмауэра.Получение информации о профиле хранения диска для использования в других ресурсах.
Если выполняется обращение по имени (
name) профиля и имя профиля не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_storage_profile" "single_storage_profile" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "ssd"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название профиля хранения или id (String) — идентификатор профиля хранения;vdc_id (String) — идентификатор ВЦОД.Получение списка профилей хранения, доступных во ВЦОД, для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_storage_profiles" "all_storage_profiles" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
storage_profiles (List of Object) (см. вложенную схему ниже).Вложенная схема для storage_profiles:
Только для чтения:
id (String) — идентификатор профиля хранения;name (String) — название профиля хранения.Получение информации о диске для использования в других ресурсах.
Если выполняется обращение по имени (
name) диска и имя диска не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_disk" "single_disk" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Disk 2"
# or
id = "id"
}
Обязательно к заполнению
name (String) — название диска или id (String) — идентификатор диска;vdc_id (String) — идентификатор ВЦОДа.Только для чтения:
size (Integer) — размер диска в ГБ;storage_profile_id (String) — идентификатор профиля хранения;storage_profile_name (String) — название профиля хранения;external_id (String) — идентификатор диска на ПВ РУСТЭК (для ВЦОД РУСТЭК).Получение списка дисков во ВЦОД для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_disks" "all_disks" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
disks (List of Object) (см. вложенную схему ниже).Вложенная схема для disks:
Только для чтения:
external_id (String) — идентификатор диска на ПВ РУСТЭК (для ВЦОД РУСТЭК);id (String) — идентификатор диска;name (String) — название диска;size (Integer) — размер диска в ГБ;storage_profile_id (String) — идентификатор профиля хранения;storage_profile_name (String) — название профиля хранения.Получение информации о шаблоне сервера для использования в других ресурсах.
Если выполняется обращение по имени (
name) шаблона и имя шаблона не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_template" "single_template" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Debian 10"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название шаблона сервера или id (String) — идентификатор шаблона сервера;vdc_id (String) — идентификатор ВЦОД.Только для чтения:
min_cpu (Integer) — требуемое минимальное число виртуальных ядер для шаблона сервера;min_disk (Integer) — требуемый минимальный размер диска в ГБ для шаблона сервера;min_ram (Integer) — требуемый минимальный объём оперативной памяти в ГБ для шаблона сервера.Получение списка доступных во ВЦОД шаблонов сервера для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_templates" "single_template" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
templates (List of Object) (см. вложенную схему ниже).Вложенная схема для templates:
Только для чтения:
id (String) — идентификатор шаблона сервера;name (String) — название шаблона сервера;min_cpu (Integer) — требуемое минимальное число виртуальных ядер для шаблона сервера;min_disk (Integer) — требуемый минимальный размер диска в ГБ для шаблона сервера;min_ram (Integer) — требуемый минимальный объём оперативной памяти в ГБ для шаблона сервера.Получение информации о сервере для использования в других ресурсах.
Если выполняется обращение по имени (
name) сервера и имя сервера не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_vm" "single_vm" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Server 1"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название сервера или id (String) — идентификатор сервера;vdc_id (String) — идентификатор ВЦОД.Только для чтения:
cpu (Integer) — количество виртуальных ядер сервера;floating (Boolean) — подключен или не подключен публичный IP-адрес к серверу;floating_ip (String) — публичный IP-адрес сервера;power (Boolean) — включен или выключен сервер;ram (Float) — объём оперативной памяти сервера в ГБ;template_id (String) — идентификатор шаблона сервера;template_name (String) — название шаблона сервера;ports (Block List) — список портов (см. вложенную схему ниже).Вложенная схема для ports:
Обязательно для заполнения:
id (String) — идентификатор порта.Только для чтения:
ip_address (String) — IP-адрес порта.Получение списка серверов, доступных в ВЦОД, для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_vms" "all_vms" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
vms (List of Objects) (см. вложенную схему ниже).Вложенная схема для vms:
Только для чтения:
cpu (Integer) — количество виртуальных ядер сервера;floating (Boolean) — подключен или не подключен публичный адрес к серверу;floating_ip (String) — публичный адрес сервера;id (String) — идентификатор сервера;name (String) — название сервера;ports (List of Objects) — список портов (см. вложенную схему ниже).power (Boolean) — включен или выключен сервер;ram (Integer) — объём оперативной памяти сервера в ГБ;template_id (String) — идентификатор шаблона сервера;template_name (String) — название шаблона сервера.Получение информации о балансировщике нагрузки для использования в других ресурсах.
Если выполняется обращение по имени (
name) балансировщика и имя балансировщика не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_lbaas" "test" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "test"
# or
id = "id"
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД;name (String) — название балансировщика или id (String) — идентификатор балансировщика.Только для чтения:
lbaas (List of objects) (см. вложенную схему ниже).Вложенная схема для lbaas:
Только для чтения:
floating (Boolean) — наличие публичного адреса балансировщика;name (String) — название балансировщика.Получение списка балансировщиков нагрузки во ВЦОД для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_lbaas" "all_lbaass" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
lbaass (List of Object) (см. вложенную схему ниже).Вложенная схема для lbaass:
Только для чтения:
floating (Boolean) — наличие публичного адреса балансировщика;id (String) — идентификатор балансировщика;name (String) — название балансировщика.Получение информации о доменной зоне для использования в других ресурсах. Если
nameдоменной зоны не уникален, то данный метод возвращает ошибку.
Если выполняется обращение по имени (
name) доменной зоны и имя доменной зоны не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_dns" "dns" {
name = "dns.terraform."
# or
id = "id"
project_id = data.rustack_project.single_project.id
}
Обязательно для заполнения:
project_id (String) — идентификатор проекта;name (String) — название доменной зоны или id (String) — идентификатор доменной зоны.Получение списка доменных зон содержащихся в проекте для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_dnss" "all_dns" {
project_id = data.rustack_project.single_project.id
}
Обязательно для заполнения:
project_id (String) — идентификатор проекта.Только для чтения:
dnss (List of Object) — список доменных зон (см. вложенную схему ниже).Вложенная схема для dnss:
Только для чтения:
name (String) — название доменной зоны;id (String) — идентификатор доменной зоны.Получение информации о S3-хранилище для использования в других ресурсах.
Если выполняется обращение по имени (
name) хранилища и имя хранилища не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_s3_storage" "s3" {
project_id = data.rustack_project.single_project.id
name = "S3"
# or
id = "id"
}
Обязательно для заполнения:
project_id (String) — идентификатор проекта;name (String) — название S3-хранилища или id (String) — идентификатор хранилища.Только для чтения:
backend (String) — тип хранилища: minio или netapp;access_key (String) — ключ доступа хранилища;client_endpoint (String) — URL хранилища;secret_key (String) — секретный ключ хранилища.Получение списка S3-хранилищ, находящихся в проекте, для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_s3_storages" "s3" {
project_id = data.rustack_project.single_project.id
}
Обязательно для заполнения:
project_id (String) — идентификатор проекта.Только для чтения:
Вложенная схема для s3_storages:
Только для чтения:
name (String) — название S3-хранилища;id (String) — идентификатор хранилища;access_key (String) — ключ доступа хранилища;client_endpoint (String) — URL хранилища;secret_key (String) — секретный ключ хранилища;backend (String) — тип хранилища: minio или netapp.Получение информации о кластере Kubernetes для использования в других ресурсах.
Если выполняется обращение по имени (
name) кластера и имя кластера не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_kubernetes" "single_k8s" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Cluster 1"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название кластера Kubernetes или id (String) — идентификатор кластера;vdc_id (String) — идентификатор ВЦОД.Только для чтения:
node_cpu (Integer) — количество виртуальных CPU у узлов кластера;floating (Boolean) — наличие публичного адреса у кластера;floating_ip (String) — публичный адрес кластера при его наличии;nodes_count (String) — количество узлов кластера;node_disk_size (String) — размер диска узла кластера, который был указан при создании кластера;user_public_key_id (String) — публичный ключ кластера;node_storage_profile_id (String) — идентификатор профиля хранения дисков узлов кластера;dashboard_url (String) — URL панели управления кластера;node_ram (Integer) — объём оперативной памяти узлов кластера;template_id (String) — идентификатор шаблона Kubernetes;vms (List) — список идентификаторов id (String) серверов кластера.Аргументы
node_cpu,node_disk_size,node_storage_profile_idиnode_ramсодержат значения, установленные при создании кластера Kubernetes. При изменении характеристик узла в панели управления эти значения останутся прежними.
Получение URL для входа в панель управления кластера
Данный блок выведет URL панели управления в консоли:
output "dashboard_url" {
value = data.rustack_kubernetes.single_k8s.dashboard_url
}
Получение конфигурационного файла kubectl
После получения информации о кластере в рабочей директории появится конфигурационный файл.
Получение списка кластеров Kubernetes для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_kubernetess" "all_clusters" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
kubernetess (List of Object) — список кластеров (см. вложенную схему ниже).Вложенная схема для kubernetess:
Только для чтения:
id (String) — идентификатор кластера;name (String) — название кластера;node_cpu (Integer) — количество виртуальных CPU у узлов кластера;floating (Boolean) — наличие публичного адреса у кластера;floating_ip (String) — публичный адрес кластера при его наличии;nodes_count (String) — количество узлов кластера;node_disk_size (String) — размер диска узлов кластера, который был указан при создании кластера;user_public_key_id (String) — публичный ключ кластера;node_storage_profile_id (String) — идентификатор профиля хранения дисков узлов кластера;dashboard_url (String) — URL панели управления кластера;node_ram (Integer) — объём оперативной памяти узлов кластера;template_id (String) — идентификатор шаблона Kubernetes;vms (List) — список идентификаторов id (String) серверов кластера.Аргументы
node_cpu,node_disk_size,node_storage_profile_idиnode_ramсодержат значения, установленные при создании кластера Kubernetes. При изменении характеристик узла в панели управления эти значения останутся прежними.
Получение URL для входа в панель управления кластера
Данный блок выведет URL панели управления в консоли:
output "dashboard_url" {
value = data.rustack_kubernetess.all_clusters.kubernetess[0].dashboard_url
}
Получение конфигурационного файла kubectl
После получения списка кластеров в рабочей директории появится конфигурационный файл.
Получение информации о шаблоне Kubernetes для использования в других ресурсах.
Если выполняется обращение по имени (
name) шаблона и имя шаблона не уникально, то данный метод возвращает ошибку.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_kubernetes_template" "k8s_template" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Kubernetes 1.22.1"
# or
id = "id"
}
Обязательно для заполнения:
name (String) — название шаблона Kubernetes или id (String) — идентификатор шаблона;vdc_id (String) — идентификатор ВЦОД.Только для чтения:
min_node_cpu (Integer) — требуемое минимальное число виртуальных CPU для шаблона;min_node_hdd (Integer) — требуемый минимальный размер диска для шаблона в ГБ;min_node_ram (Integer) — требуемый минимальный объём оперативной памяти для шаблона в ГБ.Получение списка шаблонов Kubernetes для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_kubernetes_templates" "k8s_templates" {
vdc_id = data.rustack_vdc.single_vdc.id
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД.Только для чтения:
kubernetes_templates (List of Object) — список шаблонов Kubernetes (см. вложенную схему ниже).Вложенная схема для kubernetes_templates:
Только для чтения:
id (String) — идентификатор шаблона;name (String) — название кластера;min_node_cpu (Integer) — требуемое минимальное число виртуальных CPU для шаблона;min_node_hdd (Integer) — требуемый минимальный размер диска для шаблона в ГБ;min_node_ram (Integer) — требуемый минимальный объём оперативной памяти для шаблона в ГБ.Получение информации о шаблоне платформенного сервиса для использования в других ресурсах.
data "rustack_project" "single_project" {
name = "PaaS Project"
}
data "rustack_paas_template" "db_template" {
id = 1
project_id = data.rustack_project.single_project.id
}
Обязательно для заполнения:
id (Integer) — идентификатор шаблона;project_id (String) — идентификатор проекта.Сущности, доступные для создания, изменения и управления ими.
Для каждого ресурса предусмотрена возможность задания таймаутов при создании и удалении ресурса. Для этого в теле ресурса задайте дополнительный блок
timeoutsсо следующими аргументами:
create(String) — таймаут на создание ресурса.delete(String) — таймаут на удаление ресурса.По истечении таймаута Terraform выведет ошибку в консоли.
Создание и управление проектом. Проекты позволяют организовать ресурсы в группы по вашему желанию. ВЦОДы ассоциируются с проектами.
resource "rustack_project" "tf_project" {
name = "Terraform Project"
tags = ["demo"]
}
Обязательно для заполнения:
name (String) — название проекта.Опционально:
tags (Toset, String) — список тегов проекта.Только для чтения:
id (String) — идентификатор проекта.Создание и управление ВЦОД для создания инфраструктур.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_hypervisor" "single_hypervisor" {
project_id = data.rustack_project.single_project.id
name = "VMWARE"
}
resource "rustack_vdc" "vdc1" {
name = "Terraform VDC"
project_id = data.rustack_project.single_project.id
hypervisor_id = data.rustack_hypervisor.single_hypervisor.id
tags = ["demo"]
}
Обязательно для заполнения:
hypervisor_id (String) — идентификатор гипервизора;name (String) — название ВЦОД;project_id (String) — идентификатор проекта.Опционально:
default_network_mtu (Integer) — максимальный размер полезного блока данных пакета для сервисной сети ВЦОД, создаваемой по умолчанию;tags (Toset, String) — список тегов ВЦОД.Только для чтения:
id (String) — идентификатор ВЦОД;default_network_id (String) — идентификатор сервисной сети ВЦОД, созданной по умолчанию;default_network_name (String) — название сервисной сети ВЦОД, созданной по умолчанию;default_network_subnets (String) — список подсетей сервисной сети ВЦОД (см. вложенную схему ниже).Вложенная схема для default_network_subnets:
Только для чтения:
cidr (String) — CIDR подсети;dhcp (Boolean) — включен или выключен DHCP для подсети;dns (List of String) — список DNS-серверов;end_ip (String) — конечный адрес диапазона IP-адресов подсети;gateway (String) — IP-адрес шлюза подсети;id (String) — идентификатор подсети;start_ip (String) — начальный адрес диапазона IP-адресов подсети.Создание и управление сетью для соединения двух или более серверов.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
resource "rustack_network" "network1" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Network 1"
subnets {
cidr = "10.20.1.0/24"
dhcp = true
gateway = "10.20.1.1"
start_ip = "10.20.1.2"
end_ip = "10.20.1.254"
dns = ["77.88.8.8", "77.88.8.1"]
}
tags = ["test"]
}
Обязательно для заполнения:
name (String) — название сети;subnets (Block List, Min: 1, Max: 1) — подсеть (см. ниже вложенную схему);vdc_id (String) — идентификатор ВЦОД.Опционально:
mtu (Integer) — максимальный размер полезного блока данных пакета, передаваемого в сети;tags (Toset, String) — список тегов сети.Только для чтения:
id (String) — идентификатор сети.Вложенная схема для subnets:
Обязательно для заполнения:
cidr (String) — CIDR подсети в формате Х.Х.Х.Х/Х;dhcp (Boolean) — включение DHCP для подсети;dns (List of String) — список DNS-серверов подсети;end_ip (String) — конечный адрес диапазона IP-адресов подсети;gateway (String) — IP-адрес шлюза подсети;start_ip (String) — начальный адрес диапазона IP-адресов подсети.Только для чтения:
id (String) — идентификатор подсети.Создание и управление портом для подключения к сети роутера или сервера.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "vdc1" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_firewall_template" "allow_default" {
vdc_id = data.rustack_vdc.vdc1.id
name = "Разрешить входящие"
}
resource "rustack_network" "network" {
vdc_id = data.rustack_vdc.vdc1.id
name = "network"
subnets {
cidr = "10.20.3.0/24"
dhcp = true
gateway = "10.20.3.1"
start_ip = "10.20.3.2"
end_ip = "10.20.3.254"
dns = ["8.8.8.8", "8.8.4.4", "1.1.1.1"]
}
}
resource "rustack_port" "router_port" {
vdc_id = data.rustack_vdc.vdc1.id
network_id = resource.rustack_network.network.id
ip_address = "10.20.3.11"
firewall_templates = [data.rustack_firewall_template.allow_default.id]
tags = ["test_port"]
}
Обязательно для заполнения:
network_id (String) — идентификатор сети;vdc_id (String) — идентификатор ВЦОД;Опционально:
ip_address (String) — локальный IP-адрес порта;firewall_templates (List of String) — список шаблонов брандмауэра, настроенных на порте;tags (Toset, String) — список тегов порта.Только для чтения:
id (String) — идентификатор порта.Создание и управление роутером для соединения двух или более серверов и для подключения к сетям.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_network" "default_network" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Network"
}
resource "rustack_port" "router_port" {
vdc_id = data.rustack_vdc.single_vdc.id
network_id = data.rustack_network.default_network.id
}
resource "rustack_router" "new_router" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "New router"
ports = [
data.rustack_port.router_port.id,
]
floating = false
tags = ["test"]
}
Обязательно для заполнения:
name (String) — название роутера;ports (Toset, String, Min: 1, Max: 20) — список портов;vdc_id (String) — идентификатор ВЦОД.Опционально:
system (Bool) — позволяет управлять системным роутером через Terraform. По умолчанию system = false; Может быть только один роутер с system = true.floating (Bool) — подключение публичного IP к роутеру. По умолчанию floating = true.is_default (Bool) — установите true, чтобы сделать роутер системным.tags (Toset, String) — список тегов роутера.Только для чтения:
id (String) — идентификатор роутера;floating_id (String) — идентификатор публичного IP.Создание диска, который может быть присоединён к серверу.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_storage_profile" "single_storage_profile" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "sas"
}
resource "rustack_disk" "disk2" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Disk 2"
storage_profile_id = data.rustack_storage_profile.single_storage_profile.id
size = 10
tags = ["reserve_data"]
}
Обязательно для заполнения:
name (String) — название диска;size (Integer) — размер диска в ГБ;storage_profile_id (String) — идентификатор профиля хранения;vdc_id (String) — идентификатор ВЦОД.Опционально:
tags (Toset, String) — список тегов диска.Только для чтения:
id (String) — идентификатор диска.external_id (String) — идентификатор диска на ПВ РУСТЭК (для ВЦОД РУСТЭК).Создание и управление шаблоном брандмауэра.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
resource "rustack_firewall_template" "single_template" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "New custom template"
tags = ["test"]
}
Обязательно для заполнения:
name (String) — название шаблона брандмауэра;vdc_id (String) — идентификатор ВЦОД.Опционально:
tags (Toset, String) — список тегов шаблона брандмауэра.Создание и управление правилом шаблона брандмауэра.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_firewall_template" "single_template" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "New custom template"
}
resource "rustack_firewall_template_rule" "rule_1" {
firewall_id = data.rustack_firewall_template.single_template.id
name = "test1"
direction = "ingress"
protocol = "tcp"
port_range = "80"
destination_ip = "0.0.0.0"
}
Обязательно для заполнения (для всех правил)
firewall_id (String) — идентификатор шаблона брандмауэра;name (String) — название правила;direction (String) — направление правила, может принимать значения: ingress (входящее), egress (исходящее);protocol (String) — протокол может принимать значения: udp, tcp, icmp, any (любой);destination_ip (String) — IP-адрес источника или назначения.Для протоколов TCP и UDP также обязательно для заполнения:
port_range (String) — можно выбрать один порт, диапазон портов, например, 80:90 или оставить пустым.Создание, изменение и удаление сервера.
Перед использованием примера должны быть созданы:
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_network" "service_network" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Сеть"
}
data "rustack_storage_profile" "ssd" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "ssd"
}
data "rustack_template" "debian10" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Debian 10"
}
data "rustack_firewall_template" "allow_default" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Разрешить исходящие"
}
data "rustack_firewall_template" "allow_web" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Разрешить WEB"
}
data "rustack_firewall_template" "allow_ssh" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Разрешить SSH"
}
data "rustack_disk" "disk1" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Диск 1"
}
data "rustack_disk" "disk2" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Диск 2"
}
resource "rustack_port" "vm_port" {
vdc_id = data.rustack_vdc.single_vdc.id
network_id = data.rustack_network.service_network.id
firewall_templates = [data.rustack_firewall_template.allow_default.id,
data.rustack_firewall_template.allow_web.id,
data.rustack_firewall_template.allow_ssh.id]
}
resource "rustack_vm" "vm1" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Server 1"
cpu = 2
ram = 4
template_id = data.rustack_template.debian10.id
user_data = file("user_data.yaml")
system_disk {
size = 10
storage_profile_id = data.rustack_storage_profile.ssd.id
}
disks = [
data.rustack_disk.disk1.id,
data.rustack_disk.disk2.id,
]
networks {
id = resource.rustack_port.vm_port.id
}
power = true
floating = false
tags = ["test"]
}
Обязательно для заполнения:
cpu (Integer) — количество виртуальных ядер сервера;system_disk — основной диск (см. вложенную схему ниже);name (String) — название сервера;networks (Block List) — блок с идентификатором порта, подсоединённого к серверу. Для каждого порта задаётся отдельный блок networks.ram (Float) — объём оперативной памяти сервера в ГБ;template_id (String) — идентификатор шаблона сервера;user_data (String) — cloud-init скрипт;vdc_id (String) — идентификатор ВЦОД.Опционально:
floating (Boolean) — подключение публичного IP-адреса к серверу;power (Boolean) — состояние сервера (true — включен, false — выключен);disks (Toset, String) — список идентификаторов дисков, подсоединённых к серверу;tags (Toset, String) — список тегов сервера.Только для чтения:
floating_ip (String) — публичный IP-адрес, подсоединённый к серверу;id (String) — идентификатор сервера.Вложенная схема для system_disk:
Обязательно для заполнения:
size (Integer) — размер диска в ГБ;storage_profile_id (String) — идентификатор профиля хранения.Только для чтения:
external_id (String) — идентификатор диска на ПВ РУСТЭК (для ВЦОД РУСТЭК);id (String) — идентификатор диска;name (String) — название диска.Вложенная схема для networks:
Обязательно для заполнения:
id (String) — идентификатор порта.Только для чтения:
ip_address (String) — IP-адрес порта.Создание, изменение и удаление балансировщика.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_network" "new_network" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "New network"
}
resource "rustack_lbaas" "lbaas" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "lbaas"
port {
network_id = data.rustack_network.new_network.id
}
tags = ["test"]
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД;name (String) — название балансировщика;port (Schema) — указание сети, к которой подключен балансировщик (см. вложенную схему ниже).Опционально:
floating (Boolean) — подключение публичного IP к балансировщику;tags (Toset, String) — список тегов балансировщика.Вложенная схема для port:
network_id (String) — идентификатор сети.Создание, изменение и удаление пула балансировщика нагрузки.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_template" "debian10" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Debian 10"
}
data "rustack_network" "service_network" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Сеть"
}
data "rustack_firewall_template" "allow_default" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Разрешить входящие"
}
data "rustack_storage_profile" "ssd" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "ssd"
}
resource "rustack_port" "vm_port" {
vdc_id = data.rustack_vdc.single_vdc.id
network_id = data.rustack_network.service_network.id
firewall_templates = [data.rustack_firewall_template.allow_default.id]
}
resource "rustack_vm" "vm" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Server 1"
cpu = 3
ram = 3
power = true
template_id = data.rustack_template.debian10.id
user_data = "${file("user_data.yaml")}"
system_disk {
size = 10
storage_profile_id = data.rustack_storage_profile.ssd.id
}
ports = [resource.rustack_port.vm_port.id]
floating = true
}
resource "rustack_lbaas" "lbaas" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "lbaas"
floating = true
port {
network_id = data.rustack_network.service_network.id
}
}
resource "rustack_lbaas_pool" "pool" {
lbaas_id = resource.rustack_lbaas.lbaas.id
connlimit = 34
method = "SOURCE_IP"
protocol = "TCP"
port = 80
member {
port = 80
weight = 50
vm_id = resource.rustack_vm.vm.id
}
depends_on = [rustack_vm.vm]
}
Обязательно для заполнения:
lbaas_id (String) — идентификатор балансировщика, в который подключен пул;port (String) — порт балансировщика нагрузки, по которому доступен пул;member (Schema) — участник пула (см. вложенную схему ниже).Опционально:
method (String) — метод балансировки, может принимать значения: ROUND_ROBIN, LEAST_CONNECTIONS, SOURCE_IP;protocol (String) — протокол балансировки трафика, может принимать значения: TCP, HTTP, HTTPS;connlimit (Integer) — лимит соединений пула.Вложенная схема для member:
Обязательно для заполнения:
port (Integer) — порт участника пула;vm_id (String) — идентификатор сервера — участника пула.Опционально:
weight (Integer) — вес участника пула.Создание, изменение и удаление хранилища S3.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
resource "rustack_s3_storage" "s3_storage" {
project_id = data.rustack_project.single_project.id
name = "s3_storage"
backend = "minio" # or "netapp"
tags = ["backup"]
}
Обязательно для заполнения:
name (String) — название S3-хранилища;project_id (String) — идентификатор проекта;backend (String) — тип хранилища: minio или netapp.Опционально:
tags (Toset, String) — список тегов хранилища.Только для чтения:
id (String) — идентификатор хранилища;access_key (String) — ключ доступа для подключения к хранилищу;client_endpoint (String) — URL для подключения к хранилищу;secret_key (String) — секретный ключ для подключения к хранилищу.Создание, изменение и удаление бакета хранилища S3.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_s3_storage" "s3_storage" {
project_id = data.rustack_project.single_project.id
name = "s3_storage"
}
resource "rustack_s3_storage_bucket" "bucket" {
s3_storage_id = data.rustack_s3_storage.s3_storage.id
name = "Bucket_1"
}
Обязательно для заполнения:
name (String) — название бакета S3-хранилища;s3_storage_id (String) — идентификатор S3-хранилища.Только для чтения:
id (String) — идентификатор бакета S3-хранилища;external_name (String) — название бакета S3-хранилища для подключения и обращения к нему.Создание, изменение и удаление доменной зоны.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
resource "rustack_dns" "dns" {
name = "dns.teraform."
project_id = data.rustack_project.single_project.id
tags = ["test_zone"]
}
Обязательно для заполнения:
name (String) — название доменной зоны;project_id (String) — идентификатор прректа.Опционально:
tags (Toset, String) — список тегов доменной зоны.Только для чтения:
id (String) — идентификатор доменной зоны.Создание, изменение и удаление записи доменной зоны.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_dns" "dns" {
name="dns.teraform."
project_id = data.rustack_project.single_project.id
}
# А запись доменной зоны (аналогично создаются AAAA, CNAME, NS, TXT записи)
resource "rustack_dns_record" "dns_record1" {
dns_id = data.rustack_dns.dns.id
type = "A"
host = "test.testme.com."
data = "10.0.1.1"
ttl = "86400"
}
# CAA запись доменной зоны
resource "rustack_dns_record" "dns_record2" {
dns_id = data.rustack_dns.dns.id
type = "CAA"
host = "test2.testme.com."
data = "10.0.1.2"
ttl = "86400"
tag = "issue"
flag = "128"
}
# MX запись доменной зоны
resource "rustack_dns_record" "dns_record3" {
dns_id = data.rustack_dns.dns.id
type = "MX"
host = "test3.testme.com."
data = "10.0.1.2"
ttl = "86400"
priority = "1"
}
Обязательно для заполнения (для всех типов записей)
dns_id (String) — идентификатор доменной зоны;type (String) — тип DNS-записи;host (String) — хост DNS-записи;data (String) — данные DNS-записи.Также обязательно для CAA записей
tag (String) — тег DNS-записи;flag (String) — флаг DNS-записи. Может быть выбран 0 (not critical), 128 (critical).Также обязательно для MX записей
priority (String) — приоритет DNS-записи.Также обязательно для SRV записей
priority (String) — приоритет DNS-записи;weight (String) — вес DNS-записи;port (String) — порт DNS-записи.Только для чтения:
id (String) — идентификатор DNS-записи.Создание, изменение и удаление кластера Kubernetes.
После создания кластера поля
node_ram,node_cpu,node_disk_size,node_storage_profile_id,user_public_key_idиспользуются только при добавлении нового узла (при увеличении аргументаnodes_count) после обновления ресурса.
data "rustack_project" "single_project" {
name = "Terraform Project"
}
data "rustack_vdc" "single_vdc" {
project_id = data.rustack_project.single_project.id
name = "Terraform VDC"
}
data "rustack_network" "service_network" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Сеть"
}
data "rustack_storage_profile" "ssd" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "ssd"
}
data "rustack_account" "me"{}
data "rustack_kubernetes_template" "kubernetes_template" {
name = "Kubernetes 1.22.1"
vdc_id = data.rustack_vdc.single_vdc.id
}
data "rustack_pub_key" "key" {
name = "test"
account_id = data.rustack_account.me.id
}
data "rustack_platform" "pl" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "Базовая"
}
resource "rustack_kubernetes" "k8s" {
vdc_id = data.rustack_vdc.single_vdc.id
name = "test"
node_ram = 3
node_cpu = 3
platform = data.rustack_platform.pl.id
template_id = data.rustack_kubernetes_template.kubernetes_template.id
nodes_count = 2
node_disk_size = 10
node_storage_profile_id = data.rustack_storage_profile.ssd.id
user_public_key_id = data.rustack_pub_key.key.id
floating = true
tags = ["sandbox"]
}
output "dashboard_url" {
value = resource.rustack_kubernetes.k8s.dashboard_url
}
Обязательно для заполнения:
vdc_id (String) — идентификатор ВЦОД;name (String) — название кластера;node_cpu (Integer) — количество виртуальных CPU у узлов кластера;node_ram (Integer) — объём оперативной памяти узлов кластера в ГБ;template_id (String) — идентификатор шаблона Kubernetes;platform (String) — идентификатор платформы (типа процессора) — только для сегмента VMware;nodes_count (Integer) — количество узлов кластера;node_disk_size (Integer) — размер диска узлов кластера в ГБ;node_storage_profile_id — идентификатор профиля хранения дисков узлов кластера;user_public_key_id (String) — публичный ключ кластера.Опционально:
floating (Boolean) — подключение публичного IP-адреса для кластера;tags (Toset, String) — список тегов кластера.Только для чтения:
floating_ip (String) — публичный IP-адрес кластера;id (String) — идентификатор кластера;dashboard_url (String) — URL панели управления Kubernetes.Получение URL для входа в панель управления кластера
Данный блок выведет URL панели управления в консоли:
output "dashboard_url" {
value = resource.rustack_kubernetes.k8s.dashboard_url
}
Получение конфигурационного файла kubectl
После создания кластера в рабочей директории появится конфигурационный файл.
Создание, изменение и удаление платформенного сервиса.
data "rustack_project" "single_project" {
name = "project-2"
}
data "rustack_hypervisors" "all_hypervisors" {
project_id = data.rustack_project.single_project.id
}
data "rustack_paas_template" "db_template" {
id = 1
project_id = data.rustack_project.single_project.id
}
resource "rustack_paas_service" "db_service" {
name = "database"
project_id = data.rustack_project.single_project.id
paas_service_id = data.rustack_paas_template.db_template.id
paas_service_inputs = jsonencode({
"change_password": false,
"enable_ssh_password":true,
"enable_sudo":true,
"passwordless_sudo":false,
"cpu_num":1,
"ram_size":1,
"volume_size":10,
"network_id":"93f611ed-50e4-49fc-b534-d3195dfad3d31",
"vdcs_id":"e79c516f-c7d9-4b9d-985e-05d0557ef094",
"vm_name":"vm_name2",
"template_id":"304aed12-05cf-4974-acfe-2210ee3e99e6",
"storage_profile":"0e1aead5-ef4b-46e2-b988-64dea6d146f8",
"firewall_profiles":["00000000-0000-0000-0000-000000000000"],
"user_name":"test",
"user_password":"QazWsx123$"
})
}
Обязательно для заполнения:
name (String) — название сервиса;project_id (String) — идентификатор проекта;paas_service_id (Integer) — идентификатор шаблона платформенного сервиса;paas_service_inputs (String) — входные данные для сервиса. Вместо jsonencode(...) можно использовать file("${path.module}/inputs.json") для получения входных данных из файла inputs.json.