Шаблоны потоков заданий#
Шаблоны потоков заданий (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) – при выполнении заданий произошли ошибки. Продолжение выполнения заданий невозможно.