Шаблоны потоков заданий#

Шаблоны потоков заданий (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 – очистка сведений о выполнении задания.

Ветви графа могут быть одного из трех типов:

  • успешное выполнение задания или согласование;

  • ошибка при выполнении задания, его отмена или отказ в согласовании;

  • безусловный переход, когда результат выполнения предыдущих этапов не имеет значения.

Особенности работы с инвентарем#

Инвентарь может быть задан во время создания шаблона потока заданий или во время запуска потока заданий.

Если в настройках шаблона потока заданий включен выбор инвентаря при запуске, инвентарь может быть задан в настройках планировщика или узлов.

Если инвентарь указан в настройка шаблона задания, то значение из настроек шаблона потока заданий игнорируется.

Если в настройках шаблона задания включен выбор инвентаря при запуске, то используется инвентарь, заданный на уровне шаблона потока заданий.

Конвергенция#

Если узел имеет несколько входящих ветвей, настройки конвергенции определяют количество выполненных условий, необходимых для запуска задания узла. Поддерживаются следующие значения:

  • Любой – достаточно успешного выполнения заданий на любом связанном узле;

  • Все – должны быть успешно выполнены все условия на всех связанных узлах.

Пример

Пусть имеется шаблон потока заданий, показанный на схеме:

../../../../_images/convergention-light.svg ../../../../_images/convergention-dark.svg

Узлы «Update systemd settings» и «Update APT cache» выполняют задания по обновлению настроек systemd и обновлению кеша APT соответственно. При этом указанные задания выполняются параллельно.

Задание «Run astra-upgrade» следует запускать только при успешном выполнении обоих предшествующих заданий. Для этого в настройках конвергенции следует выбрать значение «Все».

Важно

Порядок вычисления значения переменной set_stats, хранящей сведения о результатах выполнения задания, не определен. По этой причине для хранения сведений о результатах выполнения заданий рекомендуется использовать уникальные названия ключей.

Дополнительные переменные (extra_vars)#

Значения переменных могут быть заданы следующими способами:

  • Определение переменных и их значений в свойствах шаблона потока заданий.

  • Интерактивный опрос пользователя при запуске потока заданий.

  • Дополнительные переменные, переданные в момент запуска потока заданий.

Подробности о порядке присвоения значений переменным см. в документе Переменные.

Состояния#

Шаблоны потоков заданий могут находиться в одном из следующих состояний:

  • Ожидание (Waiting) – для запуска или продолжения выполнения заданий необходимо согласование.

  • Выполнение (Running) – выполняются задания.

  • Успех (Success) – выполнение задания завершено без ошибок.

  • Отмена (Cancel) – выполнение задания отменено.

  • Ошибка (Error) – при выполнении заданий произошли ошибки. Для обработки ошибок запущены соответствующие задания.

  • Сбой (Failed) – при выполнении заданий произошли ошибки. Продолжение выполнения заданий невозможно.