# 03.02 Модуль decort_osimage
## Обзор модуля decort_osimage
Модуль decort_osimage предназначен для выполнения следующих действий над образами, созданными в облачной платформе DECORT:
1. Создание нового образа операционной системы для виртуальных машин.
2. Создание виртуального образа для образа операционной системы.
3. Изменение имени образа (в случае изменения имени виртуального образа, имя и id виртуального образа указываются как image_name и image_id.
4. Привязка другого образа операционной системы к виртуальному образу.
5. Удаление существующего образа, привязанного к аккаунту.
6. Получение информации об образе.
Также данный модуль может быть полезен при массовом создании экземпляров compute (напр., виртуальных серверов) на базе одного и того же образа, так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы.
## Параметры модуля decort_osimage
Ниже приведен полный список параметров для модуля decort_osimage. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой:
| Параметр | Тип, допустимые значения | Описание |
| ------ | ------ | ------ |
| app_id | (string) | Идентификатор приложения, использующийся для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения DECORT_APP_ID. |
| app_secret | (string) | Секретный ключ приложения, который используется для подключения к контроллеру облачной платформы DECORT в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения DECORT_APP_SECRET. |
| authenticator | Значения:
`legacy`
`oauth2`
`jwt` <- default | Режим аутентификации при подключении к контроллеру облачной платформы DECORT. |
| controller_url | (string) | URL контроллера, соответствующего экземпляру облачной платформы DECORT, в рамках которого должен быть создан (или уже существует) данный виртуальный сервер. Данный параметр является обязательным. |
| jwt | (string) | JSON Web Token (JWT), который будет использоваться для подключения к контроллеру облачной платформы DECORT в режиме authenticator: jwt Данный параметр является обязательным для указанного режима. Так как он содержит потенциально секретную информацию, а сам JWT, как правило, имеет ограниченное время жизни, то его не рекомендуется задавать непосредственно в playbook. Если этот параметр не определен в playbook, то модуль будет использовать значение переменной окружения `DECORT_JWT`.|
| oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, который должен использоваться в режиме authenticator: oauth2. Данный параметр является обязательным для указанного режима. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`. |
| verify_ssl | (bool) | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес контроллера облачной инфраструктуры, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты. Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. |
| workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована. |
| workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов `workflow_callback` данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`. Функциональность callbacks в текущей версии модуля не реализована. |
| account_Id | (string) | Уникальный целочисленный идентификатор аккаунта. Используется для поиска образов, а тажке для их создания. |
| account_name | (string) | Имя аккаунта. Используется для получения уникального целочисленного идентификатора аккаунта. |
| virt_id | (integer) | Уникальный целочисленный идентификатор виртуального образа. Может использоваться для получения информации о виртуальном образе, а также для привязки к нему другого образа операционной системы.|
| virt_name | (string) | Имя виртуального образа. Используется для получения `virt_id`, а в последвии информации о виртуальном образе, а также для создания виртуального образа и привязки к нему другого образа операционной системы.|
| state | (string) | Состояние образов. При значении present идет создание образов операционной системы, к которым привязан указанный в `account_Id` или `account_name` аккаунт. При значении absent идет их удаление. |
| drivers | (string) | Список типов compute (напр., виртуальных серверов), подходящих для образа операционной системы. Прим. `KVM_X86`. Используется при создании образа операционной системы.|
| architecture | (string) | Бинарная архитектура образа. Прим. `X86_64` или `PPC64_LE`. Используется при создании образа операционной системы.|
| imagetype | (string) | Тип образа. `linux`, `windows` или `other`. По умолчанию установлено `linux`. Используется при создании образа операционной системы.|
| boottype | (string) | Тип загрузки образа. `bios` или `uefi`. По умолчанию установлено `uefi`. Используется при создании образа операционной системы.|
| url | (string) | Унифицированный указатель ресурса (URL), указывающий на образ iso операционной системы. Используется при создании образа операционной системы.|
| sepId | (integer) | Уникальный целочисленный идентификатор конечной точки провайдера хранения. Указывается в паре с `poolName`. Используется при создании образа операционной системы.|
| poolName | (string) | Пул, в котором будет создан образ. Указывается в паре с `sepId`. Используется при создании образа операционной системы.|
| hotresize | (bool) | Поддерживает ли образ "горячее" изменение размера. По умолчанию установлено `false`. Используется при создании образа операционной системы.|
| image_username | (string) | Опциональное имя пользователя для образа. Используется при создании образа операционной системы. |
| image_password | (string) | Опциональный пароль для образа. Используется при создании образа операционной системы. Используется при создании образа операционной системы.|
| usernameDL | (string) | Имя пользователя для загрузки бинарного носителя. Используется в паре с `passwordDL`. Используется при создании образа операционной системы. |
| passwordDL | (string)| Пароль для загрузки бинарного носителя. Используется в паре с `usernameDL`. Используется при создании образа операционной системы. |
| permanently | (bool) | Навсегда ли удалить образ. Используется при удалении убраза. По умолчанию установлено false.|
## Возвращаемые значения модуля decort_osimage
Модуль decort_osimage возвращает информацию о XXX в виде словаря facts со следующими ключами:
| Ключ | Тип данных | Описание |
| ------ | ------ | ------ |
| arch | string | Аппаратная архитектура, с которой совместим данный образ. Возможные значения: X86_64 (Intel x86), PPC64_LE (IBM PowerPC). |
| id | int | Уникальный целочисленный идентификатор данного образа. |
| linkto | int | Уникальный целочисленный идентификатор образа операционной системы, который привязан к данному виртуальному. |
| name | string | Имя образа. Обратите внимание, что имя образа может содержать пробелы. |
| pool | string | Пул на системе хранения данных, в котором находится данный образ.|
| sep_id |int | Идентификатор системы хранения (Storage Endpoint Provider), на которой хранится данный образ. |
| size |int | Размер образа в ГБ. Загрузочный диск экземпляра compute, создаваемого на базе данного образа, должен иметь как минимум такой же размер. |
| state | string | Текущий статус образа. Возможные значения: CREATED, DISABLED, DESTROYED. Экземпляры compute можно создавать только на базе образов, которые находятся в статусе CREATED.|
| type | string | Тип операционной системы внутри данного образа. Возможные значения: Linux, Windows.|
## Пример использования модуля decort_osimage
Пример создания образа операционной системы Alpine Linux.
```
- name: create_osimage
decort_osimage:
authenticator: oauth2
verify_ssl: False
controller_url: "https://ds1.digitalenergy.online"
state: present
image_name: "alpine_linux3.14.0"
account_Id: 12345
url: "https://dl-cdn.alpinelinux.org/alpine/v3.14/releases/x86_64/alpine-virt-3.14.0-x86_64.iso"
boottype: "uefi"
imagetype: "linux"
hotresize: False
image_username: "test"
image_password: "p@ssw0rd"
usernameDL: "testDL"
passwordDL: "p@ssw0rdDL"
architecture: "X86_64"
drivers: "KVM_X86"
delegate_to: localhost
register: osimage
```
Пример получения образа операционной системы по имени образа.
```
- name: get_osimage
decort_osimage:
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
image_name: "alpine_linux_3.14.0"
account_Id: 12345
delegate_to: localhost
register: osimage
```
Пример создания виртуального образа. Также в случае, если виртуальный образ уже существует, но к нему привязан другой образ операционной системы, он привяжет к себе указанный в примере образ операционной системы.
```
- name: create_virtual_osimage
decort_osimage:
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
image_name: "alpine_linux_3.14.0"
virt_name: "alpine_last"
delegate_to: localhost
register: osimage
```
Обратите внимание, что в данным примере можно использовать как image_name, так и image_id. Также можно использовать либо virt_name, либо virt_id.
Пример переименования образа.
```
- name: rename_osimage
decort_osimage:
authenticator: oauth2
controller_url: "https://ds1.digitalenergy.online"
image_name: "alpine_linux_3.14.0v2.0"
image_id: 54321
delegate_to: localhost
register: osimage
```