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.6.3/07.01.02-Resource_decort_re...

25 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 Тип сети, которая будет установлена по умолчанию для данной ресурсной группы. Может принимать одно из следующих значений:
* "PUBLIC" - создаваемые в данной ресурсной группе экземпляры compute по умолчанию будут подключаться во внешнюю сеть с идентификатором, который задаётся параметром ext_net_id
* "PRIVATE" - экземпляры compute по умолчанию будут подключаться в новый виртуальный сетевой сегмент (ViNS ), который платформа автоматически создаст для данной ресурсной группы.
* "NONE" - сеть по умолчанию не задана, экземпляры compute в данной ресурсной группе будут создаваться без сетевых подключений, если при их создании явно не указано иное.
description string Текстовое описание данной ресурсной группы.
Данный параметр не является обязательным, значение по умолчанию - пустая строка.
permanently bool Безвозвратное удаление ресурса. Используется при удалении
force bool Удаление ресурса, в случае если он к чему-то присоединен произойдет отсоединение его от других ресурсов и удаление
reason string Причина по которой ресурс удаляется
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
register_computes bool Параметр используется при создании rg
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"
reason string Причина

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

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

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

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

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

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

Параметр Тип Описание
acl Struct{} см. ниже Cписок Acces Control List
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.
def_net_type string Тип сети, установленной по умолчанию для данной ресурсной группы. Может принимать одно из следующих значений:
* EXTNET - подключение во внешнюю сеть с идентификатором def_net_id
* PRIVATE - подключение в виртуальный сетевой сегмент (ViNS ) с идентификатором def_net_id
* NONE - сеть по умолчанию не задана, экземпляры compute в данной ресурсной группе будут создаваться без сетевых подключений, если при их создании явно не указано иное.
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

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

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

Описание структуры 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
data_name string Имя пула информации внутри SEP'а
disk_size int Количество занятого места
disk_size_max 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
  #тип - строка
  def_net_type = "NONE"

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

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

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

  #причина выполнения
  #опциональный параметр
  #тип - строка
  reason = "TEST"

  #описание
  #опциональный параметр
  #тип - строка
  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

    #причина выполнения
    #опциональный параметр
    #тип - строка
    reason = "TEST"
  }

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

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

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

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

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

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

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

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

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

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