31 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 | ❌ | Восстановить ресурсную группу из корзины. |
| sdn_access_group_id | string | ❌ | Идентификатор группы доступа SDN. |
| storage_policy | []Struct см. ниже | ❌ | Политики хранения |
| storage_policy_ids | []int | Список id политик хранения |
Описание блока quota
| Аргумент | Тип | Обязательный | Описание |
|---|---|---|---|
| cpu | int | ❌ | лимит на суммарное потребление процессоров [шт] в рамках данной ресурсной группы |
| ram | int | ❌ | лимит на суммарное потребление ОЗУ [МБ] в рамках данной ресурсной группы |
| disk | int | ❌ | лимит на суммарное потребление дискового пространства [ГБ] в рамках данной ресурсной группы |
| ext_traffic | int | ❌ | лимит на суммарный трафик в рамках данной ресрсной группы |
| ext_ips | int | ❌ | лимит на суммарное потребление внешних IP адресов [шт] в рамках данной ресурсной группы |
Описание блока access
| Аргумент | Тип | Обязательный | Описание |
|---|---|---|---|
| user | string | ✔️ | Юзер которому предоставляется доступ |
| right | string | ✔️ | Права, которые будут выдаваться данному юзеру. Возможные значения: "R", "RCX" или "ARCXDU" |
Описание блока storage policy
| Аргумент | Тип | Обязательный | Описание |
|---|---|---|---|
| id | int | ✔️ | ID политики хранения |
| limit | int | ❌ | Лимит |
Описание блока 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 |
| created_by | string | Кем создан ресурс |
| created_time | int | Время создания ресурса |
| 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. |
| sdn_access_group_id | string | Идентификатор группы доступа SDN. |
| secret | string | Секрет |
| status | string | Статус resgroup |
| uniq_pools | []string | Uniq pools |
| updated_by | string | Кем был сделан апдейт |
| updated_time | int | Время апдейта |
| vins | []int | Список id виртуальных сетей |
| vms | []int | Список id виртуальных машин |
| storage_policy | []Struct см. ниже | Политики хранения |
| resource_limits | struct см. ниже | Квоты на объем ресурсов, устанавливаемые для данной ресурсной группы, с разбивкой по количеству CPU, объему RAM, объему дисковых ресурсов, количеству внешних IP адресов и т.п. |
Описание структуры 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_limits
| Параметр | Тип | Описание |
|---|---|---|
| cu_c | float | Количество ядер CPU |
| cu_d | float | Размер диска, вычисляемый параметр |
| cu_dm | float | Использованный размер хранилища виртуального диска |
| cu_i | float | Количество публичных IP адресов |
| cu_m | float | размер RAM |
| cu_np | float | Хранилище траффика |
| gpu_units | float | количество GPU ядер, вычисляемый параметр |
| storage_policy | []Struct см. ниже | Политики хранения |
Описание структуры storage policy
| Аргумент | Тип | Обязательный | Описание |
|---|---|---|---|
| id | int | ID политики хранения | |
| limit | 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
#идентификатор группы доступа SDN
#опциональный параметр
#тип - строка
#используется при создании
#sdn_access_group_id = "64e039f4-3705-4feb-84ff-a59fbdb1ebfe"
#добавление/удаление политик хранения
#опциональный параметр
#тип - блок
#используется при создании и обновлении
#storage_policy {
#id политики хранения
#обязательный параметр
#тип - целое число
#id = 8
#лимит ресурсов хранения в ГБ
#опциональный параметр
#тип - целое число
#значение "-1", если не ограничено
#limit = 111
#}
}
Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий раздел).
После успешного завершения такого вызова resource функции decort_resgroup в переменной decort_resgroup.rg будут сохранены возвращаемые значения. В частности, для получения идентификатора ресурсной группы следует использовать конструкцию decort_resgroup.rg.id.