Шаблоны заданий#

Шаблон задания (Job Template) связывает между собой инвентарь и Ansible playbook из выбранного проекта.

Для шаблонов заданий поддерживаются следующие дополнительные параметры:

  • тип задания (job type);

  • среда исполнения (execution environment);

  • полномочия (credentials);

  • метки (labels);

  • переменные (variables);

  • ответвления (forks);

  • лимит на управляемые узлы (limit);

  • степень подробности вывода (verbosity);

  • деление на срезы (job slicing);

  • таймаут (timeout);

  • показ изменений (show changes);

  • теги задания (job tags) и пропуск тегов (skip tags);

  • повышение привилегий (privilege escalation);

  • параллельные задания (concurrent jobs);

  • обратные вызовы процесса обеспечения сервиса (provisioning callbacks);

  • хранилище фактов (fact storage);

  • запрет отката группы узлов управления (prevent instance group fallback);

  • настройки webhook (webhook).

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

  • Если задание на основе шаблона запускается вне потока заданий – в момент запуска задания.

  • Если шаблон задания используется в шаблоне потока заданий – в момент добавления шаблона задания в шаблон потока заданий.

Тип задания#

Поддерживаются задания двух типов:

  • Исполнение (Run) – на управляемых узлах будут выполнены необходимые задания автоматизации. Этот тип заданий используется по умолчанию.

  • Проверка (Check) – выполняется проверка синтаксиса playbook, настроек среды исполнения и окружения, в котором будут выполняться задания автоматизации. Изменения в конфигурации управляемых узлов не производятся.

    Использование этого значения эквивалентно запуску команды ansible-playbook с параметром --check.

Среда исполнения#

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

Полномочия#

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

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

Метки#

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

Переменные#

Переменные шаблона задания позволяют задать значения переменных во время выполнения заданий.

Использование этого параметра эквивалентно запуску команды ansible playbook с одним или несколькими аргументами --extra-vars (-e).

В переменных шаблона задания используется формат ключ:значение.

Поддерживаются форматы YAML и JSON.

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

Ответвления#

Количество параллельных процессов, используемых для выполнения playbook.

Если для этого параметра задано значение меньше 1, используется значение по умолчанию, равное 5.

Максимальное значение этого параметра задается в значении системной настройки контроллера Максимальное количество ответвлений задания (Maximum number of forks per job) и по умолчанию равно 200.

Лимит на управляемые узлы#

Фильтр управляемых узлов по их названию.

Если значение не указано, либо равно all или *, действие playbook распространяется на все узлы из выбранного инвентарного списка.

Значение по умолчанию – пустая строка (фильтрация узлов не используется).

Подробности о шаблонах названий узлов см. в документации Ansible.

Степень подробности#

Детализация журнала выполнения задания:

  • 0 – нормальный (normal);

  • 1 – подробный (verbose);

  • 2 – более подробный (more verbose);

  • 3 – отладка (debug);

  • 4 – отладка подключения (connection debug);

  • 5 – отладка WinRM (WinRM debug).

Значение по умолчанию – 0.

Деление на срезы#

По умолчанию количество срезов равно 1 – все задачи из playbook обычным образом запускаются с одним и тем же инвентарем на одном исполняющем узле.

../../../../_images/job-slice-count-1-light.svg ../../../../_images/job-slice-count-1-dark.svg

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

../../../../_images/job-slice-count-s-light.svg ../../../../_images/job-slice-count-s-dark.svg

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

При использовании деления на срезы контроллер реализует следующее поведение:

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

    Предупреждение

    Не следует использовать деление на срезы для заданий, требующих взаимодействия между управляемыми узлами. Любое отдельное задание может завершиться ошибкой, но Astra Automation Controller не будет пытаться обнаружить или учесть наборы сценариев (playbook), выполнение которых завершилось ошибкой при запуске разделенного задания.

  • Каждое отдельное задание содержит информацию о шаблоне задания, инвентаре, количестве срезов и порядковом номере среза.

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

    Примечание

    Допускается установка крайне высоких значений количества срезов (порядка нескольких тысяч), однако, это может привести к снижению производительности, так как планировщик Astra Automation Controller не предназначен для управления потоками заданий, задания которых одновременно исполняются на тысячах узлов. Для обеспечения высокой производительности рекомендуется использовать количество срезов, не превышающее количество исполняющих узлов.

  • В отдельные задания передаются значения указанных пользователем и дополнительных переменных (extra vars), применяются все переменные и лимиты на управляемые узлы, указанные в шаблоне задания. Однако, если в отдельное задание переданы лимиты на управляемые узлы, при которых итоговый инвентарный список становится пустым, выполнение задания считается неуспешным.

  • Отдельные задания могут выполняться на любом узле, при этом не всегда одновременно (например, из-за высокой нагрузки на систему).

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

Таймаут#

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

При значении 0 используется таймаут, заданный в системных настройках контроллера (значение по умолчанию – 0, время выполнения заданий не ограничивается).

Отрицательное значение разрешает неограниченно долгое выполнение задания.

Значение по умолчанию – 0 (используется значение, заданное в глобальных настройках контроллера).

Показ изменений#

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

Использование этого параметра эквивалентно запуску команды ansible-playbook с параметром --diff.

Примечание

Для отображения списка изменений необходима поддержка со стороны используемых модулей Ansible.

Теги#

Эта настройка позволяет запускать или пропускать описанные в playbook задачи, отмеченные определенными тегами.

По умолчанию фильтрация по тегам не используется – выполняются все задачи, описанные в playbook.

Особенности настройки и применения:

  • Названия тегов задаются одной строкой через запятую.

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

    Использование этого параметра эквивалентно запуску команды ansible-playbook с параметром --tags.

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

    Использование этого параметра эквивалентно запуску команды ansible-playbook с параметром --skip-tags.

Подробности о тегах см. в документации Ansible.

Повышение привилегий#

Если эта настройка включена, playbook запускается с повышенными привилегиями.

Использование этого параметра эквивалентно запуску команды ansible-playbook с параметром --become.

Важно

Запрос пароля суперпользователя не производится. Убедитесь, что на управляемых узлах разрешено выполнение команды sudo без ввода пароля.

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

Параллельные задания#

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

Обратные вызовы процесса обеспечения сервиса#

Если эта настройка включена, необходимо указать ключ конфигурации узла. Это URL, по которому узел может связаться с Astra Automation Controller и запросить обновление конфигурации, используя шаблон задания.

Хранилище фактов#

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

Настройки webhook#

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

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

  • Сервис – сервис хранения исходного кода из списка: - Bitbucket Data Center; - GitHub; - GitLab.

  • Webhook URL – адрес, по которому доступен нужный webhook. Поле заполняется автоматически.

  • Ключ webhook – ключ, используемый для подписи данных, отправляемых в Astra Automation Controller. Значение из этого поля следует указать в параметрах webhook используемого сервиса хранения исходного кода.

  • Полномочия webhook – полномочия, используемые для передачи данных обратно в webhook.