main
sskarimov 4 weeks ago
parent bb91037d00
commit 139f6fb703

@ -0,0 +1,29 @@
1. [Введение](./введение.md)
- [Введение](./введение.md#введение)
- [Системные требования](./введение.md#системные-требования)
- [Подготовка к работе](./введение.md#подготовка-к-работе)
- [Авторизация](./введение.md#авторизация)
- [Общие параметры модулей для авторизации](./введение.md#общие-параметры-модулей-для-авторизации)
- [Пример авторизации с помощью DECS3O](./введение.md#пример-авторизации-с-помощью-decs3o)
- [Пример авторизации с помощью BVS](./введение.md#пример-авторизации-с-помощью-bvs)
- [Пример авторизации с помощью JSON Web Token](./введение.md#пример-авторизации-с-помощью-json-web-token)
2. Ansible модули DECORT:
- [Модуль decort_kvmvm](./модуль-decort_kvmvm.md) - управление виртуальными машинами
- [Модуль decort_osimage](./модуль-decort_osimage.md) - управление образами
- [Модуль decort_disk](./модуль-decort_disk.md) - управление дисками
- [Модуль decort_pfw](./модуль-decort_pfw.md) - управление правилами переадресации портов
- [Модуль decort_rg](./модуль-decort_rg.md) - управление ресурсными группами
- [Модуль decort_vins](./модуль-decort_vins.md) - управление внутренними сетями
- [Модуль decort_jwt](./модуль-decort_jwt.md) - получение авторизационного токена
- [Модуль decort_bservice](./модуль-decort_bservice.md) - управление базовыми службами
- [Модуль decort_group](./модуль-decort_group.md)- управление группами базовой службы
- [Модуль decort_k8s](./модуль-decort_k8s.md) - управление кластерами Kubernetes
- [Модуль decort_lb](./модуль-decort_lb.md) - управление балансировщиками нагрузки
- [Модуль decort_account_info](./модуль-decort_account_info.md) - получение информации об аккаунте
- [Модуль decort_account](./модуль-decort_account.md) - управление аккаунтами
- [Модуль decort_user_info](./модуль-decort_user_info.md) - получение информации о пользователе
- [Модуль decort_vm_snapshot](./модуль-decort_vm_snapshot.md) - управление снимками виртуальной машины
- [Модуль decort_zone](./модуль-decort_zone.md) - получение информации о зоне
- [Модуль decort_trunk](./модуль-decort_trunk.md) - получение информации о транковом порте
- [Модуль decort_storage_policy](./модуль-decort_storage_policy.md) - получение информации о политике хранения
- [Модуль decort_security_group](./модуль-decort_security_group.md) - управление группами безопасности

@ -0,0 +1,248 @@
# Модули Ansible для управления облачными ресурсами в платформе DECORT
## Введение
Настоящая документация содержит руководство пользователя по библиотеке модулей decort для Ansible. С помощью этих модулей Вы сможете управлять созданием и конфигурированием облачных ресурсов в платформе DECORT (Digital Energy Cloud Orchestration Technology).
По каждому модулю есть своя документация, в которой вы можете найти список доступных действий, подробную информацию о входных параметрах и возвращаемых данных, а также примеры использования.
## Системные требования
Убедитесь, что Ваша система соответствует требованиям для работы модуля DECORT.
Системные требования для работы модуля:
- Интерпретатор Python 3.12
- необходимые библиотеки Python указаны в файле **requirements.txt** корневой папки проекта
## Подготовка к работе
Для начала работы необходимо, чтобы Ansible было известно местоположение файлов модулей, а также настроить удобный для визуального восприятия формат вывода результата работы модулей. Для этого необходимо в рабочей директории, из которой будет запускаться Ansible, разместить файл ansible.cfg:
```
[defaults]
library=./library ; Путь к директории library
module_utils=./module_utils ; Путь к директории module_utils
callback_result_format=yaml ; Настройка удобного формата вывода результата работы модулей
```
## Авторизация
### Общие параметры модулей для авторизации
<table>
<tr>
<th colspan="6">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="6">
app_id
</td>
<td>
(str)
</td>
<td>
Идентификатор приложения, использующийся для получения токена в режимах
<code>authenticator: bvs</code> или <code>authenticator: decs3o</code>.
Данный параметр является обязательным для указанных режимов. Если
параметр не задан в playbook, модуль будет использовать значение
переменной окружения <code>DECORT_APP_ID</code>.
</td>
</tr>
<tr>
<td colspan="6">
app_secret
</td>
<td>
(str)
</td>
<td>
Секретный ключ приложения, использующийся для получения токена в режимах
<code>authenticator: bvs</code> или <code>authenticator: decs3o</code>.
Данный параметр является обязательным для указанных режимов.
Так как он содержит секретную информацию, то его не рекомендуется
задавать непосредственно в playbook. Если параметр не задан в playbook,
то модуль будет использовать значение переменной окружения
<code>DECORT_APP_SECRET</code>.
</td>
</tr>
<tr>
<td colspan="6">
authenticator
</td>
<td>
(str)
<br>Значения:
<br/><code>bvs</code>
<br/><code>decs3o</code>
<br/><code>oauth2</code>
<br/><code>jwt</code>
<br>Default: <code>decs3o</code>
</td>
<td>
Режим аутентификации для получения токена.
Значение <code>oauth2</code> является устаревшим и равнозначным
<code>decs3o</code>.
</td>
</tr>
<tr>
<td colspan="6">
controller_url
</td>
<td>
(str)
</td>
<td>
URL контроллера, соответствующего экземпляру облачной платформы
DECORT. Данный параметр является обязательным.
</td>
</tr>
<tr>
<td colspan="6">
domain
</td>
<td>
(str)
</td>
<td>
Домен BVS, использующийся для получения токена в режиме
<code>authenticator: bvs</code>. Данный параметр является
обязательным для указанного режима. Если параметр не задан в playbook,
модуль будет использовать значение переменной окружения
<code>DECORT_DOMAIN</code>.
</td>
</tr>
<tr>
<td colspan="6">
jwt
</td>
<td>
(str)
</td>
<td>
JSON Web Token (JWT), который будет использоваться для подключения
к контроллеру облачной платформы DECORT в режиме
<code>authenticator: jwt</code>. Данный параметр является
обязательным для указанного режима. Так как он содержит
потенциально секретную информацию, а сам JWT, как правило,
имеет ограниченное время жизни, то его не рекомендуется задавать
непосредственно в playbook. Если этот параметр не определен в
playbook, то модуль будет использовать значение переменной
окружения <code>DECORT_JWT</code>.
</td>
</tr>
<tr>
<td colspan="6">
oauth2_url
</td>
<td>
(str)
</td>
<td>
URL авторизационного сервера, работающего по протоколу Oauth2,
который должен использоваться в режимах
<code>authenticator: bvs</code>
или <code>authenticator: decs3o</code>. Данный параметр является
обязательным для указанных режимов. Если параметр не задан в
playbook, модуль будет использовать значение переменной
окружения <code>DECORT_OAUTH2_URL</code>.
</td>
</tr>
<tr>
<td colspan="6">
password
</td>
<td>
(str)
</td>
<td>
Пароль пользователя, который должен использоваться в режиме
<code>authenticator: bvs</code>. Данный параметр является
обязательным для указанного режима. Так как он содержит секретную
информацию, то его не рекомендуется задавать непосредственно
в playbook. Если параметр не задан в playbook, модуль будет
использовать значение переменной окружения
<code>DECORT_PASSWORD</code>.
</td>
</tr>
<tr>
<td colspan="6">
username
</td>
<td>
(str)
</td>
<td>
Логин пользователя, который должен использоваться в режиме
<code>authenticator: bvs</code>. Данный параметр является
обязательным для указанного режима. Если параметр не задан в playbook,
модуль будет использовать значение переменной окружения
<code>DECORT_USERNAME</code>.
</td>
</tr>
<tr>
<td colspan="6">
verify_ssl
</td>
<td>
(bool)
<br>Default: <code>true</code>
</td>
<td>
Позволяет отключить проверку SSL сертификатов при выполнении API
вызовов в адрес контроллера облачной инфраструктуры, например,
при работе с изолированной облачной инфраструктурой, использующей
самоподписанные сертификаты. Применяйте данный параметр с
осторожностью, предпочтительно в защищенных средах.
</td>
</tr>
</table>
### Пример авторизации с помощью DECS3O
```
- name: Example
hosts: localhost
tasks:
- name: DECS3O auth
decort_module_name:
# Специфичные для модулей параметры упущены
# Пример демонстрирует только параметры для авторизации
app_id: "{{ app_id }}"
app_secret: "{{ app_secret }}"
authenticator: decs3o
controller_url: https://dynamix.local
oauth2_url: https://sso-dynamix.local
```
### Пример авторизации с помощью BVS
```
- name: Example
hosts: localhost
tasks:
- name: BVS auth
decort_module_name:
# Специфичные для модулей параметры упущены
# Пример демонстрирует только параметры для авторизации
app_id: "{{ app_id }}"
app_secret: "{{ app_secret }}"
authenticator: bvs
controller_url: https://dynamix.local
oauth2_url: https://bvs.local
domain: dynamix
username: "{{ username }}"
password: "{{ password }}"
```
### Пример авторизации с помощью JSON Web Token
```
- name: Example
hosts: localhost
tasks:
- name: Auth with JWT
decort_module_name:
# Специфичные для модулей параметры упущены
# Пример демонстрирует только параметры для авторизации
authenticator: jwt
controller_url: "{{ controller_url }}"
jwt: "{{ jwt }}"
```

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,84 @@
# Модуль decort_bservice
## Обзор модуля decort_bservice
Базовая служба (Basic Service) это несколько групп виртуальных серверов (compute), создаваемых и управляемых как единое целое.
Все compute(s) в группе имеют одни и те же характеристики (cpu/ram/boot disk size/OS image + сетевые подключения). Для разных групп эти характеристики могут быть разными.
Группы в составе Basic Service могут иметь отношения parent-child с другими группами. Наличие таких отношений определяет последовательность запуска групп ("сначала parents").
На основе ресурсов, предоставляемых и управляемых через Basic Service, могут создаваться другие сервисы.
`Для взаимодействия с группами виртуальных серверов используется модуль decort_group.`
Модуль decort_bservice предназначен для управления базовыми службами, в которых находятся группы виртуальных серверов.
Данный модуль позволяет:
- Создавать Basic Service
- Удалять Basic Service (безвозвратно).
- Включать/выключать/запускать/останавливать Basic Service
- Запускать Basic Service
- Изменять зону
- Запрашивать информацию о Basic Service.
## Параметры модуля decort_bservice
Ниже приведен список параметров для модуля **decort_bservice** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|account_name | (string) | Имя аккаунта, которому принадлежит ресурсная группа. При идентификации базовой службы и ресурсной группы по именам (см. параметры `name` и `rg_name`) должен быть задан либо идентификатор (см. `account_id`), либо имя аккаунта. Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
| state | (str)<br>Значения:<br>`absent`<br>`disabled`<br>`enabled`<br>`present`<br>`started`<br>`stopped`| Целевое состояние базовой службы.<br>`absent` - безвозвратно удалена.<br>`disabled` - выключена. Если включена, то будет выключена. Если удалена в корзину, то будет восстановлена из корзины и выключена.<br>`enabled` - включена. Если выключена, то будет включена. Если удалена в корзину, то будет восстановлена из корзины и включена.<br>`present` - существует и не удалена. Если удалена в корзину, то будет восстановлена из корзины.<br>`started` - запущена. Если остановлена, то будет запущена. Если удалена в корзину, то будет восстановлена из корзины и запущена.<br>`stopped` - остановлена. Если запущена, то будет остановлена. Если удалена в корзину, то будет восстановлена из корзины и остановлена.<br>Значение по умолчанию при создании: <code>present</code>|
| name | (string) | Имя базовой службы. Данный параметр является обязательным при создании базовой службы и при изменении если не задан `id`. |
| sshuser | (string) | Имя пользователя, который будет создан на всех виртуальных серверах базовой службы. Используется в паре с `sshkey`. |
| sshkey | (string) | SSH ключ, который будет загружен на все виртуальные сервера базовой службы. Используется в паре с `sshuser`. |
| id | (int) | Уникальный целочисленный идентификатор базовой службы. Используется для поиска, изменения и удаления базовой службы. |
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы базовой службы. |
| rg_name | (string) | Имя ресурсной группы базовой службы. |
| zone_id | (int) | Идентификатор зоны. |
## Возвращаемые значения модуля decort_bservice
Модуль decort_bservice возвращает информацию о базовой службе в виде словаря facts со следующими ключами:
|Ключ | Тип данных | Описание|
| ------ | ------ | ------ |
|id | int | Уникальный целочисленный идентификатор базовой службы.|
|name | string | Имя базовой службы.|
| techStatus | string | Технический статус базовой службы. |
|state | string | Статус базовой службы.|
| rg_id | int | Уникальный целочисленный идентификатор ресурсной группы, в которой находится базовая служба.|
| account_id | int | Уникальный целочисленный идентификатор аккаунта, в котором находится ресурсная группа.|
| groups | list | Список словарей с информацией о группах базовой службы.|
| zone_id | int | Идентификатор зоны. |
## Пример использования модуля decort_bservice
Данный пример создаёт базовую службу с именем databases.
```
- name: Create Basic Service
decort_bservice:
authenticator: jwt
controller_url: "{{ controller_url }}"
jwt: "{{ auth_token }}"
name: databases
rg_id: "{{ rg_id }}"
register: db_bservice
```
Данный пример удаляет базовую службу с названием databases.
```
- name: Delete Basic Service
decort_bservice:
authenticator: jwt
controller_url: "{{ controller_url }}"
jwt: "{{ auth_token }}"
state: absent
name: databases
rg_id: "{{ rg_id }}"
register: db_bservice
```

@ -0,0 +1,821 @@
# Модуль decort_disk
## Обзор модуля decort_disk
Модуль **decort_disk** предназначен для выполнения следующих действий над дисками:
- создавать
- удалять (в корзину или безвозвратно)
- восстановливать из корзины
- изменять:
- имя
- размер
- лимиты ввода/вывода
- включать/отключать общий доступ
- политику хранения
## Параметры модуля decort_disk
Ниже приведен список параметров для модуля **decort_disk** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
<table>
<tr>
<th colspan="6">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="6">
<a name="account_id">
account_id
</a>
</td>
<td>
(int)
</td>
<td>
Уникальный целочисленный идентификатор аккаунта, которому принадлежит данный диск.
<br>При идентификации диска по имени (см. параметр <a href=#param_name>name</a>) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр <a href=#account_name>account_name</a>).
<br>Если одновременно заданы и <a href=#account_id>account_id</a>, и <a href=#account_name>account_name</a>, то <a href=#account_name>account_name</a> игнорируется.
</td>
</tr>
<tr>
<td colspan="6">
<a name="account_name">
account_name
</a>
</td>
<td>
(str)
</td>
<td>
Имя аккаунта, которому принадлежит данный диск.
<br>При идентификации диска по имени (см. параметр <a href=#param_name>name</a>) должно быть задано либо имя, либо идентификатор учётной записи (см. параметр <a href=#account_id>account_id</a>).
<br>Если одновременно заданы и <a href=#account_id>account_id</a>, и <a href=#account_name>account_name</a>, то <a href=#account_name>account_name</a> игнорируется.
</td>
</tr>
<tr>
<td colspan="6">
<a name="description">
description
</a>
</td>
<td>
(str)
</td>
<td>
Текстовое описание диска.
<br>Данный параметр является опциональным и учитывается только при создании диска, а при всех прочих операциях игнорируется.
</td>
</tr>
<tr>
<td colspan="6">
<a name="param_id">
id
</a>
</td>
<td>
(int)
</td>
<td>
Уникальный целочисленный идентификатор диска.
<br>Соответствующий диск должен существовать (таким образом, с помощью id нельзя создать новый диск, а только управлять уже имеющимися).
<br>Если задан данный параметр, то параметры <a href=#param_name>name</a>, <a href=#account_name>account_name</a> и <a href=#account_id>account_id</a> игнорируются.
</td>
</tr>
<tr>
<td colspan="6">
<a name="force_detach">
force_detach
</a>
</td>
<td>
(bool)
<br>Default: <code>false</code>
</td>
<td>
Задаёт поведение платформы при попытке удалить диск, подключённый к виртуальной машине.
<br>По умолчанию, удаление подключённых дисков не разрешается, и попытка удалить такой диск приведёт к аварийному завершению модуля.
<br>Чтобы изменить это поведение, явно установите <code>force_detach: true</code>.
</td>
</tr>
<tr>
<td colspan="6">
<a name="limitIO">
limitIO
</a>
</td>
<td>
(dict)
</td>
<td>
Параметр, позволяющий ограничить скорость ввода/вывода диска как в iops, так и в байтах в секунду.
<br>Обратите внимание, что параметры с total не задаются вместе с read/write.
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_bytes_sec
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_bytes_sec_max
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_iops_sec
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_iops_sec_max
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
size_iops_sec
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_bytes_sec
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_bytes_sec_max
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_iops_sec
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_iops_sec_max
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_bytes_sec
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_bytes_sec_max
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_iops_sec
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_iops_sec_max
</a>
</td>
<td>
(int)
</td>
<td>
</td>
</tr>
<tr>
<td colspan="6">
<a name="param_name">
name
</a>
</td>
<td>
(str)
</td>
<td>
Имя диска.
<br>Для идентификации диска требуется либо его <a href=#param_name>name</a> и информация об аккаунте (<a href=#account_id>account_id</a> или <a href=#account_name>account_name</a>), которому принадлежит диск, либо его <a href=#param_id>id</a>.
</td>
</tr>
<tr>
<td colspan="6">
<a name="permanently">
permanently
</a>
</td>
<td>
(bool)
<br>Default: <code>false</code>
</td>
<td>
Параметр, использующийся при удалении диска.
<br>При значении <code>true</code> - диск удалится навсегда, а при <code>false</code> - попадёт в корзину.
</td>
</tr>
<tr>
<td colspan="6">
<a name="place_with">
place_with
</a>
</td>
<td>
(int)
</td>
<td>
Идентификатор образа диска, из которого следует взять параметр <a href=#sep_id>sep_id</a>, чтобы разместить данный диск на той же системе хранения данных, что и указанный образ диска.
<br>Данный параметр является опциональным и используется только на стадии создания диска.
<br>Если задан <a href=#place_with>place_with</a>, то <a href=#sep_id>sep_id</a> игнорируется.
</td>
</tr>
<tr>
<td colspan="6">
<a name="pool">
pool
</a>
</td>
<td>
(str)
</td>
<td>
Название пула на системе хранения данных, в рамках которой следует создать данный диск.
<br>Этот параметр используется только на стадии создания диска и игнорируется при операциях над уже существующими дисками.
<br>Параметр является опциональным, если не задан, то платформа будет использовать пул, который сконфигурирован на целевой системе хранения как пул по умолчанию.
</td>
</tr>
<tr>
<td colspan="6">
<a name="reason">
reason
</a>
</td>
<td>
(str)
<br>Default: <code>Managed by Ansible decort_disk</code>
</td>
<td>
Причина, по которой было выполнено какое-либо действие.
<br>В данном модуле используется только при удалении диска.
</td>
</tr>
<tr>
<td colspan="6">
<a name="sep_id">
sep_id
</a>
</td>
<td>
(int)
</td>
<td>
Идентификатор системы хранения данных (Storage End-point).
<br>Данный параметр определяет систему хранения данных, на ресурсах которой создаётся диск.
<br>Используется только при создании диска и игнорируется при прочих операциях.
<br>Альтернативой данному параметру является <a href=#place_with>place_with</a>, позволяющий разместить диск на той же системе хранения, что и указанный образ диска, на базе которого создаётся виртуальная машина.
</td>
</tr>
<tr>
<td colspan="6">
<a name="shareable">
shareable
</a>
</td>
<td>
(bool)
<br>Default: <code>false</code>
</td>
<td>
Включение/отключение общего доступа к диску.
</td>
</tr>
<tr>
<td colspan="6">
<a name="size">
size
</a>
</td>
<td>
(int)
</td>
<td>
Размер диска в ГБ.
<br>Этот параметр является обязательным при создании диска.
<br>Если он задан для уже существующего диска, а текущий размер диска меньше заданного, то будет предпринята попытка увеличить размер диска.
<br>При прочих операциях данный параметр игнорируется.
</td>
</tr>
<tr>
<td colspan="6">
<a name="state">
state
</a>
</td>
<td>
(str)
<br>Значения:
<br><code>present</code>
<br><code>absent</code>
<br>Default: <code>present</code>
</td>
<td>
Целевое состояние диска.
</td>
</tr>
<tr>
<td colspan="6">
<a name="storage_policy_id">
storage_policy_id
</a>
</td>
<td>
(int)
</td>
<td>
Идентификатор политики хранения.
<br>Обязателен при создании.
</td>
</tr>
</table>
## Возвращаемые значения модуля decort_disk
Модуль **decort_disks** возвращает информацию о диске в виде словаря `facts` со следующими ключами:
<table>
<tr>
<th colspan="6">Ключ</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="6">
account_id
</td>
<td>
int
</td>
<td>
Уникальный целочисленный идентификатор аккаунта, которому принадлежит диск.
</td>
</tr>
<tr>
<td colspan="6">
computes
</td>
<td>
dict
</td>
<td>
Словарь, в котором ключ - идентификатор, а значение - имя виртуальной машины, к которой в настоящий момент подключён диск. Если диск не подключён, то возвращается пустой словарь.
</td>
</tr>
<tr>
<td colspan="6">
gid
</td>
<td>
int
</td>
<td>
Идентификатор физического кластера (Grid ID), на ресурсах которого создан диск.
</td>
</tr>
<tr>
<td colspan="6">
id
</td>
<td>
int
</td>
<td>
Уникальный целочисленный идентификатор данного диска.
</td>
</tr>
<tr>
<td colspan="6">
iotune
</td>
<td>
dict
</td>
<td>
Текущие ограничения ввода/вывода диска.
</td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_bytes_sec
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_bytes_sec_max
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_iops_sec
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
read_iops_sec_max
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
size_iops_sec
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_bytes_sec
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_bytes_sec_max
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_iops_sec
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
total_iops_sec_max
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_bytes_sec
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_bytes_sec_max
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_iops_sec
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td></td>
<td colspan="5">
write_iops_sec_max
</td>
<td>
int | null
</td>
<td></td>
</tr>
<tr>
<td colspan="6">
name
</td>
<td>
str
</td>
<td>
Имя диска. Обратите внимание, что имя диска не является уникальным с точки зрения системы хранения данных, на которой этот диск расположен.
</td>
</tr>
<tr>
<td colspan="6">
pool
</td>
<td>
str
</td>
<td>
Имя пула на системе хранения данных, в котором размещаются ресурсы диска.
</td>
</tr>
<tr>
<td colspan="6">
sep_id
</td>
<td>
int
</td>
<td>
Идентификатор системы хранения данных (Storage Endpoint), на которой размещаются ресурсы данного диска.
</td>
</tr>
<tr>
<td colspan="6">
size
</td>
<td>
int
</td>
<td>
Размер диска в ГБ.
</td>
</tr>
<tr>
<td colspan="6">
size_available
</td>
<td>
float
</td>
<td>
Размер незанятого пространства в ГБ.
</td>
</tr>
<tr>
<td colspan="6">
size_used
</td>
<td>
float
</td>
<td>
Размер используемого пространства в ГБ.
</td>
</tr>
<tr>
<td colspan="6">
state
</td>
<td>
str
</td>
<td>
Текущий статус диска.
</td>
</tr>
<tr>
<td colspan="6">
storage_policy_id
</td>
<td>
int
</td>
<td>
Идентификатор политики хранения.
</td>
</tr>
<tr>
<td colspan="6">
to_clean
</td>
<td>
bool
</td>
<td>
Диск помечен для очистки после удаления.
</td>
</tr>
</table>
## Пример использования модуля decort_disk
В данном примере создаётся диск размером 50ГБ (`size: 50`), на ресурсах системы хранения данных под номером 1 (`sep_id: 1`) в пуле "data01".
```
- name: Manage disk
decort_disk:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
name: "DataDisk01"
size: 50
account_name: "MyAccount"
sep_id: 1
description: "Disk example"
pool: data01
storage_policy_id: 1
register: my_data_disk01
```
В следующих двух примерах для существующего диска с именем "DataDisk01" задаются все доступные лимиты на операции ввода/вывода.
```
- name: Manage disk
decort_disk:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
name: "DataDisk01"
account_name: "MyAccount"
limitIO:
read_bytes_sec: 10000
write_bytes_sec: 5000
read_iops_sec и write_iops_sec
read_iops_sec: 2500
write_iops_sec: 1000
read_bytes_sec_max: 11000
write_bytes_sec_max: 6000
read_iops_sec_max: 3000
write_iops_sec_max: 1500
size_iops_sec: 1000
register: my_data_disk01
- name: Manage disk
decort_disk:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
name: "DataDisk01"
account_name: "MyAccount"
limitIO:
total_bytes_sec: 15000
total_iops_sec: 3500
total_bytes_sec_max: 17000
total_iops_sec_max: 4500
size_iops_sec: 1000
register: my_data_disk01
```
В данном примере выполняется восстановление удаленного диска с id 111 из корзины.
```
- name: Manage disk
decort_disk:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
id: 111
size: 10
register: my_data_disk01
```
В данном примере выполняется переименование диска с id 111 на новое имя "NewExampleDisk".
```
- name: Manage disk
decort_disk:
authenticator: oauth2
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
oauth2_url: "https://sso.digitalenergy.online"
controller_url: "https://cloud.digitalenergy.online"
id: 111
name: "NewExampleDisk"
size: 10
register: my_data_disk01
```
Здесь результат работы модуля decort_disk записывается в переменную my_data_disk01. Для получения идентификатора диска, например, при подключении его к виртуальной машине, следует воспользоваться показанной ниже конструкцией:
```
- name: Manage compute
decort_kvmvm:
<< для краткости фрагмент опущен >>
data_disks:
- "{{ my_data_disk01.facts.id }}"
<< для краткости фрагмент опущен >>
```

@ -0,0 +1,103 @@
# Модуль decort_group
## Обзор модуля decort_group
Модуль **decort_group** позволяет производить следующие действия над группами базовой службы:
- создать
- получить информацию
- запустить/остановить
- подключить/отключить сети (для существующей группы только внутренние сети)
- изменить
- имя
- объём загрузочного диска
- количество ВМ
- роль
- количество виртуальных процессоров
- объём ОЗУ
- чипсет
- удалить (безвозвратно)
## Параметры модуля decort_group
Ниже приведен список параметров для модуля **decort_group** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| account_id | (int) | Идентификатор аккаунта. При идентификации диска по имени (см. параметр `name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
| account_name | (string) | Имя аккаунта. При идентификации диска по имени (см. параметр `name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр `account_id`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется. |
| boot_disk | (int) | Обьём загрузочного диска. |
| bservice_id | (int) | Идентификатор базовой службы. Обязательный параметр. |
| chipset | (string)<br>Значения:<br>`Q35`<br>`i440fx` | Эмулируемый чипсет.<br>Значение по умолчанию при создании: `i440fx`. |
| count | (int) | Количество виртуальных машин. |
| cpu | (int) | Количество виртуальных процессоров. |
| driver | (string) | Драйвер. Не поддерживается изменение в существующей группе.<br>Значение по умолчанию при создании: `KVM_X86`. |
| id | (int) | Идентификатор группы. |
| image_id | (int) | Идентификатор образа. |
| name | (str) | Имя группы.<br>Используется для идентификации группы, если не задан параметр `id`, а также для переименования группы, если параметр `id` задан. |
| networks | (list) | Список словарей, описывающих сети, которые должны быть подключены.<br>Ключи словаря:<br>&bull; `type` (string) (обязательный) - тип сети; значения: `VINS` (внутренняя) или `EXTNET` (внешняя)<br>&bull; `id` (int) (обязательный) - идентификатор сети |
| ram | (int) | Объём оперативной памяти. |
| role | (string) | Тег роли. |
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`started`<br>`stopped`<br>`check`<br>Default: `present` |
| storage_policy_id | (int) | Идентификатор политики хранения. Обязателен при создании. Не поддерживается изменение в существующей группе. |
| timeoutStart | (int) | Время отсрочки запуска группы после создания в секундах. |
## Возвращаемые значения модуля decort_group
Модуль **decort_group** возвращает информацию о диске в виде словаря facts со следующими ключами:
|Ключ | Тип данных | Описание|
| ------ | ------ | ------ |
| account_id | int | Идентификатор аккаунта. |
| Computes | list | Список словарей, содержащих информацию о виртуальных машинах группы.<br>Ключи словаря:<br>&bull; `chipset` (str) - эмулируемый чипсет<br>&bull; `id` (int) - идентификатор ВМ<br>&bull; `ipAddresses` (list) - список IP-адресов ВМ<br>&bull; `name` (str) - имя ВМ<br>&bull; `osUsers` (list) - список словарей, содержащих учётные данные пользователей ОС ВМ по умолчанию; ключи: `login` (str) и `password` (str) |
| driver | string | Драйвер.|
| id | int | Идентификатор группы.|
| name | string | Имя группы.|
| rg_id | int | Идентификатор ресурсной группы. |
| state | string | Состояние группы. |
| techStatus | string | Технический статус группы. |
## Пример использования модуля decort_group
Данный пример создаёт группу с именем `test_group`.
```
- hosts: localhost
tasks:
- name: Create BS group
decort_group:
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
boot_disk: 10
bservice_id: 1823
controller_url: "https://ds1.digitalenergy.online"
count: 2
cpu: 2
image_id: 518
name: test_group
networks:
- type: VINS
id: 1987
oauth2_url: "https://sso.digitalenergy.online"
ram: 2
verify_ssl: false
chipset: Q35
driver: KVM_X86
register: group_test
```
Данный пример удаляет группу с именем `test_group`.
```
- hosts: localhost
tasks:
- name: Delete BS group
decort_group:
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
bservice_id: 1823
controller_url: "https://ds1.digitalenergy.online"
name: test_group
oauth2_url: "https://sso.digitalenergy.online"
state: absent
verify_ssl: False
register: group_test
```

@ -0,0 +1,48 @@
# Модуль decort_jwt
## Обзор модуля
Модуль **decort_jwt** предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании ресурсов (например, виртуальных машин), так как позволяет оптимизировать количество API вызовов для получения токена.
По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает `changed: False`).
## Параметры модуля decort_jwt
Список параметров для модуля **decort_jwt** почти полностью совпадает с [общими параметрами модулей для авторизации](./введение.md#общие-параметры-модулей-для-авторизации).
Отличия от общих параметров:
- Параметр `controller_url` не используется.
- Параметр `jwt` не используется.
- В параметре `authenticator` не используется значение `jwt`.
## Возвращаемые значения модуля decort_jwt
| Ключ | Тип данных | Описание |
|---| ------ | ------ |
| jwt | str | JWT токен. |
## Примеры использования
### Пример получения JWT токена с помощью DECS3O
```
- name: Example
hosts: localhost
tasks:
- name: Obtain JWT from DECS3O
decort_jwt:
app_id: "{{ app_id }}"
app_secret: "{{ app_secret }}"
authenticator: decs3o
oauth2_url: https://sso-dynamix.local
```
### Пример получения JWT токена с помощью BVS
```
- name: Example
hosts: localhost
tasks:
- name: Obtain JWT from BVS
decort_jwt:
app_id: "{{ app_id }}"
app_secret: "{{ app_secret }}"
authenticator: bvs
oauth2_url: https://bvs.local
domain: dynamix
username: "{{ username }}"
password: "{{ password }}"
```

@ -0,0 +1,120 @@
# Модуль decort_k8s
## Обзор модуля decort_k8s
Модуль **decort_k8s** предназначен для выполнения следующих действий над кластерами Kubernetes:
- создать
- получить информацию
- выключить/включить/остановить/запустить
- изменить группы Worker-узлов
- изменить имя кластера
- удалить (в корзину или безвозвратно)
- восстановить из корзины
- изменить зону
## Параметры модуля decort_k8s
Ниже приведен список параметров для модуля **decort_k8s** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| account_id | (int) | Идентификатор аккаунта. |
| account_name | (string) | Имя аккаунта. |
| additionalSANs | (list) | Список дополнительных SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Можно использовать IP-адреса и доменные имена.
| cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. |
| description | (string) | Целевое описание. |
| extnet_id | (int)<br>Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
| extnet_only | (bool)<br>Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
| getConfig | (bool)<br>Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
| ha_lb | (bool)<br>Default: `false` | Использовать схему высокой доступности для создаваемого балансировщика нагрузки (если `with_lb: true`). |
| id | (int) | Идентификатор кластера Kubernetes. |
| init_conf | (dict) | Словарь для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Позволяет настраивать такие процессы, как регистрация узла, настройка сети и другие задачи инициализации.
| join_conf | (dict) | Словарь для настройки поведения и параметров присоединения узла к кластеру. Включает в себя такие параметры, как control-plane-endpoint кластера, токен и certificate-key. |
| k8ci_id | (int) | Идентификатор конфигурации кластера Kubernetes. |
| kubeproxy_conf | (dict) | Словарь для настройки поведения и настроек Kube-proxy, отвечающего за сетевое проксирование и балансировку нагрузки внутри кластера. Включает в себя такие параметры, как режим прокси, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. |
| kublet_conf | (dict) | Словарь для настройки поведения и настроек Kubelet, который является агентом основного узла, работающим на каждом узле кластера. Включает в себя такие параметры, как IP-адрес узла, распределение ресурсов, политики вытеснения модулей и другие конфигурации, специфичные для Kubelet. |
| master_chipset | (string)<br>Значения:<br>`Q35`<br>`i440fx` | Эмулируемый чипсет master-узлов. Не поддерживается изменение в существующем кластере. <br>Значение по умолчанию при создании: `i440fx`. |
| master_count | (int)<br>Значения:<br>`1`<br>`3`<br>`5`<br>`7`<br>Default: `1` | Количество Master-узлов. |
| master_cpu | (int)<br>Default: `2` | Количество виртуальных процессоров на Master-узле. |
| master_disk | (int)<br>Default: `10` | Объём загрузочного диска на Master-узле. |
| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
| master_ram | (int)<br>Default: `2048` | Объём оперативной памяти на Master-узле. |
| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
| name | (string) | Имя кластера Kubernetes. Если для существующего кластера указаны и `name`, и `id`, то параметр `name` используется для переименования. |
| network_plugin | (str)<br>Значения:<br>`flannel`<br>`calico`<br>`weavenet`<br>Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) |
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера.
| permanent | (bool)<br>Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
| rg_id | (int) | Идентификатор ресурсной группы. |
| rg_name | (str) | Имя ресурсной группы. |
| state | (str)<br>Значения:<br>`present`<br>`absent`<br>`disabled`<br>`enabled`<br>`started`<br>`stopped` | Целевое состояние кластера.<br>`present` - существует и не удален. Если удален в корзину, то будет восстановлен из корзины.<br>`absent` - удалён в корзину или безвозвратно удалён, в зависимости от значения параметра `permanent`.<br>`disabled` - выключен. Если включён, то будет выключен. Если удален в корзину, то будет восстановлен из корзины и выключен.<br>`enabled` - включён. Если выключен, то будет включён. Если удален в корзину, то будет восстановлен из корзины и включён.<br>`started` - запущен. Если остановлен, то будет запущен. Если удален в корзину, то будет восстановлен из корзины и запущен.<br>`stopped` - остановлен. Если запущен, то будет остановлен. Если удален в корзину, то будет восстановлен из корзины и остановлен.<br>Значение по умолчанию при создании: `present`. |
| lb_sysctl | (dict) | Словарь, описывающий параметры конфигурации sysctl балансировщика нагрузки. Может быть задан только если кластер имеет балансировщик нагрузки. |
| storage_policy_id | (int) | Идентификатор политики хранения. Обязателен при создании. Не поддерживается изменение в существующем кластере. |
| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
| with_lb | (bool)<br>Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. |
| workers | (list) | Список словарей, описывающих группы Worker-узлов.<br>Ключи словаря:<br>&bull; `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`; значение по умолчанию при создании: `[]`<br>&bull; `chipset` (str) (необязательный) - эмулируемый чипсет. Допустимые значения: `Q35`, `i440fx`; значение по умолчанию при создании: `i440fx`<br>&bull; `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init; значение по умолчанию при создании: `{}`<br>&bull; `cpu` (int) (необязательный) - количество виртуальных процессоров на узле; значение по умолчанию при создании: `1`<br>&bull; `disk` (int) (необязательный) - объём загрузочного диска на узле; если не задан при создании, размер диска будет равен размеру используемого образа<br>&bull; `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`; значение по умолчанию при создании: `[]`. Метка `workersGroupName` является служебной в платформе и игнорируется при сравнении переданных меток с существующими<br>&bull; `name` (string) (обязательный) - имя группы Worker-узлов<br>&bull; `num` (int) (необязательный) - количество узлов; значение по умолчанию при создании: `1`<br>&bull; `pool` (str) (необязательный) - пул СХД, заданной ключом `sep_id`; если не задан при создании, то пул будет выбран платформой<br>&bull; `ram` (int) (необязательный) - объём оперативной памяти на узле; значение по умолчанию при создании: `1024`<br>&bull; `sep_id` (int) (необязательный) - идентификатор СХД; если не задан при создании, то используется СХД образа узла<br>&bull; `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule`; значение по умолчанию при создании: `[]`. |
| zone_id | (int) | Идентификатор зоны. |
## Возвращаемые значения модуля decort_k8s
Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
| Ключ | Тип данных | Описание |
| ------ | ------ | ------ |
| account_id | int | Идентификатор аккаунта. |
| config | str | Kuber config кластера.
| description | str | Описание. |
| id | int | Идентификатор кластера. |
| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.<br>Ключи словаря:<br>&bull; `cpu` (int) - количество виртуальных процессоров<br>&bull; `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>&bull; `disk` (int) - объём загрузочного диска<br>&bull; `id` (int) - идентификатор группы<br>&bull; `name` (str) - имя группы<br>&bull; `num` (int) - количество узлов<br>&bull; `ram` (int) - объём оперативной памяти
| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.<br>Ключи словаря:<br>&bull; `cpu` (int) - количество виртуальных процессоров<br>&bull; `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>&bull; `disk` (int) - объём загрузочного диска<br>&bull; `id` (int) - идентификатор группы<br>&bull; `labels` (list) - список строк с labels<br>&bull; `name` (str) - имя группы<br>&bull; `num` (int) - количество узлов<br>&bull; `ram` (int) - объём оперативной памяти<br>&bull; `taints` (list) - список строк с taints
| lb_id | int | Идентификатор балансировщика нагрузки. |
| name | string | Имя кластера. |
| rg_id | int | Идентификатор ресурсной группы. |
| state | string | Статус кластера. |
| techStatus | string | Технический статус кластера. |
| vins_id | int | Идентификатор внутренней сети кластера. |
| zone_id | int | Идентификатор зоны. |
## Пример использования модуля decort_k8s
Пример создания кластера Kubernetes с именем `cluster-test` с получением Kuber config.
```
- name: Create a k8s cluster named cluster-test
decort_k8s:
authenticator: jwt
controller_url: "https://ds1.digitalenergy.online"
getConfig: true
jwt: "{{ token.jwt }}"
k8ci_id: 18
name: cluster-test
rg_id: 125
storage_policy_id: "{{ storage_policy_id }}"
workers:
- cpu: 10
disk: 10
name: wg1
num: 1
ram: 1024
chipset: i440fx
ci_user_data: {}
taints:
- key=value:NoSchedule
annotations:
- key=value
labels:
- label=value
- cpu: 10
disk: 10
name: wg2
num: 2
ram: 1024
chipset: Q35
ci_user_data: {}
taints:
- key=value:NoSchedule
annotations:
- key=value
labels:
- label=value
register: k8s_cluster
```

File diff suppressed because it is too large Load Diff

@ -0,0 +1,858 @@
# Модуль decort_lb
## Обзор модуля decort_lb
Модуль **decort_lb** предназначен для выполнения следующих действий над балансировщиками нагрузки:
- создать
- получить информацию
- выключить/включить/запустить/остановить/перезапустить
- изменить
- конфигурации backend и frontend
- конфигурацию sysctl
- зону
- удалить (в корзину или безвозвратно)
- восстановить из корзины
## Параметры модуля decort_lb
Ниже приведен список параметров для модуля **decort_lb** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
<table>
<tr>
<th colspan="3">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="3">
account_id
</td>
<td>
(int)
</td>
<td>
Идентификатор аккаунта.
</td>
</tr>
<tr>
<td colspan="3">
account_name
</td>
<td>
(str)
</td>
<td>
Имя аккаунта.
<br> Может быть альтернативой параметру <code>account_id</code>.
</td>
</tr>
<tr>
<td colspan="3">
description
</td>
<td>
(str)
</td>
<td>
Описание балансировщика.
</td>
</tr>
<tr>
<td colspan="3">
backends
</td>
<td>
(list)
</td>
<td>
Список словарей, описывающих конфигурации backend.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
algorithm
</td>
<td>
(str)
<br>Значения:
<br><code>leastconn</code>
<br><code>roundrobin</code>
<br><code>static-rr</code>
<br>Default: <code>roundrobin</code>
</td>
<td>
Используемый алгоритм.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
<a name="backend_default_settings">
default_settings
</a>
</td>
<td>
(dict)
</td>
<td>
оварь, описывающий параметры по умолчанию для backend-серверов.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
downinter
</td>
<td>
(int)
<br>Default: <code>1000</code>
</td>
<td>
Интервал в миллисекундах между двумя последовательными проверками
доступности сервера, который считается недоступным.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
fall
</td>
<td>
(int)
<br>Default: <code>2</code>
</td>
<td>
Количество последовательных неудачных проверок доступности, после
которых сервер, ранее считавшийся доступным, начинает считаться
недоступным и временно исключается из схемы балансировки.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
inter
</td>
<td>
(int)
<br>Default: <code>5000</code>
</td>
<td>
Интервал в миллисекундах между двумя последовательными проверками
доступности сервера, который считается доступным.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
maxconn
</td>
<td>
(int)
<br>Default: <code>250</code>
</td>
<td>
Лимит одновременных подключений к серверу. При достижении этого лимита
сервер временно исключается из схемы балансировки.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
maxqueue
</td>
<td>
(int)
<br>Default: <code>256</code>
</td>
<td>
Лимит соединений, ожидающих в очереди. Когда этот предел будет
достигнут, все последующие подключения будут перенаправлены
на другие серверы.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
rise
</td>
<td>
(int)
<br>Default: <code>2</code>
</td>
<td>
Количество проверок, которые должен пройти сервер, считавшийся
недоступным, чтобы начать считаться доступным и снова быть
включенным в схему балансировки.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
slowstart
</td>
<td>
(int)
<br>Default: <code>60000</code>
</td>
<td>
Интервал в миллисекундах с момента когда сервер начинает считаться
доступным, по истечении которого количество фактически разрешенных
подключений к этому серверу будет возвращено до 100% от
установленного лимита.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
weight
</td>
<td>
(int)
<br>Default: <code>100</code>
</td>
<td>
Вес сервера для использования в алгоритмах балансировки.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
name
</td>
<td>
(str)
</td>
<td>
Название backend. Обязательный параметр.
</td>
</tr>
<tr>
<td colspan="3">
ext_net_id
</td>
<td>
(int)
</td>
<td>
Идентификатор внешней сети.
<br>Может быть не задан, если задан <code>vins_id</code> -
в таком случае балансировщик будет подключён только к
внутренней сети.
</td>
</tr>
<tr>
<td colspan="3">
<a name="frontends">
frontends
</a>
</td>
<td>
(list)
</td>
<td>
Список словарей, описывающих конфигурации frontend.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
backend
</td>
<td>
(str)
</td>
<td>
Название используемого backend. Обязательный параметр.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
bindings
</td>
<td>
(list)
</td>
<td>
Список словарей, описывающих конфигурации binding.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
address
</td>
<td>
(str)
</td>
<td>
IP-адрес.
<br>Если не задан, то будет использоваться основной IP-адрес
балансировщика во внешней сети или, если подключена только
внутренняя сеть, основной IP-адрес балансировщика во внутренней сети.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
name
</td>
<td>
(str)
</td>
<td>
Название. Обязательный параметр.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
port
</td>
<td>
(int)
<br>Значения:
<br><code>1</code>-<code>65535</code>
</td>
<td>
Порт. Обязательный параметр.
</td>
</tr>
<tr>
<td colspan="3">
ha_lb
</td>
<td>
bool
<br>Default: <code>false</code>
</td>
<td>
Использовать схему высокой доступности для создаваемого балансировщика.
</td>
</tr>
<tr>
<td colspan="3">
lb_id
</td>
<td>
(int)
</td>
<td>
Идентификатор балансировщика нагрузки.
</td>
</tr>
<tr>
<td colspan="3">
lb_name
</td>
<td>
(str)
</td>
<td>
Имя балансировщика.
</td>
</tr>
<tr>
<td colspan="3">
permanently
</td>
<td>
(bool)
<br>Default: <code>false</code>
</td>
<td>
Если выполняется удаление, то выполнить безвозвратное удаление
(минуя корзину).
</td>
</tr>
<tr>
<td colspan="3">
rg_id
</td>
<td>
(int)
</td>
<td>
Идентификатор ресурсной группы.
</td>
</tr>
<tr>
<td colspan="3">
rg_name
</td>
<td>
(str)
</td>
<td>
Имя ресурсной группы.
<br> В комбинации с заданным аккаунтов может быть альтернативой
параметру <code>rg_id</code>
</td>
</tr>
<tr>
<td colspan="3">
servers
</td>
<td>
(list)
</td>
<td>
Список словарей, описывающих конфигурации backend-серверов.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
address
</td>
<td>
(str)
</td>
<td>
IP-адрес. Обязательный параметр.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
backends
</td>
<td>
(list)
</td>
<td>
Список словарей, описывающих параметры backend-сервера для разных
конфигураций backend.
<br>Обязательный параметр.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
check
</td>
<td>
(str)
<br>Значения:
<br><code>enabled</code>
<br><code>disabled</code>
<br>Default: <code>enabled</code>
</td>
<td>
Проверка доступности сервера.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
name
</td>
<td>
(str)
</td>
<td>
Название конфигурации backend. Обязательный параметр.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
port
</td>
<td>
(int)
<br>Значения:
<br><code>1</code>-<code>65535</code>
</td>
<td>
Порт. Обязательный параметр.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
server_settings
</td>
<td>
(dict)
</td>
<td>
Словарь, описывающий параметры backend-сервера.
<br> Ключи данного словаря аналогичны ключам словаря
<a href=#backend_default_settings>
default_settings
</a>.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
name
</td>
<td>
(str)
</td>
<td>
Название. Обязательный параметр.
</td>
</tr>
<tr>
<td colspan="3">
state
</td>
<td>
(str)
<br>Значения:
<br><code>absent</code>
<br><code>disabled</code>
<br><code>enabled</code>
<br><code>present</code>
<br><code>restart</code>
<br><code>started</code>
<br><code>stopped</code>
</td>
<td>
Целевое состояние балансировщика нагрузки.
<br><code>absent</code> - удалён в корзину или безвозвратно удалён,
в зависимости от значения параметра
<a href=#permanently>permanently</a>.
<br><code>disabled</code> - выключен. Если включён, то будет выключен.
<br><code>enabled</code> - включён. Если выключен, то будет включён.
Если удалён в корзину, то будет восстановлен из корзины и включён.
<br><code>present</code> - существует и не удалён. Если удалён в
корзину, то будет восстановлен из корзины.
<br><code>restart</code> - выполнен перезапуск.
<br><code>started</code> - запущен. Если остановлен, то будет запущен.
<br><code>stopped</code> - остановлен. Если запущен, то будет остановлен.
<br>Значение по умолчанию при создании: <code>present</code>
</td>
</tr>
<tr>
<td colspan="3">
sysctl
</td>
<td>
(dict)
</td>
<td>
Словарь, описывающий параметры конфигурации sysctl.
</td>
</tr>
<tr>
<td colspan="3">
vins_id
</td>
<td>
(int)
</td>
<td>
Идентификатор внутренней сети.
<br>Может быть не задан, если задан <code>ext_net_id</code> -
в таком случае балансировщик будет подключён только к
внешней сети.
</td>
</tr>
<tr>
<td colspan="3">
vins_name
</td>
<td>
(str)
</td>
<td>
Имя внутренней сети.
<br> В комбинации с заданной РГ может быть альтернативой для
параметра <code>vins_id</code>.
</td>
</tr>
<tr>
<td colspan="3">
zone_id
</td>
<td>
(int)
</td>
<td>
Идентификатор зоны.
</td>
</tr>
</table>
## Возвращаемые значения модуля decort_lb
Модуль **decort_lb** возвращает информацию о балансировщике в виде словаря `facts` со следующими ключами:
<table>
<tr>
<th colspan="4">
Ключ
</th>
<th>
Тип
<br>данных
</th>
<th>
Описание
</th>
</tr>
<tr>
<td colspan="4">
account_id
</td>
<td>
int
</td>
<td>
Идентификатор аккаунта.
</td>
</tr>
<tr>
<td colspan="4">
backends
</td>
<td>
list
</td>
<td>
Список словарей, описывающих конфигурации backend.
</td>
</tr>
<tr>
<td></td>
<td colspan="3">
algorithm
</td>
<td>
str
</td>
<td>
Используемый алгоритм.
</td>
</tr>
<tr>
<td></td>
<td colspan="3">
name
</td>
<td>
str
</td>
<td>
Название конфигурации backend.
</td>
</tr>
<tr>
<td></td>
<td colspan="3">
serverDefaultSettings
</td>
<td>
dict
</td>
<td>
оварь, описывающий параметры по умолчанию для backend-серверов.
<br> Ключи данного словаря аналогичны ключам словаря
<a href=#backend_default_settings>
default_settings
</a>.
</td>
</tr>
<tr>
<td></td>
<td colspan="3">
servers
</td>
<td>
list
</td>
<td>
Список словарей, описывающих конфигурации backend-серверов.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
address
</td>
<td>
str
</td>
<td>
IP-адрес.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
check
</td>
<td>
str
</td>
<td>
Проверка доступности сервера.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
name
</td>
<td>
str
</td>
<td>
Название.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
port
</td>
<td>
int
</td>
<td>
Порт.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
serverSettings
</td>
<td>
dict
</td>
<td>
оварь, описывающий параметры backend-сервера.
<br> Ключи данного словаря аналогичны ключам словаря
<a href=#backend_default_settings>
default_settings
</a>.
</td>
</tr>
<tr>
<td colspan="4">
frontends
</td>
<td>
list
</td>
<td>
Список словарей, описывающих конфигурации frontend.
<br> Ключи данного словаря аналогичны ключам словарей списка
<a href=#frontends>
frontends
</a>.
</td>
</tr>
<tr>
<td colspan="4">
gid
</td>
<td>
int
</td>
<td>
Идентификатор физического кластера (Grid ID).
</td>
</tr>
<tr>
<td colspan="4">
id
</td>
<td>
int
</td>
<td>
Идентификатор балансировщика.
</td>
</tr>
<tr>
<td colspan="4">
name
</td>
<td>
str
</td>
<td>
Имя балансировщика.
</td>
</tr>
<tr>
<td colspan="4">
rg_id
</td>
<td>
int
</td>
<td>
Идентификатор ресурсной группы.
</td>
</tr>
<tr>
<td colspan="4">
state
</td>
<td>
str
</td>
<td>
Статус балансировщика.
</td>
</tr>
<tr>
<td colspan="4">
sysctl
</td>
<td>
dict
</td>
<td>
Параметры конфигурации sysctl.
</td>
</tr>
<tr>
<td colspan="4">
tech_status
</td>
<td>
str
</td>
<td>
Технический статус балансировщика.
</td>
</tr>
<tr>
<td colspan="4">
zone_id
</td>
<td>
int
</td>
<td>
Идентификатор зоны.
</td>
</tr>
</table>

@ -0,0 +1,151 @@
# Модуль decort_osimage
## Обзор модуля decort_osimage
Модуль decort_osimage предназначен для выполнения следующих действий над образами, созданными в облачной платформе DECORT:
- шаблонные образы:
- создать
- получить информацию
- изменить
- имя
- политику хранения
- удалить
- виртуальные образы
- создать
- получить информацию
- изменить
- имя
- целевой образ
- удалить
## Параметры модуля decort_osimage
Ниже приведен список параметров для модуля **decort_osimage** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| account_id | (int) | Идентификатор аккаунта. Используется для поиска образов, а также для их создания. |
| account_name | (string) | Имя аккаунта. Используется для получения уникального целочисленного идентификатора аккаунта. |
| boot | (dict) | Параметры загрузки.<br>Ключи словаря:<br>&bull; `mode` (str) - режим загрузки, значения: `bios`, `uefi`, значение по умолчанию при создании: `bios`;<br>&bull; `loader_type` (str) - тип загрузчика операционной системы, значения: `linux`, `windows`, `unknown`, значение по умолчанию при создании: `unknown`. |
| hot_resize | (bool) | Поддержка изменения объёма ОЗУ и количества процессоров у запущенных ВМ, созданных на основе образа. <br>Значение по умолчанию при создании: `false`. |
| image_id | (int) | Идентификатор шаблонного образа.
| image_name | (str) | Имя шаблонного образа.
| image_password | (string) | Опциональный пароль для образа. Используется при создании образа.|
| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа. |
| network_interface_naming | (string) <br>Значения:<br>`ens`<br>`eth`| Шаблон именования сетевых интерфейсов в ОС Linux. <br>Значение по умолчанию при создании: `ens`. |
| passwordDL | (string) | Пароль для скачивания по URL-адресу. Используется при создании образа. |
| pool | (str) | Имя пула СХД. Используется для поиска существующего образа.
| poolName | (string) | Имя пула СХД. Используется при создании образа. |
| sepId | (integer) | Уникальный целочисленный идентификатор СХД. Используется при создании образа. |
| sep_id | (int) | Идентификатор СХД. Используется для поиска существующего образа.
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>Default: `present` | Целевое состояние образа. `present` - существует, `absent` - удалён. |
| storage_policy_id | (int) | Идентификатор политики хранения. Используется только для шаблонного образа.<br>Обязателен при создании. |
| url | (string) | URL-адрес, с которого будет загружен образ. Используется при создании образа.|
| usernameDL | (string) | Имя пользователя для загрузки образа с заданного URL-адреса. Используется при создании образа. |
| virt_id | (integer) | Уникальный целочисленный идентификатор виртуального образа. Может использоваться для получения информации о виртуальном образе, а также для привязки к нему другого образа.|
| virt_name | (string) | Имя виртуального образа. Используется для получения `virt_id`, а в последствии информации о виртуальном образе, а также для создания виртуального образа и привязки к нему другого образа.|
## Возвращаемые значения модуля decort_osimage
Модуль decort_osimage возвращает информацию об образе в виде словаря facts со следующими ключами:
| Ключ | Тип данных | Описание |
| ------ | ------ | ------ |
| accountId | int | Идентификатор аккаунта. |
| boot_mode | string | Режим загрузки. |
| boot_loader_type | string | Тип загрузчика операционной системы. |
| hot_resize | bool | Поддержка изменения объёма ОЗУ и количества процессоров у запущенной ВМ. |
| id | int | Уникальный целочисленный идентификатор данного образа. |
| linkto | int | Уникальный целочисленный идентификатор образа, который привязан к данному виртуальному. |
| name | string | Имя образа. |
| network_interface_naming | string | Шаблон именования сетевых интерфейсов в ОС Linux. |
| pool | string | Имя пула на системе хранения данных, в котором находится данный образ.|
| sep_id | int | Идентификатор системы хранения данных, на которой хранится данный образ. |
| size | int | Размер образа в ГБ. |
| state | string | Текущий статус образа. |
| storage_policy_id | int | Идентификатор политики хранения. |
| to_clean | bool | Образ помечен для очистки после удаления. |
| type | string | Тип образа. |
## Пример использования модуля decort_osimage
Пример создания шаблонного образа с операционной системой Alpine Linux.
```
- name: Create template image
decort_osimage:
account_id: 12345
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
image_name: alpine_linux_3.19.1
url: https://dl-cdn.alpinelinux.org/alpine/v3.19/releases/cloud/nocloud_alpine-3.19.1-x86_64-uefi-cloudinit-r0.qcow2
verify_ssl: false
boot:
mode: uefi
loader_type: linux
network_interface_naming: eth
hot_resize: true
storage_policy_id: 1
register: osimage
```
Пример получения информации о существующем шаблонном образе по его имени.
```
- name: Get template image
decort_osimage:
account_id: 12345
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
image_name: alpine_linux_3.19.1
verify_ssl: false
register: osimage
```
Пример создания виртуального образа. Также в случае, если виртуальный образ уже существует, но к нему привязан другой шаблонный образ, он привяжет к себе указанный в примере шаблонный образ.
```
- name: Create virtual image
decort_osimage:
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
account_id: 12345
image_name: alpine_linux_3.19.1
virt_name: alpine_last
register: osimage
```
Обратите внимание, что в данном примере можно использовать как `image_name`, так и `image_id`. Также можно использовать либо `virt_name`, либо `virt_id`.
Пример переименования образа.
```
- name: Rename template image
decort_osimage:
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
image_name: alpine_linux_3.19.1_new_name
image_id: 54321
register: osimage
```
Пример удаления образа
```
- name: Delete image
decort_osimage:
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
image_id: 54321
state: absent
```

@ -0,0 +1,66 @@
# Модуль decort_pfw
## Обзор модуля decort_pfw
Модуль **decort_pfw** предназначен для настройки правил переадресации портов (port forwarding, destination NAT) на виртуальном маршрутизаторе заданной внутренней сети для заданной виртуальной машины.
Модуль поддерживает выполнение следующих действий над правилами:
- добавить
- получить информацию
- удалить
## Параметры модуля decort_pfw
Ниже приведен список параметров для модуля **decort_pfw** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание|
| ------ | ------ | ------ |
| compute_id | (int) | Идентификатор виртуальной машины. IP-адрес, который данная ВМ имеет во внутренней сети, заданной параметром `vins_id`, будет использоваться как внутренний IP-адрес в правилах. Обязательный параметр. |
| rules | (list) | Список словарей, описывающих правила переадресации портов для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`).<br>Ключи словаря:<br>&bull; `local_port` (int) (обязательный) - внутренний порт; значения: от `1` до `65535`<br>&bull; `proto` (str) (обязательный) - протокол; значения: `tcp` или `udp`<br>&bull; `public_port_end` (int) (необязательный) - верхняя граница диапазона внешних портов; значения: от значения ключа `public_port_start` до `65535`;<br>&bull; `public_port_start` (int) (обязательный) - нижняя граница диапазона внешних портов; значения: от `1` до `65535` |
| state | (str)<br>Значения:<br/>`present`<br/>`absent`<br>Default: `present` | Целевое состояние правил.<br>Если `state=absent`, то, независимо от содержания параметра `rules`, будут удалены все правила для заданной ВМ (параметр `compute_id`) на виртуальном маршрутизаторе заданной внутренней сети (параметр `vins_id`). |
| vins_id | (int) | Идентификатор внутренней сети, на виртуальном маршрутизаторе которой настраиваются правила переадресации портов. Заданная ВМ (параметр `compute_id`) должна быть подключена к этой сети. Обязательный параметр. |
## Возвращаемые значения модуля decort_pfw
Модуль **decort_pfw** возвращает информацию о правилах переадресации портов и сопутствующую информацию в виде словаря `facts` со следующими ключами:
|Ключ | Тип данных | Описание|
| ------ | ------ | ------ |
| compute_id | int | Идентификатор ВМ. |
| public_ip | string | IP-адрес во внешней сети, настроенный на виртуальном маршрутизаторе внутренней сети. |
| rules | list | Список словарей, описывающих правила переадресации портов.<br>Ключи словаря:<br>&bull; `id` (int) - идентификатор правила<br>&bull; `localIp` (str) - IP-адрес ВМ<br>&bull; `localPort` (int) - внутренний порт<br>&bull; `protocol` (str) - протокол<br>&bull; `publicPortEnd` (int) - верхняя граница диапазона внешних портов<br>&bull; `publicPortStart` (int) - нижняя граница диапазона внешних портов<br>&bull; `vmId` (int) - идентификатор ВМ<br>&bull; `vmName` (str) - имя ВМ |
| state | string | Статус правил. Значения: `PRESENT` или `ABSENT`. |
| vins_id | int | Идентификатор внутренней сети. |
## Пример использования модуля decort_pfw
В данном примере для существующей ВМ (параметр `compute_id`), подключённой к внутренней сети (параметр `vins_id`), настраиваются два правила переадресации портов:
- Правило для одного порта: внешний порт `30022` на внутренний порт `22` по протоколу `tcp`.
- Правило для диапазона портов: внешние порты с `30080` по `30085` на внутренние порты с `30080` по протоколу `udp`.
```
- name: Add port forwarding rules
decort_pfw:
app_id: "{{ my_app_id }}"
app_secret: "{{ my_app_secret }}"
authenticator: oauth2
compute_id: "{{ my_vm.facts.id }}"
controller_url: "https://cloud.digitalenergy.online"
oauth2_url: "https://sso.digitalenergy.online"
rules:
- local_port: 22
proto: tcp
public_port_start: 30022
- local_port: 30080
proto: udp
public_port_end: 30085
public_port_start: 30080
vins_id: "{{ my_vins.facts.id }}"
register: my_pfw_rules
```
В данном примере результат выполнения модуля **decort_pfw** записывается в переменную `my_pfw_rules`. Для доступа к списку правил используйте следующую конструкцию:
```
"{{ my_pfw_rules.facts.rules }}"
```

@ -0,0 +1,233 @@
# Модуль 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) | Предназначено для задания или изменения квоты на ресурсы в составе данной ресурсной группы.<br>Ключи словаря:<br>&bull; `cpu` (int) - количество виртуальных процессоров<br>&bull; `disk` (int) - объём дисков в ГБ<br>&bull; `ext_ips` (int) - количество внешних IP-адресов<br>&bull; `ram` (int) - объём оперативной памяти в МБ<br>&bull; `net_transfer` (int) - объём трафика внешних сетей<br>&bull; `storage_policies` (list) - список словарей, описывающих квоты по политикам хранения. Ключи словаря: `id` (int) - идентификатор политики хранения; `storage_size_gb` (int) - объём дисков.|
| 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) | Имя ресурсной группы. Данный параметр является обязательным при создании. |
| sdn_access_group_id | (string) | Идентификатор группы доступа SDN. |
| 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 | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная ресурсная группа. |
| computes | list | Список идентификаторов виртуальных машин ресурсной группы. |
| defNetId | int | Уникальный целочисленный идентификатор сети по умолчанию в данной ресурсной группе. |
| defNetType | string | Тип сети по умолчанию в данной ресурсной группе. |
| description | string | Текстовое описание ресурсной группы. |
| gid | int | Идентификатор физического кластера (Grid ID), на базе которого развёрнута ресурсная группа. |
| id | int | Уникальный целочисленный идентификатор ресурсной группы. |
| name | string | Имя ресурсной группы. Обратите внимание, что это имя уникально только в рамках аккаунта, которому принадлежит данная ресурсная группа. |
| quota | dict | Текущие квоты ресурсной группы. |
| resTypes | list | Список типов ресурсов, разрешенных к созданию в данной ресурсной группе. |
| sdn_access_group_id | str | Идентификатор группы доступа SDN. |
| state | string | Текущее состояние ресурсной группы. |
| storage_policy_ids | list | Идентификаторы политик хранения. |
| uniqPools | list | Список доступных пулов СХД. |
| ViNS | 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
storage_policies:
- id: "{{ storage_policy_id }}"
storage_size_gb: "{{ storage_size_gb }}"
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
storage_policies:
- id: "{{ storage_policy_id }}"
storage_size_gb: "{{ storage_size_gb }}"
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
```

@ -0,0 +1,610 @@
# Модуль decort_security_group
## Обзор модуля
Модуль **decort_security_group** предназначен для выполнения следующих действий над группой безопасности:
- **получить информацию** (см. [примеры](#получить-информацию))
- **создать** (см. [примеры](#создать))
- **с указанием описания** (см. [параметр description](#description) и [примеры](#с-указанием-описания))
- **удалить** (см. [параметр state](#state) и [примеры](#удалить))
- **изменить** (см. [примеры](#изменить))
- **название** (см. [параметр name](#param_name) и [примеры](#название))
- **описание** (см. [параметр description](#description) и [примеры](#описание))
- **правила** (см. [параметр rules](#rules) и [примеры](#правила))
## Параметры модуля
Ниже приведен список параметров для модуля **decort_security_group** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
<table>
<tr>
<th colspan="4">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="4">
account_id
</td>
<td>
(int)
</td>
<td>
Идентификатор аккаунта. Обязательный при создании.<br>Не поддерживается изменение для существующей группы безопасности.
</td>
</tr>
<tr>
<td colspan="4">
<a name="description">
description
</a>
</td>
<td>
(str)
</td>
<td>
Описание.
</td>
</tr>
<tr>
<td colspan="4">
id
</td>
<td>
(int)
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="4">
<a name="param_name">
name
</a>
</td>
<td>
(str)
</td>
<td>
Название. Обязательный при создании.
</td>
</tr>
<tr>
<td colspan="4">
<a name="rules">
rules
</a>
</td>
<td>
(dict)
</td>
<td>
Словарь, описывающий правила группы безопасности.
</td>
</tr>
<tr>
<td></td>
<td colspan="3">
mode
</td>
<td>
(str)
<br>Значения:
<br><code>delete</code>
<br><code>match</code>
<br><code>update</code>
<br>Default: <code>update</code>
</td>
<td>
Режим работы параметра.
<br><code>delete</code> - указанные управила отсутствуют.
<br><code>match</code> - существуют только указанные правила.
<br><code>update</code> - указанные правила существуют.
</td>
</tr>
<tr>
<td></td>
<td colspan="3">
objects
</td>
<td>
(list)
</td>
<td>
Cписок словарей, описывающих целевые правила.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
direction
</td>
<td>
(str)
<br>Значения:
<br><code>INBOUND</code>
<br><code>OUTBOUND</code>
</td>
<td>
Направление трафика. Обязательный параметр.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
ethertype
</td>
<td>
(str)
<br>Значения:
<br><code>IPV4</code>
<br><code>IPV6</code>
</td>
<td>
Протокол, инкапсулированный в Ethernet-кадр.<br>Значение по умолчанию при создании правила: <code>IPV4</code>
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
id
</td>
<td>
(int)
</td>
<td>
Идентификатор правила.
</td>
</tr>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
port_range
</td>
<td>
(dict)
</td>
<td>
Диапазон портов TCP/UDP.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td colspan="1">
min
</td>
<td>
(int)
</td>
<td>
Нижняя граница диапазона.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td colspan="1">
max
</td>
<td>
(int)
</td>
<td>
Верхняя граница диапазона.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="2">
protocol
</td>
<td>
(str)
<br>Значения:
<br><code>ICMP</code>
<br><code>TCP</code>
<br><code>UDP</code>
</td>
<td>
Протокол, инкапсулированный в IP-пакет.
</td>
<tr>
<td></td>
<td></td>
<td colspan="2">
remote_ip_prefix
</td>
<td>
(str)
</td>
<td>
Подсеть, в которую должен входить IP-адрес удалённого хоста.
</td>
</tr>
<tr>
<td colspan="4">
<a name="state">
state
</a>
</td>
<td>
(str)
<br>Значения:
<br><code>absent</code>
<br><code>present</code>
</td>
<td>
Целевое состояние.
<br><code>absent</code> - безвозвратно удалён или не существует.
<br><code>present</code> - существует и не удалён.
<br>Значение по умолчнию при создании: <code>present</code>
</td>
</tr>
</table>
## Возвращаемые значения
Модуль **decort_security_group** возвращает информацию о группе безопасности в виде словаря `facts` со следующими ключами:
<table>
<tr>
<th colspan="3">
Ключ
</th>
<th>
Тип
<br>данных
</th>
<th>
Описание
</th>
</tr>
<tr>
<td colspan="3">
account_id
</td>
<td>
int
</td>
<td>
Идентификатор аккаунта.
</td>
</tr>
<tr>
<td colspan="3">
created_by
</td>
<td>
str
</td>
<td>
Пользователь, создавший объект.
</td>
</tr>
<tr>
<td colspan="3">
created_timestamp
</td>
<td>
int
</td>
<td>
Unix-время создания.
</td>
</tr>
<tr>
<td colspan="3">
description
</td>
<td>
str
</td>
<td>
Описание.
</td>
</tr>
<tr>
<td colspan="3">
id
</td>
<td>
int
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="3">
name
</td>
<td>
str
</td>
<td>
Название.
</td>
</tr>
<tr>
<td colspan="3">
rules
</td>
<td>
list
</td>
<td>
Список словарей, описывающих правила.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
direction
</td>
<td>
str
</td>
<td>
Направление трафика.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
ethertype
</td>
<td>
str
</td>
<td>
Протокол, инкапсулированный в Ethernet-кадр.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
id
</td>
<td>
int
</td>
<td>
Идентификатор правила.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
port_range
</td>
<td>
dict
</td>
<td>
Диапазон портов TCP/UDP.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="1">
min
</td>
<td>
int
</td>
<td>
Нижняя граница диапазона.
</td>
</tr>
<tr>
<td></td>
<td></td>
<td colspan="1">
max
</td>
<td>
int
</td>
<td>
Верхняя граница диапазона.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
protocol
</td>
<td>
str | null
</td>
<td>
Протокол, инкапсулированный в IP-пакет.
</td>
</tr>
<tr>
<td></td>
<td colspan="2">
remote_ip_prefix
</td>
<td>
str
</td>
<td>
Подсеть, в которую должен входить IP-адрес удалённого хоста.
</td>
</tr>
<tr>
<td colspan="3">
updated_by
</td>
<td>
str
</td>
<td>
Пользователь, обновивший объект.
</td>
</tr>
<tr>
<td colspan="3">
updated_timestamp
</td>
<td>
int
</td>
<td>
Unix-время обновления.
</td>
</tr>
</table>
## Примеры использования
### Получить информацию
```
- name: Example
hosts: localhost
tasks:
- name: Get security group info
decort_security_group:
# Параметры для авторизации упущены
id: "{{ security_group_id }}"
```
### Создать
```
- name: Example
hosts: localhost
tasks:
- name: Create security group
decort_security_group:
# Параметры для авторизации упущены
account_id: "{{ account_id }}"
name: "{{ security_group_name }}"
state: present
```
#### С указанием описания
```
- name: Example
hosts: localhost
tasks:
- name: Create security group with description
decort_security_group:
# Параметры для авторизации упущены
account_id: "{{ account_id }}"
name: "{{ security_group_name }}"
description: "{{ description }}"
state: present
```
### Удалить
```
- name: Example
hosts: localhost
tasks:
- name: Delete security group
decort_security_group:
# Параметры для авторизации упущены
id: "{{ security_group_id }}"
state: absent
```
### Изменить
#### Название
```
- name: Example
hosts: localhost
tasks:
- name: Change security group name
decort_security_group:
# Параметры для авторизации упущены
id: "{{ security_group_id }}"
name: "{{ new_security_group_name }}"
```
#### Описание
```
- name: Example
hosts: localhost
tasks:
- name: Change security group description
decort_security_group:
# Параметры для авторизации упущены
id: "{{ security_group_id }}"
description: "{{ new_security_group_description }}"
```
#### Правила
#### Обновить
```
- name: Example
hosts: localhost
tasks:
- name: Update security group rules
decort_security_group:
# Параметры для авторизации упущены
id: "{{ security_group_id }}"
rules:
mode: update
objects:
- direction: "{{ rule1_direction }}"
ethertype: "{{ rule1_ethertype }}"
port_range:
min: "{{ rule1_port_min }}"
max: "{{ rule1_port_max }}"
protocol: "{{ rule1_protocol }}"
remote_ip_prefix: "{{ rule1_remote_ip_prefix }}"
- direction: "{{ rule2_direction }}"
ethertype: "{{ rule2_ethertype }}"
port_range:
min: "{{ rule2_port_min }}"
max: "{{ rule2_port_max }}"
protocol: "{{ rule2_protocol }}"
remote_ip_prefix: "{{ rule2_remote_ip_prefix }}"
```
#### Удалить
```
- name: Example
hosts: localhost
tasks:
- name: Delete security group rules
decort_security_group:
# Параметры для авторизации упущены
id: "{{ security_group_id }}"
rules:
mode: delete
objects:
- id: "{{ rule_id }}"
```
#### Привести в соответствие
```
- name: Example
hosts: localhost
tasks:
- name: Match security group rules
decort_security_group:
# Параметры для авторизации упущены
id: "{{ security_group_id }}"
mode: match
objects:
- id: "{{ rule1_id }}"
- id: "{{ rule2_id }}"
- direction: "{{ rule3_direction }}"
ethertype: "{{ rule3_ethertype }}"
port_range:
min: "{{ rule3_port_min }}"
max: "{{ rule3_port_max }}"
protocol: "{{ rule3_protocol }}"
remote_ip_prefix: "{{ rule3_remote_ip_prefix }}"
```

@ -0,0 +1,196 @@
# Модуль decort_storage_policy
## Обзор модуля
Модуль **decort_storage_policy** предназначен для получения информации о политике хранения (см. [возвращаемые значения](#возвращаемые-значения) и [примеры](#получение-информации-о-политике-хранения)).
## Параметры модуля
Ниже приведен список параметров для модуля **decort_storage_policy** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
<table>
<tr>
<th colspan="1">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="1">
<a name="id">
id
</a>
</td>
<td>
(int)
</td>
<td>
Идентификатор политики хранения.
</td>
</tr>
</table>
## Возвращаемые значения
Модуль **decort_storage_policy** возвращает информацию о политике хранения в виде словаря `facts` со следующими ключами:
<table>
<tr>
<th colspan="2">
Ключ
</th>
<th>
Тип
<br>данных
</th>
<th>
Описание
</th>
</tr>
<tr>
<td colspan="2">
description
</td>
<td>
str
</td>
<td>
Описание.
</td>
</tr>
<tr>
<td colspan="2">
guid
</td>
<td>
int
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="2">
id
</td>
<td>
int
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="2">
iops_limit
</td>
<td>
int
</td>
<td>
Ограничение ввода/вывода.
</td>
</tr>
<tr>
<td colspan="2">
name
</td>
<td>
str
</td>
<td>
Название.
</td>
</tr>
<tr>
<td colspan="2">
sep_pools
</td>
<td>
list
</td>
<td>
Список словарей, описывающих пулы СХД.
</td>
</tr>
<tr>
<td></td>
<td colspan="1">
pool_names
</td>
<td>
(list)
</td>
<td>
Список названий пулов системы хранения данных.
</td>
</tr>
<tr>
<td></td>
<td colspan="1">
sep_id
</td>
<td>
(int)
</td>
<td>
Идентификатор системы хранения данных.
</td>
</tr>
<tr>
<td colspan="2">
status
</td>
<td>
str
</td>
<td>
Статус.
</td>
</tr>
<tr>
<td colspan="2">
usage
</td>
<td>
dict
</td>
<td>
Тенанты, для которых добавлена политика хранения.
</td>
</tr>
<tr>
<td></td>
<td colspan="1">
account_ids
</td>
<td>
list
</td>
<td>
Список идентификаторов аккаунтов, для которых добавлена политика.
</td>
</tr>
<tr>
<td></td>
<td colspan="1">
rg_ids
</td>
<td>
list
</td>
<td>
Список идентификаторов ресурсных групп, для которых добавлена политика.
</td>
</tr>
</table>
## Примеры использования
### Получение информации о политике хранения
```
- name: Example
hosts: localhost
tasks:
- name: Get storage policy info
decort_storage_policy:
# Параметры для авторизации упущены
id: 1
```

@ -0,0 +1,237 @@
# Модуль decort_trunk
## Обзор модуля
Модуль **decort_trunk** предназначен для получения информации о транковом порте (см. [возвращаемые значения](#возвращаемые-значения) и [примеры](#получение-информации-о-транковом-порте)).
## Параметры модуля
Ниже приведен список параметров для модуля **decort_trunk** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
<table>
<tr>
<th colspan="1">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="1">
<a name="id">
id
</a>
</td>
<td>
(int)
</td>
<td>
Идентификатор транкового порта.
</td>
</tr>
</table>
## Возвращаемые значения
Модуль **decort_trunk** возвращает информацию о транковом порте в виде словаря `facts` со следующими ключами:
<table>
<tr>
<th colspan="1">
Ключ
</th>
<th>
Тип
<br>данных
</th>
<th>
Описание
</th>
</tr>
<tr>
<td colspan="1">
account_ids
</td>
<td>
list | null
</td>
<td>
Список идентификаторов аккаунтов.
</td>
</tr>
<tr>
<td colspan="1">
created_by
</td>
<td>
str
</td>
<td>
Пользователь, создавший объект.
</td>
</tr>
<tr>
<td colspan="1">
created_timestamp
</td>
<td>
int
</td>
<td>
Unix-время создания.
</td>
</tr>
<tr>
<td colspan="1">
deleted_by
</td>
<td>
str | null
</td>
<td>
Пользователь, удаливший объект.
</td>
</tr>
<tr>
<td colspan="1">
deleted_timestamp
</td>
<td>
int | null
</td>
<td>
Unix-время удаления.
</td>
</tr>
<tr>
<td colspan="1">
description
</td>
<td>
str
</td>
<td>
Описание.
</td>
</tr>
<tr>
<td colspan="1">
guid
</td>
<td>
int
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="1">
id
</td>
<td>
int
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="1">
mac
</td>
<td>
str
</td>
<td>
MAC-адрес.
</td>
</tr>
<tr>
<td colspan="1">
name
</td>
<td>
str
</td>
<td>
Название.
</td>
</tr>
<tr>
<td colspan="1">
native_vlan_id
</td>
<td>
int | null
</td>
<td>
Идентификатор VLAN для нетегированного трафика.
</td>
</tr>
<tr>
<td colspan="1">
ovs_bridge
</td>
<td>
str
</td>
<td>
Сетевой мост Open vSwitch.
</td>
</tr>
<tr>
<td colspan="1">
status
</td>
<td>
str
</td>
<td>
Статус.
</td>
</tr>
<tr>
<td colspan="1">
updated_by
</td>
<td>
str | null
</td>
<td>
Пользователь, обновивший объект.
</td>
</tr>
<tr>
<td colspan="1">
updated_timestamp
</td>
<td>
int | null
</td>
<td>
Unix-время обновления.
</td>
</tr>
<tr>
<td colspan="1">
vlan_ids
</td>
<td>
str
</td>
<td>
Строка со списком идентификаторов VLAN.
</td>
</tr>
</table>
## Примеры использования
### Получение информации о транковом порте
```
- name: Example
hosts: localhost
tasks:
- name: Get trunk info
decort_trunk:
# Параметры для авторизации упущены
id: 1
```

File diff suppressed because it is too large Load Diff

@ -0,0 +1,114 @@
# Модуль decort_vins
## Обзор модуля decort_vins
Модуль decort_vins предназначен для управления внутренними сетями (Virtual Network Segment, ViNS) и позволяет производить с ними следующие действия:
- создавать
- на уровне ресурсной группы (если РГ задана)
- на уровне аккаунта (если РГ не задана)
- удалять (в корзину или безвозвратно)
- восстанавливать из корзины
- запрашивать информацию
- включать/отключать
- соединять (необходимы права администратора)
- изменять:
- включать/отключать SSH-доступ к виртуальному маршрутизатору (необходимы права администратора)
- включать/отключать режим **Custom Config** для виртуального маршрутизатора (необходимы права администратора)
- сохранять конфигурацию виртуального маршрутизатора для возможности последующего отката к ней (необходимы права администратора)
- зону
## Параметры модуля decort_vins
Ниже приведен список параметров для модуля **decort_vins** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит данная внутреняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должен быть задан либо идентификатор, либо имя аккаунта (см. параметр `account_name`). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
| account_name | (string) | Имя аккаунта, которому принадлежит данная внутренняя сеть. При идентификации внутренней сети по имени (см. параметр `vins_name`) должно быть задано либо имя, либо идентификатор аккаунта (см. параметр account_id). Если одновременно заданы и `account_id`, и `account_name`, то `account_name` игнорируется.|
|description | (string)| Текстовое описание внутренней сети. Данный аргумент является опциональным и учитывается только при создании внутренней сети, а при всех прочих операциях игнорируется.|
| ext_net_id | (int) | Идентификатор внешней сети, к которой должна быть подключена внутренняя сеть. Если задать значение `0`, то платформой будет выбрана внешняя сеть по умолчанию. |
| ext_ip_addr | (string) | IP-адрес внешней сети, заданной через параметр `ext_net_id`. Если не задан, то IP-адрес для внешней сети будет выбран платформой автоматически.
| ipcidr | (string) | Адрес сети для создаваемой внутренней сети. Если этот параметр не задан, то платформа назначит адрес автоматически. Обратите внимание, что внутренние сети, принадлежащие одному и тому же аккаунту, не могут иметь пересекающихся сетей.|
|rg_id | (int) | Идентификатор ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_id` и `rg_name`, то `rg_name` игнорируется.|
| rg_name | (string) | Имя ресурсной группы, в которой должна быть создана или уже существует внутренняя сеть. Если одновременно заданы `rg_name` и `rg_id`, то `rg_name` игнорируется.|
| state | (string)<br>Значения:<br/>`present`<br/>`absent`<br/>`enabled`<br/>`disabled`<br/>Default: `present` | Целевое состояние внутренней сети. |
| permanently | (bool)<br>Default: `false` | Параметр, использующийся для удаления внутренней сети. При значении `true` - внутренняя сеть удалится безвозвратно, а при `false` - попадёт в корзину. |
| vins_id | (int) | Идентификатор внутренней сети. Соответствующая внутренная сеть должна существовать. Таким образом, с помощью `vins_id` нельзя создать новую внутреннюю сеть, а только управлять уже имеющимися. Если задан данный параметр, то параметры `vins_name`, `account_name`, `account_id`, `rg_name` и `rg_id` игнорируются.|
| vins_name| (string) | Имя внутренней сети. Для идентификации внутренней сети требуется либо `vins_name` и информация об аккаунте/ресурсной группе, которой принадлежит сеть, либо `vins_id`. Обратите внимание, что это имя уникально только в рамках ресурсной группы или аккаунта, на уровне которого существует данная внутренняя сеть.|
| mgmtaddr | (list) | Список существующих IP-адресов виртуального маршрутизатора во внутренней сети, через которые необходимо разрешить SSH-доступ к виртуальному маршрутизатору.
| custom_config | (bool)<br>Default: `false` | Включить/отключить режим пользовательской конфигурации виртуального маршрутизатора. |
| config_save | (bool)<br>Default: `false` | Выполнить сохранение текущей конфигурации виртуального маршрутизатора для возможности последующего отката к ней. |
| connect_to | (list) | Список словарей, содержащих информацию о внутренних сетях, к которым необходимо подключить данную. См. примеры.
| zone_id | (int) | Идентификатор зоны.|
## Возвращаемые значения модуля decort_vins
Модуль decort_vins возвращает информацию о внутренней сети в виде словаря facts со следующими ключами:
| Ключ | Тип данных | Описание |
| --- | --- | --- |
| account_id | (int) | Уникальный целочисленный идентификатор аккаунта, которому принадлежит внутренняя сеть. |
| custom_net_addr | (list) | Список IP-адресов пользовательских интерфейсов виртуального маршрутизатора
| ext_ip_addr | (string) | IP-адрес интерфейса, которым виртуальный маршрутизатор подключён к внешней сети. |
| ext_net_id | (int) | Идентификатор внешней сети, к которой подключена внутренняя сеть. `-1` означает, что внутренняя сеть не подключёна к внешней сети. |
| gid | (int) | Идентификатор физического кластера (Grid ID), на базе которого развёрнуты ресурсы данной внутренней сети. |
| id | (int) | Уникальный целочисленный идентификатор внутренней сети. |
| name | (string) | Имя внутренней сети. |
| int_net_addr | (string) | Адрес внутренней сети. |
| rg_id | (int) | Уникальный целочисленный идентификатор ресурсной группы, которой принадлежит данная внутренняя сеть. Если данная внутренняя сеть создана на уровне аккаунта, то `rg_id=0`. |
| ssh_ipaddr | (list) | Список IP-адресов виртуального маршрутизатора во внутренней сети, на которых включён SSH-доступ к нему.
| ssh_password | (str) | Пароль для SSH-доступа к виртуальному маршрутизатору.
| ssh_port | (int) | Номер порта для SSH-подключения к виртуальному маршрутизатору.
| state | (string) | Состояние внутренней сети. |
| zone_id | (int) | Идентификатор зоны.|
## Пример использования модуля decort_vins
В данном примере создаётся внутренняя сеть с именем "MyVins01" (vins_name: "MyVins01").
Внутренняя сеть создаётся на уровне ресурсной группы "MyRg01" (rg_name: "MyRg01"), принадлежащей аккаунту "MyMainAccount" (account_name: "MyMainAccount"). Внутренняя сеть будет иметь подключение во внешнюю сеть по умолчанию (ext_net_id: 0).
```
- name: Manage ViNS on resource group level
decort_vins:
account_name: "MyMainAccount"
rg_name: "MyRg01"
authenticator: jwt
jwt: "{{ my_jwt.jwt }}"
controller_url: "https://ds1.digitalenergy.online"
ext_net_id: 0
vins_name: "MyVins01"
register: my_vins
```
Здесь результат исполнения модуля decort_vins записывается в переменную my_vins, которую можно дальше использовать в Ansible playbooks. Ниже показано, как получить и использовать идентификатор внутренней сети для подключения к нему виртуального сервера.
```
- name: Manage virtual machine
decort_kvmvm:
<< для краткости фрагмент опущен >>
networks:
- type: VINS
id: "{{ my_vins.facts.id }}"
<< для краткости фрагмент опущен >>
```
В данном примере идёт создание внутренней сети, а потом её привязка к внутренним сетям с id 864 и 196.
```
- name: Manage ViNS on resource group level
decort_vins:
authenticator: jwt
jwt: "{{ my_jwt.jwt }}"
controller_url: "https://cloud.digitalenergy.online"
vins_name: "ViNS_connected_by_decort_vins_module"
rg_id: 98
connect_to:
- id: 864
ipaddr: 192.168.5.66
netmask: 24
- id: 196
ipaddr: 192.168.9.133
netmask: 24
register: managed_vins
```

@ -0,0 +1,264 @@
# Модуль decort_vm_snapshot
## Обзор модуля
Модуль **decort_vm_snapshot** предназначен для выполнения следующих действий над снимками виртуальных машин:
- **создать** (см. [параметр state](#state) и [примеры](#создать))
- **удалить** (см. [параметр state](#state) и [примеры](#удалить))
- **отменить копирование данных из удаляемого снимка на СХД Shared** (см. [параметр state](#state) и [примеры](#отменить-копирование-данных-из-удаляемого-снимка-на-схд-shared))
- **получить основную информацию о снимке** (см. [возвращаемые значения](#основная-информация) и [примеры](#получить-основную-информацию-о-снимке))
- **получить информацию о размере снимка** (см. [параметр usage](#usage), [возвращаемые значения](#размер-снимка) и [примеры](#получить-информацию-о-размере-снимка))
## Параметры модуля
Ниже приведен список параметров для модуля **decort_vm_snapshot** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
<table>
<tr>
<th colspan="6">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="6">
<a name="label">
label
</a>
</td>
<td>
(str)
</td>
<td>
Метка снимка виртуальной машины. Если метка не указана при создании, она будет сгенерирована автоматически на основе даты и времени - <code>vm_name_2024-12-10_16-40-52</code>.
</td>
</tr>
<tr>
<td colspan="6">
<a name="state">
state
</a>
</td>
<td>
(str)
<br>Значения:
<br><code>absent</code>
<br><code>merge_aborted</code>
<br><code>present</code>
</td>
<td>
Целевое состояние.
<br><code>absent</code> - снимок удален.
<br><code>merge_aborted</code> - копирование данных из удаляемого снимка на СХД Shared отменено.
<br><code>present</code> - снимок существует.
</td>
</tr>
<tr>
<td colspan="6">
<a name="usage">
usage
</a>
</td>
<td>
(bool)
<br>Default:<code>false</code>
</td>
<td>
Получить информацию о реальном размере снимка виртуальной машины.
</td>
</tr>
<tr>
<td colspan="6">
<a name="vm_id">
vm_id
</a>
</td>
<td>
(int)
</td>
<td>
Идентификатор виртуальной машины.
<br>Обязательный параметр.
</td>
</tr>
</table>
## Возвращаемые значения
Модуль **decort_vm_snapshot** возвращает информацию о снимке виртуальной машины в виде словаря `facts` со следующими ключами:
### Основная информация
<table>
<tr>
<th colspan="6">
Ключ
</th>
<th>
Тип
<br>данных
</th>
<th>
Описание
</th>
</tr>
<tr>
<td colspan="6">
disks
</td>
<td>
list
</td>
<td>
Диски
</td>
</tr>
<tr>
<td colspan="6">
guid
</td>
<td>
str
</td>
<td>
Идентификатор снимка
</td>
</tr>
<tr>
<td colspan="6">
label
</td>
<td>
str
</td>
<td>
Метка снимка
</td>
</tr>
<tr>
<td colspan="6">
timestamp
</td>
<td>
int
</td>
<td>
Временная метка создания снимка
</td>
</tr>
<tr>
<td colspan="6">
vm_id
</td>
<td>
int
</td>
<td>
Идентификатор виртуальной машины
</td>
</tr>
</table>
### Размер снимка
<table>
<tr>
<th colspan="6">
Ключ
</th>
<th>
Тип
<br>данных
</th>
<th>
Описание
</th>
</tr>
<tr>
<td colspan="6">
stored
</td>
<td>
float
</td>
<td>
Размер снимка
</td>
</tr>
</table>
## Примеры использования
### Создать
#### С указанием метки
```
- name: Example
hosts: localhost
tasks:
- name: Create snapshot
decort_vm_snapshot:
# Параметры для авторизации упущены
vm_id: "{{ vm_id }}"
label: "{{ snapshot_label }}"
state: present
```
#### Без указания метки
```
- name: Example
hosts: localhost
tasks:
- name: Create snapshot
decort_vm_snapshot:
# Параметры для авторизации упущены
vm_id: "{{ vm_id }}"
state: present
```
### Удалить
```
- name: Example
hosts: localhost
tasks:
- name: Delete snapshot
decort_vm_snapshot:
# Параметры для авторизации упущены
vm_id: "{{ vm_id }}"
label: "{{ snapshot_label }}"
state: absent
```
### Отменить копирование данных из удаляемого снимка на СХД Shared
```
- name: Example
hosts: localhost
tasks:
- name: Abort merge
decort_vm_snapshot:
# Параметры для авторизации упущены
vm_id: "{{ vm_id }}"
label: "{{ snapshot_label }}"
state: merge_aborted
```
### Получить основную информацию о снимке
```
- name: Example
hosts: localhost
tasks:
- name: Get basic snapshot info
decort_vm_snapshot:
# Параметры для авторизации упущены
vm_id: "{{ vm_id }}"
label: "{{ snapshot_label }}"
```
### Получить информацию о размере снимка
```
- name: Example
hosts: localhost
tasks:
- name: Get snapshot usage
decort_vm_snapshot:
# Параметры для авторизации упущены
vm_id: "{{ vm_id }}"
label: "{{ snapshot_label }}"
usage: true
```

@ -0,0 +1,171 @@
# Модуль decort_zone
## Обзор модуля
Модуль **decort_zone** предназначен для получения информации о зоне (см. [возвращаемые значения](#возвращаемые-значения) и [примеры](#получение-информации-о-зоне)).
## Параметры модуля
Ниже приведен список параметров для модуля **decort_zone** (за исключением [общих параметров авторизации](./введение.md#общие-параметры-модулей-для-авторизации)):
<table>
<tr>
<th colspan="1">Параметр</th>
<th>Тип</th>
<th>Описание</th>
</tr>
<tr>
<td colspan="1">
<a name="id">
id
</a>
</td>
<td>
(int)
</td>
<td>
Идентификатор зоны.
</td>
</tr>
</table>
## Возвращаемые значения
Модуль **decort_zone** возвращает информацию о зоне в виде словаря `facts` со следующими ключами:
<table>
<tr>
<th colspan="1">
Ключ
</th>
<th>
Тип
<br>данных
</th>
<th>
Описание
</th>
</tr>
<tr>
<td colspan="1">
created_timestamp
</td>
<td>
int
</td>
<td>
Unix-время создания.
</td>
</tr>
<tr>
<td colspan="1">
deletable
</td>
<td>
bool
</td>
<td>
Возможность удаления.
</td>
</tr>
<tr>
<td colspan="1">
description
</td>
<td>
str
</td>
<td>
Описание.
</td>
</tr>
<tr>
<td colspan="1">
grid_id
</td>
<td>
int
</td>
<td>
Идентификатор ЦОДа.
</td>
</tr>
<tr>
<td colspan="1">
guid
</td>
<td>
int
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="1">
id
</td>
<td>
int
</td>
<td>
Идентификатор.
</td>
</tr>
<tr>
<td colspan="1">
name
</td>
<td>
str
</td>
<td>
Название.
</td>
</tr>
<tr>
<td colspan="1">
node_ids
</td>
<td>
list
</td>
<td>
Идентификаторы физических узлов.
</td>
</tr>
<tr>
<td colspan="1">
status
</td>
<td>
str
</td>
<td>
Статус.
</td>
</tr>
<tr>
<td colspan="1">
updated_timestamp
</td>
<td>
int
</td>
<td>
Unix-время обновления.
</td>
</tr>
</table>
## Примеры использования
### Получение информации о зоне
```
- name: Example
hosts: localhost
tasks:
- name: Get zone info
decort_zone:
# Параметры для авторизации упущены
id: 1
```

@ -1,5 +1,6 @@
## Документация:
- [Модули Ansible версии 10.0.0](./10.0.0/Home.md)
- [Модули Ansible версии 9.0.0](./9.0.0/Home.md)
- [Модули Ansible версии 8.0.0](./8.0.0/Home.md)
- [Модули Ansible версии 7.2.0](./7.2.0/Home.md)

Loading…
Cancel
Save