You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 KiB

Resource функция dynamix_resgroup служит для управления ресурсными группами на облачной платформе DYNAMIX.

Аргументы

Resource функция dynamix_resgroup принимает следующие аргументы:

Аргумент Тип Обязательный Описание
account_id int ✔️ Идентификатор аккаунта (aka "account"), которому будет принадлежать создаваемая ресурсная группа.
gid int ✔️ Идентификатор grid, которому будет принадлежать создаваемая ресурсная группа.
name string ✔️ Имя ресурсной группы. Должно быть уникальным в рамках одного и того же аккаунта ("account"), не может быть пустым.
compute_features []string Доступ к дополнительным функциям управления ВМ
def_net_type string Тип сети, которая будет установлена по умолчанию для данной ресурсной группы.
Данный параметр используется только при создании resourse. Во всех остальных случаях необходимо пользоваться параметром def_net.
Может принимать одно из следующих значений:
* "PUBLIC" - создаваемые в данной ресурсной группе экземпляры compute по умолчанию будут подключаться во внешнюю сеть с идентификатором, который задаётся параметром ext_net_id
* "PRIVATE" - экземпляры compute по умолчанию будут подключаться в новый виртуальный сетевой сегмент (ViNS ), который платформа автоматически создаст для данной ресурсной группы.
* "NONE" - сеть по умолчанию не задана, экземпляры compute в данной ресурсной группе будут создаваться без сетевых подключений, если при их создании явно не указано иное.
По умолчанию: PRIVATE
description string Текстовое описание данной ресурсной группы.
Данный параметр не является обязательным, значение по умолчанию - пустая строка.
permanently bool Безвозвратное удаление ресурса. Используется при удалении
force bool Удаление ресурса, в случае если он к чему-то присоединен произойдет отсоединение его от других ресурсов и удаление
enable bool Поле флаг, отвечающее за enable/disable ресурса
ext_ip string IP адрес из диапазона, принадлежащего внешней сети, который будет присвоен подключению ViNS во внешнюю сеть в случае, когда def_net_type = "PRIVATE" и ненулевом ext_net_id. При других значениях def_net_type данный параметр игнорируется.
Если данный параметр не указан явно, то платформа автоматически выберет свободный IP адрес.
Если заданный ext_ip уже используется, платформа вернёт ошибку.
ext_net_id int Идентификатор внешней сети, в которую будет подключён ViNS, автоматически создаваемый платформой для данной ресурсной группы в случае, когда def_net_type = "PRIVATE". При других значениях def_net_type данный параметр игнорируется.
Если данный параметр не задан явно при def_net_type = "PRIVATE", то платформа выберет первую из доступных данному пользователю внешних сетей.
ipcidr string Адрес сети внутри ViNS для случая def_net_type = "PRIVATE"
Если данный параметр явно не задан, то платформа назначит адрес сети автоматически.
quota Struct см. ниже Квоты на объем ресурсов, устанавливаемые для данной ресурсной группы, с разбивкой по количеству CPU, объему RAM, объему дисковых ресурсов, количеству внешних IP адресов и т.п. Максмальное количество: 1
access []Struct см. ниже Юзеры которым выдется доступ к данной ресурсной группе
def_net Struct см. ниже Параметры сети ресурсной группы. Максмальное количество: 1
uniq_pools []string Список пулов, применяется только при update, при создании resource игнорируется. Например, ["sep1_poolName1", "sep2_poolName2"]
owner string Имя пользователя владелец этой РГ. Оставьте поле пустым, чтобы назначить текущего пользователя владельцем.
restore bool Восстановить ресурсную из корзины.

Описание структуры quota

Аргумент Тип Обязательный Описание
cpu int лимит на суммарное потребление процессоров [шт] в рамках данной ресурсной группы
ram int лимит на суммарное потребление ОЗУ [МБ] в рамках данной ресурсной группы
disk int лимит на суммарное потребление дискового пространства [ГБ] в рамках данной ресурсной группы
ext_traffic int лимит на суммарный трафик в рамках данной ресрсной группы
ext_ips int лимит на суммарное потребление внешних IP адресов [шт] в рамках данной ресурсной группы

Описание структуры access

Аргумент Тип Обязательный Описание
user string ✔️ Юзер которому предоставляется доступ
right string ✔️ Права, которые будут выдаваться данному юзеру. Возможные значения: "R", "RCX" или "ARCXDU"

Описание структуры def_net

Аргумент Тип Обязательный Описание
net_type string ✔️ Тип сети, которая будет присоединена к ресурсной группе. Возможные значения: "PRIVATE" - vins, "PUBLIC"- external network
net_id int Идентификатор сети. Если не указан, будет задан тот, к которому есть доступ по умолчанию

Для создания ресурсной группы пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь как минимум доступ на запись к указанному аккаунту. В противном случае возникнет ошибка доступа.

Пользователь облачной платформы задается на стадии инициализации Terraform провайдера DYNAMIX (см. подробности).

Возвращаемые значения

В случае успешного выполнения resource функция dynamix_resgroup возвращает в указанную при вызове переменную следующие значения:

Параметр Тип Описание
account_id int Уникальный идентификатор аккаунта-владельца данной ресурсной группы.
account_name string Имя аккаунта ("account"), которому принадлежит данная ресурсная группа.
compute_features []string Доступ к дополнительным функциям управления ВМ
created_by string Кес создан ресурс
created_time int Время создания ресурса
deleted_by string Кем удален ресурс
deleted_time int Время удаления ресурса
resources Struct{} см. ниже Информация о занимаемых ресурсах
def_net_id int Уникальный идентификатор сети, установленной по умолчанию для данной ресурсной группы. Экземпляры compute, создаваемые в данной ресурсной группе, по умолчанию будут иметь подключение к данной сети, если при их создании явно не указано иное.
Для def_net_type = "EXTNET" в этом параметре указан идентификатор внешней сети. Для def_net_type = "PRIVATE" - идентификатор ViNS.
description string Текстовое описание данной ресурсной группы.
gid int Идентификатор grid, которому будет принадлежать создаваемая ресурсная группа.
id int Идентификатор данной ресурсной группы.
name string Имя данной ресурсной группы. Обратите внимание, что имя ресурсной группы является уникальным только в рамках одного и того же аккаунта ("account").
quota dict Квоты на объем ресурсов, установленные для данной ресурсной группы, с разбивкой по количеству CPU, объему RAM, объему дисковых ресурсов, количеству внешних IP адресов и т.п. Формат структуры:
* (int) cpu - лимит на суммарное потребление процессоров [шт] в рамках данной ресурсной группы;
* (int) ram - лимит на суммарное потребление ОЗУ [МБ] в рамках данной ресурсной группы;
* (int) disk - лимит на суммарное потребление дискового пространства [ГБ] в рамках данной ресурсной группы;
* (int) ext_ips - лимит на суммарное потребление внешних IP адресов [шт] в рамках данной ресурсной группы.
Значение -1 означает отсутствие ограничений по данному ресурсу.
* (int) gpu_units - лимит на суммарное количество GPU юнитов в рамках данной ресурсной группы ;
* (int) cu_d - лимит на максимальный размер диска, ГБ
rg_id int Идентификатор данной ресурсной группы. Дублирует значение параметра id.
guid int GUID
dirty bool Dirty
lock_status string Lock статус
milestones int Milestones
secret string Секрет
status string Статус resgroup
updated_by string Кем был сделан апдейт
updated_time int Время апдейта
vins []int Список id виртуальных сетей
vms []int Список id виртуальных машин
res_types []string Resource Types
cpu_allocation_parameter string Параметр выделения CPU
cpu_allocation_ratio float Отношение выделения CPU
uniq_pools []string Uniq pools

Описание структуры resources

Параметр Тип Описание
current Struct{} см. ниже Информация о текуших ресурсах
reserved Struct{} см. ниже Информация о зарезверированных аккаунтом ресурсах

Описание структуры current и reserved

Параметр Тип Описание
cpu int Количество CPU
disksize int Размер диска
extips int Внешние IPs
exttraffic int Внешний Traffic
gpu int Количество GPU
ram int Количество RAM
seps []Struct{} см . ниже Информация о seps

Описание структуры seps

Параметр Тип Описание
sep_id int ID SEP. SEP это способ идентифицировать конкретную систему хранения, на ресурсах которой размещён данный диск
data_name string Имя пула информации внутри SEP'а
disk_size float Количество занятого места
disk_size_max float Размер диска

Пример использования

В нижеприведённом примере с помощью resource функции dynamix_resgroup создаётся ресурсная группа со следующими характеристиками:

  • Имя создаваемой ресурсной группы - "MyNewRG"
  • Идентификатор аккаунта-владельца ("account") - 100
  • Квоты на объёмы ресурсов отсутствуют (нет ограничений).
resource "dynamix_resgroup" "rg" {
  #имя ресурсной группы
  #обязательный параметр
  #тип - строка
  #используется при создании и обновлении
  name = "testing_rg_1"

  #id аккаунта которому будет принадлежать ресурсная группа
  #обязательный параметр
  #тип - целое число
  #используется при создании
  account_id = 123

  #id платформы
  #обязательный параметр
  #тип - целое число
  #используется при создании
  gid = 1234

  #тип сети по умолчанию для этой ресурсной группы
  #опциональный параметр
  #виртуальные машины, созданные в этой RG, по умолчанию будут подключены к этой сети
  #допустимые значения: PRIVATE, PUBLIC, NONE
  #по умолчанию - PRIVATE
  #тип - строка
  #используется при создании
  #def_net_type = "NONE"

  #ip cidr частной сети, если сеть по умолчанию PRIVATE
  #опциональный параметр
  #тип - строка
  #используется при создании
  #ipcidr = "1.1.1.1"

  #id внешней сети
  #опциональный параметр
  #тип - целое число
  #используется при создании
  #ext_net_id = 123

  #ip внешней сети
  #опциональный параметр
  #тип - строка
  #используется при создании
  #ext_ip = "1.1.1.1"

  #описание
  #опциональный параметр
  #тип - строка
  #используется при создании и обновлении
  #description = "qwerty"

  #флаг доступности ресурсной группы
  #опциональный параметр
  #тип - булев
  #используется при создании и обновлении
  #по умолчанию - true
  #enable = true

  #имя пользователя
  #опциональный параметр
  #тип - строка
  #используется при создании
  #owner = "name_user"

  #блок для предоставления прав на ресурсную группу
  #опциональный параметр
  #тип - блок прав доступа
  #используется при создании и обновлении
  #access = [{
    #имя юзера предоставляемому права
    #обязательный параметр при использовании блока
    #тип - строка
    #user = "kasim_baybikov_1@decs3o"

    #тип прав
    #опциональный параметр
    #тип - строка
    #right = "RCX"
  #}]

  #установить сеть по умолчанию
  #опциональный параметр
  #тип - блок сетей
  #используется при создании и обновлении
  #def_net = {
    #тип сети
    #обязательный параметр при использовании блока
    #тип - строка
    #net_type = "PUBLIC"

    #id сети
    #опциональный параметр
    #идентификатор сегмента сети. Если net_type — PUBLIC, а net_id — 0, 
    #то будет выбран сегмент внешней сети по умолчанию. Если net_type 
    #имеет значение PRIVATE и net_id=0, будет выбран первый vins, определенный для этой ресурсной группы 
    #в противном случае net_id идентифицирует либо существующий сегмент внешней сети, либо vins
    #тип - целое число
    #net_id = 1234
  #}

  #лимиты ресурсов для ресурсной группы
  #опциональный параметр
  #тип - блок конфигураций
  #используется при создании и обновлении
  #quota = {
    #максимальное количество ядер процессора
    #опциональный параметр
    #по умолчанию: -1
    #тип - целое число
    #cpu = 5

    #максимальный размер памяти, в МБ
    #опциональный параметр
    #по умолчанию: -1
    #тип - целое число
    #ram = 1024

    #максимальный размер объединенных виртуальных дисков в ГБ
    #опциональный параметр
    #по умолчанию: -1
    #тип - целое число
    #disk = 180

    #максимальное количество отправленных/полученных сетевых узлов
    #опциональный параметр
    #по умолчанию: -1
    #тип - целое число
    #ext_traffic = 21

    #максимальное количество назначенных общедоступных IP-адресов
    #опциональный параметр
    #по умолчанию: -1
    #тип - целое число
    #ext_ips = 29
    #}

  #список названий pools
  #опциональный параметр
  #игнорируется при создании ресурса, применяется только при обновлении
  #тип - массив строк
  #используется при обновлении
  #uniq_pools = ["sep1_poolName1", "sep2_poolName2"]

  #флаг для принудительного удаления ресурсной группы
  #опциональный параметр
  #тип - булев
  #используется при удалении
  #по умолчанию - true
  #force = true

  #флаг для удаления ресурсной группы, без возможности восстановления
  #опциональный параметр
  #тип - булев
  #используется при удалении
  #по умолчанию - true
  #permanently = true

  #восстановление группы после удаления
  #опциональный параметр
  #используется при редактировании ресурса
  #тип - булев
  #используется при обновлении
  #по умолчанию - true
  #restore = true

}

Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DYNAMIX см. соответствующий раздел).

После успешного завершения такого вызова resource функции dynamix_resgroup в переменной dynamix_resgroup.rg будут сохранены возвращаемые значения. В частности, для получения идентификатора ресурсной группы следует использовать конструкцию dynamix_resgroup.rg.id.