Настройка переменных#
В сценариях автоматизации часто используют переменные, значения которых задают не в самом сценарии а в других связанных с ним ресурсах (описание инвентаря и другие).
Поскольку некоторая переменная может быть задана в нескольких таких ресурсах, существует механизм приоритетов, используемый утилитой ansible-playbook при выполнении сценария.
В Automation Controller существует собственный механизм приоритизации, который может задавать значение переменной для сценария до его исполнения в EE. Это значение имеет более высокий приоритет, чем значения, задаваемые через упомянутые ресурсы.
В шаблонах можно определять переменные, которые будут использованы сценариями автоматизации в соответствующих заданиях при их запуске. Это позволяет использовать один сценарий в различных шаблонах с разными значениями переменных.
Приоритет переменных#
В шаблоне потока заданий (WFJT, Workflow Job Template) переменные могут быть заданы на нескольких уровнях. При этом значение из источника с более высоким приоритетом перезаписывает значение из источника с более низким приоритетом.
Следующая таблица представляет типовую последовательность шагов по заданию переменных вверх по иерархии WFJT. Соответственно каждый последующий шаг переопределяет значение переменной, заданное на предыдущих шагах.
Приоритет |
Источник |
Где задается |
|---|---|---|
1 (Низший) |
Переменные шаблона задания |
() |
2 |
Артефакты, порождаемые сценариями |
С помощью модуля set_stats в сценарии предшествующего узла |
3 |
Переменные узла потока заданий |
() |
4 |
Переменные шаблона потока заданий |
() |
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) шаблона задания.
Назначение переменных в узле потока заданий#
Чтобы задать переменные для отдельного узла потока заданий, выполните следующие действия:
Нажмите на название необходимого шаблона потока заданий.
Откройте визуализатор потока заданий с помощью кнопки Просмотреть визуализатор потока заданий (View workflow visualizer).
Нажмите кнопку ⋮ рядом с названием необходимого узла и выберите действие Редактировать шаг (Edit step).
Перейдите на вкладку Подсказки (Prompts).
Укажите переменные в поле Переменные (Variables).
Сохраните изменения.
Переменные, заданные в свойствах узла потока заданий, применяются только к сценариям этого узла. Если та же переменная задана в шаблоне потока заданий, будет использовано значение из него.
Переменная, заданная в узле потока заданий, переопределяет значение, заданное в шаблоне задания. Это удобно, если один и тот же шаблон задания используется в нескольких узлах потока заданий с разными значениями переменных.
Примеры#
Следующие примеры помогут ознакомиться с механизмом назначения переменных.
Пример 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) нужного узла.
Если одно и то же значение переменной должно применяться на уровне всего потока заданий, задайте переменные в шаблоне потока заданий.