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.

292 lines
23 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

_Resource_ функция **dynamix_resgroup** служит для управления ресурсными группами на облачной платформе DYNAMIX.
## Аргументы
_Resource_ функция **dynamix_resgroup** принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| account_id | int | :heavy_check_mark: | Идентификатор аккаунта (aka "account"), которому будет принадлежать создаваемая ресурсная группа. |
| gid | int | :heavy_check_mark: | Идентификатор grid, которому будет принадлежать создаваемая ресурсная группа. |
| name | string | :heavy_check_mark: | Имя ресурсной группы. Должно быть уникальным в рамках одного и того же аккаунта ("account"), не может быть пустым. |
| compute_features | []string | :x: | Доступ к дополнительным функциям управления ВМ |
| def_net_type | string | :x: | Тип сети, которая будет установлена по умолчанию для данной ресурсной группы. <br> Данный параметр используется только при создании resourse. Во всех остальных случаях необходимо пользоваться параметром def_net. <br>Может принимать одно из следующих значений:<br> * "PUBLIC" - создаваемые в данной ресурсной группе экземпляры _compute_ по умолчанию будут подключаться во внешнюю сеть с идентификатором, который задаётся параметром `ext_net_id`<br> * "PRIVATE" - экземпляры _compute_ по умолчанию будут подключаться в новый виртуальный сетевой сегмент (ViNS ), который платформа автоматически создаст для данной ресурсной группы.<br> * "NONE" - сеть по умолчанию не задана, экземпляры _compute_ в данной ресурсной группе будут создаваться без сетевых подключений, если при их создании явно не указано иное. <br>По умолчанию: PRIVATE |
| description | string | :x: | Текстовое описание данной ресурсной группы.<br/>Данный параметр не является обязательным, значение по умолчанию - пустая строка. |
| permanently | bool | :x: | Безвозвратное удаление ресурса. Используется при удалении |
| force | bool | :x: | Удаление ресурса, в случае если он к чему-то присоединен произойдет отсоединение его от других ресурсов и удаление |
| enable | bool | :x: | Поле флаг, отвечающее за enable/disable ресурса |
| ext_ip | string | :x: | IP адрес из диапазона, принадлежащего внешней сети, который будет присвоен подключению ViNS во внешнюю сеть в случае, когда `def_net_type = "PRIVATE"` и ненулевом `ext_net_id`. При других значениях `def_net_type` данный параметр игнорируется.<br/>Если данный параметр не указан явно, то платформа автоматически выберет свободный IP адрес.<br/>Если заданный `ext_ip` уже используется, платформа вернёт ошибку. |
| ext_net_id | int | :x: | Идентификатор внешней сети, в которую будет подключён ViNS, автоматически создаваемый платформой для данной ресурсной группы в случае, когда `def_net_type = "PRIVATE"`. При других значениях `def_net_type` данный параметр игнорируется.<br/>Если данный параметр не задан явно при `def_net_type = "PRIVATE"`, то платформа выберет первую из доступных данному пользователю внешних сетей. |
| ipcidr | string | :x: | Адрес сети внутри ViNS для случая `def_net_type = "PRIVATE"`<br/>Если данный параметр явно не задан, то платформа назначит адрес сети автоматически. |
| quota | Struct [см. ниже](#описание-структуры-quota) | :x: | Квоты на объем ресурсов, устанавливаемые для данной ресурсной группы, с разбивкой по количеству CPU, объему RAM, объему дисковых ресурсов, количеству внешних IP адресов и т.п. Максмальное количество: 1 |
| access | []Struct [см. ниже](#описание-структуры-access) | :x: | Юзеры которым выдется доступ к данной ресурсной группе |
| def_net | Struct [см. ниже](#описание-структуры-def_net) | :x: | Параметры сети ресурсной группы. Максмальное количество: 1 |
| uniq_pools | []string | :x: | Список пулов, применяется только при update, при создании resource игнорируется. Например, ["sep1_poolName1", "sep2_poolName2"] |
| owner | string | :x: | Имя пользователя владелец этой РГ. Оставьте поле пустым, чтобы назначить текущего пользователя владельцем. |
| restore | bool | :x: | Восстановить ресурсную из корзины. |
### Описание структуры quota
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| cpu | int | :x: | лимит на суммарное потребление процессоров [шт] в рамках данной ресурсной группы |
| ram | int | :x: | лимит на суммарное потребление ОЗУ [МБ] в рамках данной ресурсной группы |
| disk | int | :x: | лимит на суммарное потребление дискового пространства [ГБ] в рамках данной ресурсной группы |
| ext_traffic | int | :x: | лимит на суммарный трафик в рамках данной ресрсной группы |
| ext_ips | int | :x: | лимит на суммарное потребление внешних IP адресов [шт] в рамках данной ресурсной группы |
### Описание структуры access
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| user | string | :heavy_check_mark: | Юзер которому предоставляется доступ |
| right | string | :heavy_check_mark: | Права, которые будут выдаваться данному юзеру. Возможные значения: "R", "RCX" или "ARCXDU" |
### Описание структуры def_net
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| net_type | string | :heavy_check_mark: | Тип сети, которая будет присоединена к ресурсной группе. Возможные значения: "PRIVATE" - vins, "PUBLIC"- external network |
| net_id | int | :x: | Идентификатор сети. Если не указан, будет задан тот, к которому есть доступ по умолчанию |
Для создания ресурсной группы пользователь облачной платформы, от лица которого происходит обращение к данной функции, должен иметь как минимум доступ на запись к указанному аккаунту. В противном случае возникнет ошибка доступа.
Пользователь облачной платформы задается на стадии инициализации Terraform провайдера DYNAMIX (см. [подробности](https://repository.basistech.ru/BASIS/wiki-terraform-provider-dynamix/src/branch/main/1.3.0/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
## Возвращаемые значения
В случае успешного выполнения _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{} [см. ниже](#описание-структуры-resources) | Информация о занимаемых ресурсах |
| def_net_id | int | Уникальный идентификатор сети, установленной по умолчанию для данной ресурсной группы. Экземпляры _compute_, создаваемые в данной ресурсной группе, по умолчанию будут иметь подключение к данной сети, если при их создании явно не указано иное.<br/>Для `def_net_type = "EXTNET" в этом параметре указан идентификатор внешней сети. Для `def_net_type = "PRIVATE" - идентификатор ViNS. |
| description | string | Текстовое описание данной ресурсной группы. |
| gid | int | Идентификатор grid, которому будет принадлежать создаваемая ресурсная группа. |
| id | int | Идентификатор данной ресурсной группы. |
| name | string | Имя данной ресурсной группы. Обратите внимание, что имя ресурсной группы является уникальным только в рамках одного и того же аккаунта ("account"). |
| quota | dict | Квоты на объем ресурсов, установленные для данной ресурсной группы, с разбивкой по количеству CPU, объему RAM, объему дисковых ресурсов, количеству внешних IP адресов и т.п. Формат структуры:<br> * (int) `cpu` - лимит на суммарное потребление процессоров [шт] в рамках данной ресурсной группы;<br> * (int) `ram` - лимит на суммарное потребление ОЗУ [МБ] в рамках данной ресурсной группы;<br> * (int) `disk` - лимит на суммарное потребление дискового пространства [ГБ] в рамках данной ресурсной группы;<br> * (int) `ext_ips` - лимит на суммарное потребление внешних IP адресов [шт] в рамках данной ресурсной группы.<br> Значение -1 означает отсутствие ограничений по данному ресурсу. <br> * (int) `gpu_units` - лимит на суммарное количество GPU юнитов в рамках данной ресурсной группы ;<br> * (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{} [см. ниже](#описание-структуры-current-и-reserved) | Информация о текуших ресурсах |
| reserved | Struct{} [см. ниже](#описание-структуры-current-и-reserved) | Информация о зарезверированных аккаунтом ресурсах |
### Описание структуры current и reserved
| Параметр | Тип | Описание |
| --- | --- | --- |
| cpu | int | Количество CPU |
| disksize | int | Размер диска |
| extips | int | Внешние IPs |
| exttraffic | int | Внешний Traffic |
| gpu | int | Количество GPU |
| ram | int | Количество RAM |
| seps | []Struct{} [см . ниже](#описание-структуры-seps) | Информация о 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
* Квоты на объёмы ресурсов отсутствуют (нет ограничений).
```terraform
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 см. соответствующий [раздел](https://repository.basistech.ru/BASIS/wiki-terraform-provider-dynamix/src/branch/main/1.3.0/04.02-Инициализация-Terraform-провайдера-DYNAMIX.md)).
После успешного завершения такого вызова _resource_ функции **dynamix_resgroup** в переменной `dynamix_resgroup.rg` будут сохранены возвращаемые значения. В частности, для получения идентификатора ресурсной группы следует использовать конструкцию `dynamix_resgroup.rg.id`.