Skip to content

07.2 Resource функция decs_vm: управление виртуальными серверами.

svs1370 edited this page Sep 1, 2020 · 10 revisions

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.