-
Notifications
You must be signed in to change notification settings - Fork 1
07.2 Resource функция decs_vm: управление виртуальными серверами.
Resource функция decs_vm служит для управления виртуальными серверами (aka Virtual Machine, VM) в облачной платформе DECS.
Resource функция decs_vm принимает следующие аргументы:
Аргумент | Тип | Описание |
---|---|---|
boot_disk | struct | Структура, задающая характеристики загрузочного диска сервера. Формат структуры: * (string) label - текстовый идентификатор диска, например "boot";* (int) size - размер диска в GB. Размер диска не может быть меньше, чем размер образа, на базе которого создается данный сервер.Данный аргумент является обязательным. |
cpu | int | Количество CPU, которое требуется назначить серверу. Данный аргумент является обязательным. |
description | string | Текстовое описание данного сервера. Опциональный аргумент. |
data_disks | list of structs | Структура, задающая характеристики дополнительных (aka data) дисков, подключаемых к данному серверу. Формат структуры: * (string) label - текстовый идентификатор диска, например "data01";* (int) size - размер диска в GB.Опциональный аргумент. Можно задавать несколько аргументов для создания нескольких data-дисков. |
image_id | int | Идентификатор образа ОС, на базе которого должен быть создан сервер. Для получения этого идентификатора по имени образа служит data source функция decs_osimage. Данный аргумент является обязательным. |
name | string | Имя виртуального сервера. Виртуальный сервер идентифицируется по комбинации его имени и идентификатору ресурсной группы, которой он принадлежит. Обратите внимание, что имя сервера должно быть уникальным только в рамках одной и той же ресурсной группы. Имя сервера не может быть пустым. Данный аргумент является обязательным. |
networks | list of structs | Структура, задающая внешнюю сеть, к которой надо подключить данный сервер. При подключении к внешней сети сервер получает "белый" IP-адрес, который назначается на отдельный виртуальный сетевой интерфейс. Формат структуры: * (int) network_id - идентификатор внешней сети, к которой будет выполнено прямое подключение сервера.* впоследствии появятся дополнительные поля. Опциональный аргумент. Можно задавать несколько аргументов для создания нескольких правил трансляции для данного сервера. |
port_forwards | struct | Структура, задающая правила настройки трансляции сетевых портов (port forwarding rules) для сервера. Формат структуры: * (int) ext_port - номер внешнего порта;* (int) int_port - номер внутреннего порта;* (string) proto - протокол, допустимые значения "tcp" или "udp";Опциональный аргумент. Можно задавать несколько аргументов для создания нескольких правил трансляции. |
ram | int | Объем ОЗУ в MB, который надлежит выделить серверу. Данный параметр является обязательным и должен иметь положительное значение. |
rgid | int | Идентификатор ресурсной группы, в которой должен быть создан сервер. Для получения этого идентификатора по имени образа служит data source функция decs_resgroup. Данный аргумент является обязательным. |
ssh_keys | struct | Структура, задающая пользователя и публичный SSH-ключ, который нужно авторизовать данному пользователю при создании сервера. Формат структуры: * (string) user - имя пользователя, которому будет авторизован SSH-ключ;* (string) public_key - значение публичного SSH-ключа;* (string) shell - shell, который надлежит установить указанному пользователю, значение по умолчанию "bin/bash";Опциональный аргумент. |
Для создания виртуального сервера пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь как минимум доступ на запись в указанную ресурсную группу. В противном случае возникнет ошибка доступа.
Пользователь облачной платформы задается на стадии инициализации Terraform провайдера DECS (см. подробности).
В случае успешного выполнения resource функция decs_vm возвращает в указанную при вызове переменную следующие значения:
Параметр | Тип | Описание |
---|---|---|
boot_disk | struct | Характеристики загрузочного диска данного сервера. Формат структуры: * (string) label - текстовый идентификатор диска;* (int) size - размер диска в GB. |
cpu | int | Количество виртуальных CPU, выделенных данному серверу. |
data_disks | list of structs | Характеристики дополнительных (aka data) дисков, подключенных к данному серверу. Формат структуры: * (string) label - текстовый идентификатор диска;* (int) size - размер диска в GB. |
description | string | Текстовое описание данного сервера. |
id | int | Уникальный идентификатор данного сервера в облачной платформе. Назначается платформой автоматически при создании сервера. |
image_id | int | Идентификатор образа ОС, на базе которого создан данный сервер. |
name | string | Имя виртуального сервера. |
networks | list of structs | Характеристики сетей, к которым подключен данный сервер. Формат структуры: * (int) network_id - идентификатор сети, соответствующей данному подключению. |
nics | list of structs | Характеристики виртуальных сетевых адаптеров, подключенных к данному серверу. Формат структуры: * (string) ip_address - IP адрес, назначенный данному адаптеру;* (string) mac - MAC адрес адаптера;* (int) network_id - идентификатор сетевого сегмента, к которому подключён этот адаптер;* (string) parameters - дополнительные параметры адаптера;* (string) reference_id - уникальный идентификатор адаптера в облачной платформе;* (string) status - текущий статус адаптера;* (string) type - тип адаптера. |
ram | int | Объем оперативной памяти в MB, выделенной данному серверу. |
rgid | int | Идентификатор ресурсной группы, которой принадлежит данный сервер. |
user | string | Имя пользователя по умолчанию на уровне гостевой ОС. Соответствующая учётная запись создаётся автоматически при создании виртуального сервера. |
password | string | Пароль к учётной записи пользователя по умолчанию (см. user ). Пароль автоматически генерируется случайным образом при создании виртуального сервера. |
В нижеприведённом примере с помощью resource функции decs_vm создаётся виртуальный сервер со следующими характеристиками:
- Имя сервера tf-managed-vm-01;
- Кол-во CPU - 2;
- Объем ОЗУ - 4096 МБ;
- Размер загрузочного диска - 20 ГБ;
- Пользователю root авторизуется указанный SSH-ключ.
- Правило трансляции портов со внешнего IP адреса ресурсной группы на виртуальный сервер: с внешнего порта 11222 на порт сервер 22, протокол tcp (настройка для доступа к серверу по SSH).
- Идентификатор ресурсной группы, в которой будет создан сервер, извлекается из переменной
data.decs_resgroup.target_rg.id
. Подробнее о получении идентификатора ресурсной группы см. пример из описания data source функции decs_resgroup; - Идентификатор образа ОС, на базе которого будет создан сервер, извлекается из переменной
data.decs_image.ubuntu_img.id
. Подробнее о получении идентификатора образа ОС см. пример из описания data source функции decs_image;
resource "decs_vm" "tf-managed-vm-01" {
name = "tf-managed-vm-01"
rgid = "${data.decs_resgroup.target_rg.id}"
cpu = 2 # CPU count
ram = 4096 # RAM size in MB
boot_disk {
label = "boot"
size = 20 # Boot disk size in GB
}
port_forwards { # set up port forwards to allow SSH access
ext_port = 11122
int_port = 22
proto = "tcp"
}
ssh_keys { # authorize SSH key to user root
user="root"
public_key="<paste you SSH public key here>"
}
image_id = "${data.decs_image.ubuntu_img.id}"
description = "Test VM 01 managed by Terraform"
}
Для доступа к данному серверу по протоколу SSH воспользуйтесь командой:
ssh root@IP_ADDRESS -p 11122
где IP_ADDRESS можно получить из переменной data.decs_resgroup.target_rg.public_ip
или посмотреть в Web-интерфейсе облачной платформы DECS.