Задания и потоки заданий#

В этом документе рассматриваются задания и потоки заданий.

Задания#

Задания (jobs) бывают следующих типов:

  • запуск playbook (run playbook) – выполнение playbook, указанного в шаблоне задания;

  • служебное (management jobs) – используется для обслуживания самого контроллера;

  • обновление проекта (source control update);

  • синхронизация инвентаря (inventory sync);

  • команда (command) – выполнение специальных команд (ad-hoc) на выбранных управляемых узлах.

Все задания контроллер ставит в очередь. Задания из очереди выполняются в том порядке, в котором они были в нее добавлены.

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

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

Запуск заданий может быть привязан к определенной группе узлов контроллера из плоскости исполнения. Для этого в настройках организации, шаблона заданий, шаблона потока заданий или инвентаря необходимо выбрать группу узлов контроллера.

Потоки заданий#

Потоки заданий создаются на основе шаблонов потоков заданий. При запуске потока заданий обход направленного ациклического графа начинается с точки «НАЧАЛО» (START).

Служебные задания#

В контроллере доступны следующие служебные задания:

  • Cleanup Activity Stream – очистка истории активности;

  • Cleanup Expired OAuth 2 Tokens – очистка токенов OAuth с истекшим сроком действия;

  • Cleanup Expired Sessions – очистка данных истекших сессий;

  • Cleanup Job Details – очистка истории выполнения заданий.

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

Задания синхронизации#

Задания синхронизации используются для обновления локальной копии playbook и инвентаря и называются, соответственно, заданиями обновления проекта и заданиями обновления инвентаря.

При выполнении задания обновления проекта контроллер получает версию кода, указанную в настройках источника:

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

  • если указана ветка – последний коммит в указанной ветке;

  • если указан тег – коммит, к которому привязан тег;

  • если указана ревизия – указанную ревизию кода.

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

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

  • Назначено (Pending) – задание создано, но еще не поставлено в очередь и не запущено;

  • Ожидание (Waiting) – задание поставлено в очередь, но еще не запущено;

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

  • Успех (Successful) – задание выполнено без ошибок либо с ошибками, для которых предусмотрен обработчик;

  • Сбой (Failed) – во время выполнения задания произошли ошибки, обработка которых не предусмотрена.

Журналирование#

Контроллер позволяет просматривать вывод выполнения заданий и специальных команд в реальном времени. Журнал выполнения каждого задания сохраняется в контроллере.