Действия#
При наступлении событий контроллер EDA может выполнять следующие действия:
none;
debug
#
Действие debug
используется для вывода отладочной информации.
Настройки:
msg
– строка или массив строк для вывода вstdout
. Может содержать ссылки на события.var
– переменная для вывода вstdout
. Может содержать ссылки на события.Использование выражения Jinja
{{ }}
необязательно.
Если debug
вызывается без аргументов, он выводит события, соответствующие текущей задаче.
Важно
Параметры msg
и var
взаимоисключающие – используйте только один из них.
Примеры использования debug
Отладка с одиночным сообщением.
Пример вывода простого отладочного сообщения при условии
event.i >= 5
:name: debug with single message condition: event.i >= 5 action: debug: msg: Simple debug message
Отладка с несколькими сообщениями.
Здесь
debug
выводит массив строк, включая ссылку на событие:name: debug with multiple messages condition: event.i >= 5 action: debug: msg: - "Message 1 {{ event }}" - Second Message
Отладка с переменной.
Этот вариант выводит значение
event.i
:name: debug with var condition: event.i >= 5 action: debug: var: event.i
none
#
Действие none
не выполняет никаких операций.
Оно полезно при написании тестов, когда необходимо определить условие без последующих действий.
Данное действие не имеет настроек.
Пример использования none
Проверка срабатывания правила без выполнения реального действия:
name: test condition
condition: event.status == "ready"
action:
none: {}
post_event
#
Действие post_event
отправляет событие в активированный набор правил.
Настройки:
event
– словарь событий для отправки.Обязательный параметр.
ruleset
– название набора правил, в который будет отправлено событие.Если не указано, используется текущий набор правил.
Важно
Префиксы events
и facts
имеют область видимости только внутри правил и не могут быть использованы за их пределами.
При доступе к данным события используйте выражение Jinja {{ }}
.
Примеры использования post_event
Пример 1.
В активный набор правил передается переменная
j
со значением4
.action: post_event: ruleset: Test rules4 event: j: 4
Пример 2. Использование данных, сохраненных с помощью оператора присваивания.
name: multiple conditions condition: all: - events.first << event.i == 0 - events.second << event.i == 1 - events.third << event.i == events.first.i + 2 action: post_event: ruleset: Test rules4 event: data: "{{events.third}}"
print_event
#
Действие print_event
выводит данные события в стандартный поток вывода (stdout
).
Настройки:
pretty
– форматирование вывода:true
– в удобочитаемом виде (отформатированный JSON).false
– без форматирования.
Значение по умолчанию –
true
.var_root
– ключ в глубоко вложенном словаре, значение которого будет заменять исходные данные события при выводе. Может принимать словарь, если необходимо обработать несколько событий.
Примеры использования print_event
Пример 1. Форматированный вывод только данных, хранящихся в ключе
i
action: print_event: pretty: true var_root: i
Пример 2.
На этапе проверки условий в переменные
events.webhook
иevents.kafka
записываются значения ключейevent.webhook.payload.url
иevent.kafka.message.channel
, которые затем выводятся в стандартный поток вывода.name: Multiple events with var_root condition: all: - events.webhook << event.webhook.payload.url == "http://www.example.com" - events.kafka << event.kafka.message.channel == "red" action: print_event: var_root: webhook.payload: webhook kafka.message: kafka
retract_fact
#
Действие retract_fact
удаляет факт из рабочего набора правил.
Настройки:
fact
– удаляемый словарь фактов.Обязательный параметр.
ruleset
– название набора правил, из которого будет удален факт.Если не указано, используется текущий набор правил.
partial
– является ли удаляемый факт неполным (содержит не все ключи).Значение по умолчанию –
true
.
Пример использования retract_fact
Удаление факта { j: 3 }
из указанного набора правил:
action:
retract_fact:
ruleset: Test rules4
fact:
j: 3
run_job_template
#
Действие run_job_template
запускает шаблон задания.
Важно
Для использования этого действия необходимо передать параметры командной строки:
--controller-url
;--controller-token
(или--controller-username
вместе с--controller-password
).
Чтобы получить доступ к информации о событии в пространстве имен
ansible_eda
, в настройках шаблона задания включите флаг Запрос при запуске (Prompt on launch) для поля Переменные (Variables). В качестве альтернативы можно создать опрос, включающий переменнуюansible_eda
.Если необходимо ограничить список управляемых узлов на основе информации о событии, в настройках шаблона задания включите флаг Запрос при запуске (Prompt on launch) для поля Лимит (Limit).
Настройки:
name
– название шаблона задания.Обязательный параметр.
organization
– название организации, которой принадлежит шаблон задания.Обязательный параметр.
set_facts
– сохранение артефактов выполнения задания на основе шаблона в наборе правил как фактов.post_events
– сохранение артефактов выполнения задания на основе шаблона в наборе правил как событий.ruleset
– название набора правил, в который будут добавлены факты или события.Значение по умолчанию – текущий набор правил.
retry
– перезапуск задания в случае неудачи.Значение по умолчанию –
false
.retries
– количество повторных попыток перезапуска задания на основе шаблона в случае неудачи.delay
– интервал между попытками перезапуска (в секундах).var_root
– ключ в глубоко вложенном словаре, значение которого заменяет исходные данные события. Может принимать словарь для нескольких совпадающих событий.job_args
– дополнительные аргументы для API запуска задания на основе шаблона. Данные опроса и другие дополнительные переменные передаются черезextra_vars
. События и факты автоматически добавляются вextra_vars
.
Пример использования retract_fact
Запуск задания на основе шаблона Deploy App, принадлежащего организации DevOps. Automation Controller попытается выполнить задание три раза. Интервал между попытками – 10 секунд.
action:
run_job_template:
name: Deploy App
organization: DevOps
retry: true
retries: 3
delay: 10
run_module
#
Действие run_module
выполняет модуль Ansible с указанными параметрами.
Настройки:
name
– название модуля Ansible в формате FQCN (полное название коллекции).Обязательный параметр.
module_args
– аргументы, передаваемые модулю.retry
– перезапуск модуля в случае неудачи.Значение по умолчанию –
false
.retries
– количество повторных попыток перезапуска модуля в случае неудачи.Значение по умолчанию –
0
.delay
– интервал между попытками повторного запуска (в секундах).verbosity
– уровень детализации вывода (от 1 до 4).extra_vars
– дополнительные переменные, передаваемые в playbook.json_mode
– отправка данных событий playbook вstdout
в формате JSON.set_facts
– сохранение артефактов выполнения модуля в наборе правил как фактов.post_events
– сохранение артефактов выполнения модуля в наборе правил как событий.ruleset
– название набора правил, в который будут добавлены факты или события.Значение по умолчанию – текущий набор правил.
var_root
– ключ в глубоко вложенном словаре, значение которого заменит исходные данные события.
Пример использования run_module
Три попытки выполнения команды uptime
с интервалом 5 секунд:
action:
run_module:
name: ansible.builtin.command
module_args:
cmd: "uptime"
retry: true
retries: 3
delay: 5
run_playbook
#
Действие run_playbook
выполняет playbook с заданными параметрами.
Настройки:
name
– название playbook в формате FQCN (полное название коллекции) или путь к файлу. Относительный путь указывайте по отношению к каталогу, в котором выполняется командаansible-rulebook
.Обязательный параметр.
set_facts
– сохранение артефактов выполнения playbook в наборе правил как фактов.post_events
– сохранение артефактов выполнения playbook в наборе правил как событий.ruleset
– название набора правил, в который будут добавлены факты или события.Значение по умолчанию – текущий набор правил.
retry
– перезапуск playbook в случае неудачи.retries
– количество повторных попыток перезапуска playbook в случае неудачи.delay
– интервал между попытками повторного запуска (в секундах).verbosity
– уровень детализации вывода (от 1 до 4).var_root
– ключ в глубоко вложенном словаре, значение которого заменит исходные данные события.extra_vars
– дополнительные переменные, передаваемые в playbook.json_mode
– отправка данных событий playbook вstdout
в формате JSON.copy_files
– копирование локального файла playbook в каталог проектаansible-runner
. Не требуется, если playbook выполняется из коллекции Ansible.
Пример использования run_playbook
Запуск playbook с дополнительными переменными и повторными попытками:
action:
run_playbook:
name: /home/user/ansible/playbook.yml
extra_vars:
my_var: "Some value"
retry: true
retries: 2
delay: 10
verbosity: 3
run_workflow_template
#
Действие run_workflow_template
запускает поток заданий на основе шаблона.
Важно
Для использования этого действия необходимо передать параметры командной строки:
--controller-url
;--controller-token
(или--controller-username
вместе с--controller-password
).
Настройки:
name
– название шаблона потока заданий.Обязательный параметр.
organization
– название организации, которой принадлежит шаблон потока заданий.Обязательный параметр.
set_facts
– сохранение артефактов выполнения заданий в наборе правил как фактов.post_events
– сохранение артефактов выполнения заданий в наборе правил как событий.ruleset
– название набора правил, в который будут добавлены факты или события.Значение по умолчанию – текущий набор правил.
retry
– перезапуск потока заданий в случае неудачи.retries
– количество повторных попыток перезапуска потока заданий в случае неудачи.delay
– интервал между попытками повторного запуска (в секундах).var_root
– ключ в глубоко вложенном словаре, значение которого заменит исходные данные события.job_args
– дополнительные аргументы для API запуска потока заданий. События и факты автоматически добавляются вextra_vars
.
Пример использования run_workflow_template
Запуск потока заданий резервного копирования базы данных:
action:
run_workflow_template:
name: Database Backup
organization: Operations
job_args:
extra_vars:
backup_location: "/mnt/backups"
retention_days: 7
set_fact
#
Действие set_fact
используется для добавления фактов в рабочий набор правил.
Настройки:
fact
– словарь фактов для добавления.Обязательный параметр.
ruleset
– название набора правил, в который добавляется факт.Значение по умолчанию – текущий набор правил.
Примеры использования set_fact
Добавление факта в указанный набор правил.
action: set_fact: ruleset: Test rules4 fact: j: 1
Добавление факта на основе сохраненных данных события.
name: multiple conditions condition: all: - events.first << event.i == 0 - events.second << event.i == 1 - events.third << event.i == events.first.i + 2 action: set_fact: ruleset: Test rules4 fact: data: "{{events.first}}"
Добавление факта при выполнении единственного условия.
name: single condition condition: event.i == 23 action: set_fact: fact: myfact: "{{event.i}}"
Примечание
Используйте выражение Jinja
{{ }}
для подстановки значений из событий.Факт можно добавить только в один набор правил. Нельзя одновременно добавить его в несколько наборов.
shutdown
#
Действие shutdown
используется для завершения работы свода правил.
Оно генерирует событие завершения работы, которое останавливает выполнение всех запущенных наборов правил.
Важно
Если в своде правил выполняются несколько наборов правил, выполнение команды shutdown
приведет к завершению всех остальных наборов правил.
Необходимо учитывать работающие playbook, которые могут быть затронуты, когда один из наборов правил завершит работу.
Сообщение о завершении работы передается всем выполняющимся наборам правил.
Настройки:
delay
– время задержки перед завершением работы (в секундах).Значение по умолчанию –
60
.message
– сообщение, связанное с завершением работы, например, причины.kind
– тип завершения:graceful
– мягкое: работа процессов завершается корректно;now
– немедленное завершение: работа процессов прерывается без ожидания.
Значение по умолчанию –
graceful
.
Пример использования shutdown
Завершение работы с задержкой после 5 событий:
name: shutdown after 5 events
condition: event.i >= 5
action:
shutdown:
delay: 0.125
message: Shutting down after 5 events