Настройка переменных#

В сценариях автоматизации часто используют переменные, значения которых задают не в самом сценарии а в других связанных с ним ресурсах (описание инвентаря и другие). Поскольку некоторая переменная может быть задана в нескольких таких ресурсах, существует механизм приоритетов, используемый утилитой ansible-playbook при выполнении сценария.

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

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

Приоритет переменных#

В шаблоне потока заданий (WFJT, Workflow Job Template) переменные могут быть заданы на нескольких уровнях. При этом значение из источника с более высоким приоритетом перезаписывает значение из источника с более низким приоритетом.

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

Приоритет

Источник

Где задается

1 (Низший)

Переменные шаблона задания

<job_template_name> ‣ Дополнительные переменные (<job_template_name> ‣ Extra variables)

2

Артефакты, порождаемые сценариями

С помощью модуля set_stats в сценарии предшествующего узла

3

Переменные узла потока заданий

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

4

Переменные шаблона потока заданий

<workflow_job_template_name> ‣ Дополнительные переменные (<workflow_job_template_name> ‣ Extra variables)

5 (Высший)

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

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

Запрос при запуске#

Флаг Запрос при запуске (Prompt on launch) для поля Дополнительные переменные (Extra Variables) в шаблоне задания влияет на то, как применяются переменные при запуске через поток заданий:

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

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

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

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

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

Внимание

Обратите внимание, если передать одинаковую переменную через опрос (Survey) и настройку Запрос при запуске (Prompt on Launch), итоговое значение переменной берется из опроса. Подробности о создании опроса см. в инструкции по графической консоли.

Таким образом, если в шаблоне задания в поле Дополнительные переменные (Extra Variables) задана переменная (например, my_var: default_value) и включен флаг Запрос при запуске (Prompt on launch), но переменная не задана ни на узле потока заданий, ни в шаблоне потока заданий, то будет использовано значение из поля Дополнительные переменные (Extra Variables) шаблона задания.

Назначение переменных в узле потока заданий#

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

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

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

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

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

  5. Укажите переменные в поле Переменные (Variables).

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

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

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

Примеры#

Следующие примеры помогут ознакомиться с механизмом назначения переменных.

Пример 1#

Переменная задана только в шаблоне задания:

x: 1

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

Результат в дочернем задании:

x: 1

Пример 2#

Переменная задана в шаблоне задания и в узле потока заданий.

Шаблон задания:

x: 1

Для поля Дополнительные переменные (Extra Variables) в шаблоне задания включен флаг Запрос при запуске (Prompt on launch).

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

x: 2

Результат в дочернем задании:

x: 2

Пример 3#

Переменная задана в шаблоне задания, на узле потока заданий и в шаблоне потока заданий.

Шаблон задания:

x: 1

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

x: 2

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

x: 3

Для поля Дополнительные переменные (Extra Variables) в шаблоне задания включен флаг Запрос при запуске (Prompt on launch).

Результат в дочернем задании:

x: 3

Пример 4#

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

Шаблон задания:

x: 1

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

{}

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

{}

Результат в дочернем задании:

{}

В этом случае переменная x в дочернее задание не передается.

Рекомендации#

При назначении переменных следуйте следующим рекомендациям:

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

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

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