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.

222 lines
15 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.

# Модуль decort_rg
## Обзор модуля decort_rg
Модуль decort_rg предназначен для создания, редактирования и удаления ресурсных групп (Resource Group, RG) в облачной платформе DECORT, а также для получения информации об уже существующей ресурсной группе. Модуль decort_rg позволяет:
- создавать ресурсные группы
- удалять ресурсные группы (в корзину или безвозвратно, с удалением содержимого или без)
- восстанавливать ресурсные группы из корзины
- включать/отключать ресурсные группы
- запрашивать информацию об уже существующих ресурсных группах
- изменять ресурсные группы:
- переименовывать
- настраивать квоты
- задавать стандартную сеть
- настраивать права доступа для пользователей
- изменять доступные пулы СХД
## Параметры модуля decort_rg
Ниже приведен список параметров для модуля **decort_rg** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание |
|----------|--------------------------|----------|
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то account_name игнорируется. |
| account_name | (string) | Имя аккаунта, в рамках которого создаётся или уже существует данная ресурсная группа. Должно быть задано либо имя, либо идентификатор учётной записи (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
| access | (dict) | Параметр, позволяющий выдать, забрать или изменить права у пользователя в ресурсной группе. |
| description | (string) | Текстовое описание ресурсной группы. Данный параметр является опциональным и учитывается только при создании ресурсной группы, а при всех прочих операциях игнорируется. |
| def_netId | (int) | Уникальный целочисленный идентификатор внутренней или внешней сети. Используется для изменения сети по умолчанию в ресурсной группе. |
| def_netType | (string) <br>Значения:<br>`PRIVATE`<br>`PUBLIC`<br>`NONE`<br>Default: `PRIVATE` | Тип сети по умолчанию в ресурсной группе. Используется при создании ресурсной группы, а также при изменении. |
| extNetId | (int) | Уникальный целочисленный идентификатор внешней сети.<br>Если `def_netType: PRIVATE`, то указывает какую внешнюю сеть подключить к создаваемой внутренней сети, которая будет задана как сеть по умолчанию для создаваемой РГ.<br>Если `def_netType: PUBLIC`, то указывает какую внешнюю сеть задать как сеть по умолчанию для создаваемой РГ. |
| extNetIp | (string) | IP-адрес для внешней сети, которая задана в параметре `extNetId`. |
| ipcidr | (string) | IP-адрес внутренней сети. Используется при создании ресурсной группы, чтобы задать IP-адрес сети для создаваемой внутренней сети, которая создастся вместе с ресурсной группой. Используется при параметре `def_netType` в значении `PRIVATE`. |
| owner | (string) | Владелец ресурсной группы. Задаётся при создании ресурсной группы, не обязателен. Если оставить пустое значение - владельцем ресурсной группы будет пользователь, создавший ресурсную группу. |
| permanently | (bool)<br>Default: `false` | Параметр, использующийся при удалении ресурсной группы. При значении `true` - ресурсная группа удалится безвозвратно, а при `false` - попадёт в корзину. |
| quotas | (dict) | Предназначено для задания или изменения квоты на ресурсы в составе данной ресурсной группы. |
| recursive_deletion | (bool)<br>Default: `false` | Рекурсивное удаление.<br>Если `true`, то при удалении РГ будет удалено всё её содержимое.<br>Если `false`, то при удалении непустой РГ работа модуля завершится ошибкой. |
| rename | (string) | Новое имя ресурсной группы.<br>Возможно переименование только включенной ресурсной группы. |
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы. Является обязательным при изменении РГ если не заданы `rg_name` и `account_id`/`account_name` |
| rg_name | (string) | Имя ресурсной группы. Данный параметр является обязательным при создании. |
| sep_pools| (list) | Список словарей, описывающих доступные пулы СХД.<br>Ключи словаря:<br>&bull; `sep_id` (int) - идентификатор системы хранения данных.<br>&bull; `pool_names` (list) - список названий пулов системы хранения данных.<br>Чтобы очистить список доступных пулов, нужно указать пустой список `[]`.|
| state | Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>Default: `present` | Целевое состояние ресурсной группы. |
## Возвращаемые значения модуля decort_rg
Модуль decort_rg возвращает информацию о ресурсной группе в виде словаря facts со следующими ключами:
| Ключ | Тип данных | Описание |
|------|------------|----------|
| account_id | int | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная ресурсная группа. |
| gid | int | Идентификатор физического кластера (Grid ID), на базе которого развёрнута ресурсная группа. |
| id | int | Уникальный целочисленный идентификатор ресурсной группы. |
| name | string | Имя ресурсной группы. Обратите внимание, что это имя уникально только в рамках аккаунта, которому принадлежит данная ресурсная группа. |
| state | string | Текущее состояние ресурсной группы. |
| quota | dict | Текущие квоты ресурсной группы. |
| resTypes | list | Список типов ресурсов, разрешенных к созданию в данной ресурсной группе. |
| defNetId | int | Уникальный целочисленный идентификатор сети по умолчанию в данной ресурсной группе. |
| defNetType | string | Тип сети по умолчанию в данной ресурсной группе. |
| ViNS | list | Список идентификаторов внутренних сетей ресурсной группы. |
| computes | list | Список идентификаторов виртуальных машин ресурсной группы. |
| uniqPools | list | Список доступных пулов СХД. |
## Пример использования модуля decort_rg
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount.
```
- name: manage resource group
decort_rg:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
account_name: "MyAccount"
rg_name: "MyRG"
state: present
register: my_rg
delegate_to: localhost
```
В данном примере показано, как создать ресурсную группу по имени MyRG в аккаунте MyAccount, также задать квоты и выдать права на чтение пользователю MyUser.
```
- name: manage resource group
decort_rg:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
account_name: "MyAccount"
rg_name: "MyRG"
access:
action: "grant"
user: "MyUser"
right: "R"
quotas:
cpu: 16
ram: 16384
disk: 100
ext_ips: 20
net_transfer: 1000
state: present
register: my_rg
delegate_to: localhost
```
В данном примере показано, как выдать доступ на чтение и запись пользователю MyUser в ресурсной группе по имени MyRG в аккаунте MyAccount.
```
- name: manage resource group
decort_rg:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
account_name: "MyAccount"
rg_name: "MyRG"
access:
action: "grant"
user: "MyUser"
right: "RCX"
state: present
register: my_rg
delegate_to: localhost
```
В данном примере показано, как сменить квоту в ресурсной группе по имени MyRG в аккаунте MyAccount.
```
- name: manage resource group
decort_rg:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
account_name: "MyAccount"
rg_name: "MyRG"
quotas:
cpu: 16
ram: 16384
disk: 100
ext_ips: 20
net_transfer: 1000
state: present
register: my_rg
delegate_to: localhost
```
В данном примере показано, как изменить сеть по умолчанию в ресурсной группе по имени MyRG в аккаунте MyAccount.
```
- name: manage resource group
decort_rg:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
account_name: "MyAccount"
rg_name: "MyRG"
def_netType: "PRIVATE"
def_netId: 99
state: present
register: my_rg
delegate_to: localhost
```
В данном примере показано, как переименовать ресурсную группу по имени MyRG на новое имя "NewRg" в аккаунте MyAccount.
```
- name: manage resource group
decort_rg:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
account_name: "MyAccount"
rg_name: "MyRG"
rename: "NewRg"
rg_id: 27
state: present
register: my_rg
delegate_to: localhost
```
В данном примере результат работы модуля decort_rg записывается в переменную my_rg.
Модули DECORT, которым для работы требуется ресурсная группа, в качестве одного из параметров, как правило, принимают идентификатор `rg_id`. Так, например, используя модуль `decort_kvmvm` для создания виртуального сервера необходимо указать ресурсную группу, к которой будет принадлежать этот виртуальный сервер. Сделать это можно следующим образом:
```
<прочие детали опущены>
rg_id: "{{ my_rg.facts.id }}"
```
В данном примере показано, как изменить доступные пулы СХД в ресурсной группе по имени MyRG в аккаунте MyAccount.
```
- name: change available sep pools
decort_rg:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
account_name: "MyAccount"
rg_name: "MyRG"
sep_pools:
- sep_id: 1
pool_names:
- sep1_pool1
- sep1_pool2
- sep_id: 2
pool_names:
- sep2_pool1
state: present
register: my_rg
delegate_to: localhost
```