Действия#

При наступлении событий контроллер EDA может выполнять следующие действия:

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}}"
    

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