Шаблоны потоков заданий#
Шаблоны потоков заданий (workflow templates) используются для реализации сложной логики управления выполнением заданий. Они поддерживают следующую функциональность:
- Запуск заданий при выполнении определенных условий без необходимости их описания в playbook. 
- Обновление кода проектов и инвентарных списков. 
- Запуск заданий и потоков заданий только после одобрения пользователей (согласование). 
- Параллельный запуск нескольких потоков заданий из одного потока. 
- Синхронизация заданий, выполняемых параллельно. 
- Запуск потоков заданий по расписанию. 
- Рекурсивное использование шаблонов потоков заданий. - По отношению к родительскому шаблону потока заданий такие шаблоны потоков заданий называются вспомогательными. Артефакты, собранные во время выполнения заданий вспомогательного шаблона, могут быть переданы в следующие узлы. 
Шаблон потока заданий представляет собой направленный ациклический граф (DAG), начинающийся с корневого узла «НАЧАЛО» (START). Этот узел нельзя изменить или удалить.
Узлами графа могут выступать следующие компоненты и процессы:
- Согласование (approval). - При переходе к узлу этого типа пользователь с ролью «Одобрить» (Approval) должен подтвердить или отклонить выполнение дальнейших действий. 
- Обновление инвентаря (inventory update). - Если инвентарь использует внешние источники, при переходе к узлу этого типа выполняется обновление сведений об управляемых узлах. 
- Шаблон задания (job template). - При переходе к узлу этого типа запускается задание на основе указанного шаблона. 
- Обновление проекта (project update). - При переходе к узлу этого типа выполняется обновление проекта, если его источником являются репозиторий Git, репозиторий Subversion или внешний архив. 
- Шаблон потока заданий (workflow template). - В роли узлов этого типа могут выступать уже существующие шаблоны потоков заданий. 
- Служебное задание (management job). - Служебные задания используются для выполнения действий, связанных с внутренним функционированием контроллера. Для узлов этого типа поддерживаются следующие служебные задания: - Cleanup Activity Stream – удаление записей в ленте активности; 
- Cleanup Expired OAuth 2 Tokens – очистка токенов OAuth 2 с истекшим сроком действия; 
- Cleanup Expired Sessions – очистка истекших сессий пользователей контроллера; 
- Cleanup Job Details – очистка сведений о выполнении задания. 
 
Ветви графа могут быть одного из трех типов:
- успешное выполнение задания или согласование; 
- ошибка при выполнении задания, его отмена или отказ в согласовании; 
- безусловный переход, когда результат выполнения предыдущих этапов не имеет значения. 
Особенности работы с инвентарем#
Инвентарь может быть задан во время создания шаблона потока заданий или во время запуска потока заданий.
Если в настройках шаблона потока заданий включен выбор инвентаря при запуске, инвентарь может быть задан в настройках планировщика или узлов.
Если инвентарь указан в настройка шаблона задания, то значение из настроек шаблона потока заданий игнорируется.
Если в настройках шаблона задания включен выбор инвентаря при запуске, то используется инвентарь, заданный на уровне шаблона потока заданий.
Конвергенция#
Если узел имеет несколько входящих ветвей, настройки конвергенции определяют количество выполненных условий, необходимых для запуска задания узла. Поддерживаются следующие значения:
- Любой – достаточно успешного выполнения заданий на любом связанном узле; 
- Все – должны быть успешно выполнены все условия на всех связанных узлах. 
Пример
Пусть имеется шаблон потока заданий, показанный на схеме:
Узлы «Update systemd settings» и «Update APT cache» выполняют задания по обновлению настроек systemd и обновлению кеша APT соответственно. При этом указанные задания выполняются параллельно.
Задание «Run astra-upgrade» следует запускать только при успешном выполнении обоих предшествующих заданий. Для этого в настройках конвергенции следует выбрать значение «Все».
Важно
Порядок вычисления значения переменной set_stats, хранящей сведения о результатах выполнения задания, не определен.
По этой причине для хранения сведений о результатах выполнения заданий рекомендуется использовать уникальные названия ключей.
Дополнительные переменные (extra_vars)#
Значения переменных могут быть заданы следующими способами:
- Определение переменных и их значений в свойствах шаблона потока заданий. 
- Интерактивный опрос пользователя при запуске потока заданий. 
- Дополнительные переменные, переданные в момент запуска потока заданий. 
Подробности о порядке присвоения значений переменным см. в документе Переменные.
Состояния#
Шаблоны потоков заданий могут находиться в одном из следующих состояний:
- Ожидание (Waiting) – для запуска или продолжения выполнения заданий необходимо согласование. 
- Выполнение (Running) – выполняются задания. 
- Успех (Success) – выполнение задания завершено без ошибок. 
- Отмена (Cancel) – выполнение задания отменено. 
- Ошибка (Error) – при выполнении заданий произошли ошибки. Для обработки ошибок запущены соответствующие задания. 
- Сбой (Failed) – при выполнении заданий произошли ошибки. Продолжение выполнения заданий невозможно. 
