# 03.07 Вспомогательный модуль для получения авторизационного JWT токена decort_jwt ## Обзор модуля decort_jwt Модуль decort_jwt предназначен для получения авторизационного токена JWT (JSON Web Token). Данный модуль может быть полезен при массовом создании виртуальных серверов на базе одного и того же образа, так как позволяет оптимизировать количество API вызовов, инициируемых в адрес контроллера облачной платформы. По сути, данный модуль является провайдером информации и не управляет облачными ресурсами (всегда возвращает changed: False). ## Параметры модуля decort_jwt Ниже в алфавитном порядке приведен полный список параметров для модуля decort_jwt. Актуальную информацию по параметрам, которые поддерживает версия модуля, установленного на вашем Ansible-сервере, можно получить командой: `ansible-doc -t module decort_jwt` |Параметр | Тип, допустимые значения | Описание| | ------ | ------ | ------ | |app_id | (string) | Идентификатор приложения, использующийся для подключения к авторизационному серверу. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_APP_ID`.| |app_secret | (string) | Секретный ключ приложения, который используется для подключения к авторизационному серверу. Данный параметр является обязательным. Так как он содержит секретную информацию, то его не рекомендуется задавать непосредственно в playbook. Если параметр не задан в playbook, то модуль будет использовать значение переменной окружения `DECORT_APP_SECRET`.| |oauth2_url | (string) | URL авторизационного сервера, работающего по протоколу Oauth2, у которого запрашивается JWT. Данный параметр является обязательным. Если параметр не задан в playbook, модуль будет использовать значение переменной окружения `DECORT_OAUTH2_URL`.| |validity | (int) | Срок действия JWT в секундах. Данный параметр является опциональным, значение по умолчанию - 3600 сек.| | verify_ssl | (bool)
`True` <- default
`False` | Позволяет отключить проверку SSL сертификатов при выполнении API вызовов в адрес авторизационного сервера, например, при работе с изолированной облачной инфраструктурой, использующей самоподписанные сертификаты.
Применяйте данный параметр с осторожностью, предпочтительно в защищенных средах. | |workflow_callback | (string) | URL, по которому вышестоящее приложение (например, пользовательский портал или оркестратор верхнего уровня, инициирующий запуск Ansible playbook) ожидает API вызова, в параметрах которого модуль будет оперативно передавать информацию о своем статусе и текущей фазе исполнения. Данный параметр является опциональным. Функциональность callbacks в текущей версии модуля не реализована.| |workflow_context | (string) | Контекстная информация, которая будет содержаться в параметрах API вызова, адресованного к `workflow_callback` URL. Данная информация призвана однозначно идентифицировать задачу, выполняемую модулем в настоящий момент, чтобы оркестратор верхнего уровня мог сопоставить получаемые через вызов workflow_callback данные со своим внутренним состоянием и отслеживать инициированные им задачи. Параметр является опциональным и имеет значение только при условии, что также задан `workflow_callback`. Функциональность callbacks в текущей версии модуля не реализована.| ## Возвращаемые значения модуля decort_jwt При успешном выполнении модуль decort_jwt возвращает словарь, в котором по ключу jwt находится значение JWT-токена (тип string). ## Пример использования модуля decort_jwt В данном примере сначала получается JWT со сроком действия 1200 сек., а затем этот JWT используется для создания виртуального сервера в режиме авторизации jwt (подробнее о данном режиме см. в разделе «Примеры различных режимов авторизации»). ``` - hosts: ansible_master tasks: - name: obtain JWT with validity of 1200 sec from the OAuth2 provider decort_jwt: app_id: "{{ my_app_id }}" app_secret: "{{ my_app_secret }}" oauth2_url: "https://sso.digitalenergy.online" validity: 1200 delegate_to: localhost register: my_token ``` ``` - name: manage KVM VM in JWT authorization mode decort_kvmvm: authenticator: jwt jwt: "{{ my_token.jwt }}" controller_url: "https://cloud.digitalenergy.online" name: NewVM01 state: present cpu: 2 ram: 4096 <<<дальнейшие детали опущены>>> ``` Обратите внимание, как используется JWT при создании нового виртуального сервера (в предположении, что результат выполнения task для модуля decort_jwt был сохранен в переменной my_token): ``` jwt: "{{ my_token.jwt }}" ```