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

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

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

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

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

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

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

В потоке заданий файл описания инвентаря может быть задан на нескольких уровнях. Однако итоговый файл зависит от того, включен ли в шаблоне конкретного задания флаг Запрос при запуске (Prompt on launch) для поля Инвентарный список (Inventory). Если запрос не включен, то всегда используется файл описания инвентаря из шаблона задания.

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

Приоритет

Источник

Где задается

1

Узел потока заданий

Просмотреть визуализатор потока заданий ‣ Редактировать шаг ‣ Подсказки ‣ Инвентарный список (View workflow visualizer ‣ Edit step ‣ Prompts ‣ Inventory)

2

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

<workflow_job_template_name> ‣ Инвентарный список (<workflow_job_template_name> ‣ Inventory)

3 (Высший)

Описание, выбранное при запуске задания, если в шаблоне потока заданий включен Запрос при запуске (Prompt on Launch)

Окно Запрос при запуске (Prompt on Launch) при запуске задания

Запрос описания инвентаря при запуске#

Флаг Запрос при запуске (Prompt on launch) для поля Инвентарный список (Inventory) в шаблоне задания определяет, может ли шаблон потока заданий передать в этот шаблон задания другой файл описания инвентаря.

  • Если флаг Запрос при запуске (Prompt on launch) выключен, шаблон задания всегда использует файл описания инвентаря, указанный в самом шаблоне задания. Файл, заданный на уровне шаблона потока заданий, не применяется к этому шаблону задания.

  • Если флаг Запрос при запуске (Prompt on launch) включен, шаблон задания может получить описание инвентаря из одного из следующих источников:

    • узел потока заданий;

    • шаблон потока заданий;

    • ввод через опросы при запуске задания.

Таким образом, если в шаблоне задания указан файл описания инвентаря Inventory_A и выключен флаг Запрос при запуске (Prompt on launch), задание будет выполнено с описанием инвентаря Inventory_A. Даже если на уровне шаблона потока заданий указан файл описания инвентаря Inventory_B, он не будет применен к этому шаблону задания.

Если в шаблоне задания указан файл описания инвентаря Inventory_A и включен флаг Запрос при запуске (Prompt on launch), то при запуске через поток заданий будет использован файл описания инвентаря Inventory_B, заданный на уровне шаблона потока заданий.

Назначение описания инвентаря в узле потока заданий#

Чтобы задать файл описания инвентаря для отдельного узла потока заданий, выполните следующие действия:

  1. Нажмите на название необходимого шаблона потока заданий.

  2. Откройте визуализатор потока заданий с помощью кнопки Просмотреть визуализатор потока заданий (View workflow visualizer).

  3. Нажмите кнопку рядом с названием необходимого узла и выберите действие Редактировать шаг (Edit step).

  4. Перейдите на вкладку Подсказки (Prompts).

  5. В поле Инвентарный список (Inventory) выберите необходимый файл описания инвентаря.

  6. Сохраните изменения.

Поле Инвентарный список (Inventory) доступно в настройках узла только в том случае, если в связанном шаблоне задания для этого поля включен флаг Запрос при запуске (Prompt on launch). Если флаг выключен, файл описания инвентаря нельзя переопределить на уровне узла потока заданий.

Примеры выбора описания инвентаря#

В следующих примерах используются два описания инвентаря:

  • Inventory_A – файл описания инвентаря, заданный в шаблоне задания.

  • Inventory_B – файл описания инвентаря, заданный в шаблоне потока заданий.

Сценарий

Настройка шаблона задания

Настройка шаблона потока заданий

Итоговый файл описания инвентаря

Шаблон задания не запрашивает описание инвентаря при запуске

Inventory_A; Запрос при запуске (Prompt on launch) выключен

Inventory_B

Inventory_A

Шаблон задания запрашивает описание инвентаря при запуске

Inventory_A; Запрос при запуске (Prompt on launch) включен

Inventory_B

Inventory_B

Шаблон задания и шаблон потока заданий запрашивают описание инвентаря при запуске

Inventory_A; Запрос при запуске (Prompt on launch) включен

Inventory_B; Запрос при запуске (Prompt on launch) включен

Файл описания инвентаря, выбранный при запуске шаблона потока заданий

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

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

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

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

Пример

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

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