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.
wiki-terraform-provider-decort/4.9.1/07.01.02-Resource_decort_re...

28 KiB

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

Изменения в 3.5.2

  • Добавлено поле register_computes, которое используется при создании rg

Изменения в 3.5.0

  • Обновлено поведение ресруса, в случае изменения блока quota Если блок убирается, то значения Лимитов становяться дефолтными
  • Добавлен опциональный блок access
  • Добавлен опциональный блок def_net
  • Добавлено опциональное поле enable
  • Добавлена обработка входных идентификаторов значений при создании и обновлении ресурса
  • В дальнейших версиях поля def_net_type, ext_ip, ext_net_id будут убраны и все взаисодействие с сетью ресурсной группы будет присходить с помощью блока def_net

Изменения в 3.4.0

  • В аргументы добавлено опциональное поле force
  • В аргументы добавлено опциональное поле permanently
  • В аргументы добавлено опциональное поле reason
  • В аргументы добавлено обязательное поле gid
  • В возвращаемые значения добавлено новое поле resources
  • В возвращаемые значения добавлено новое поле status
  • В возвращаемые значения добавлено новое поле vins
  • В возвращаемые значения добавлено новое поле vms

Аргументы

Resource функция decort_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 адресов и т.п
access []Struct см. ниже Пользователи которым выдется доступ к данной ресурсной группе
def_net Struct см. ниже Параметры сети ресурсной группы. Если используется, поле def_net_type игнорируется.
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 провайдера DECORT (см. подробности).

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

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

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

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

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

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

Параметр Тип Описание
explicit bool Явно ли указан доступ
guid string guid Ресурса
right string Права на ресурс
status string Статус ресурса
type string Тип ресурса
user_group_id string ID user group

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

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

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

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

  • Имя создаваемой ресурсной группы - "MyNewRG"
  • Идентификатор аккаунта-владельца ("account") - 100
  • Квоты на объёмы ресурсов отсутствуют (нет ограничений).
resource "decort_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"

  #флаг доступности ресурсной группы
  #опциональный параметр
  #тип - булев
  #используется при создании и обновлении
  #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"]

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

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

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

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

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