Обратный вызов#

Расширения обратного вызова (callback plugins) позволяют добавить новую логику обработки событий в Ansible. По умолчанию они управляют выводом в стандартный поток, но также могут использоваться для интеграции с другими системами, записи в журналы или передачи событий во внешние хранилища.

Типы#

Расширения обратного вывода бывают следующих типов:

  • Расширения для вывода данных (stdout).

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

  • Агрегирующие (aggregate).

    Дополняют основной вывод, например, добавляют статистику после выполнения набора сценариев или расширяют вывод задач. К этому типу относится расширение junit.

  • Уведомляющие (notification).

    Информируют другие системы и сервисы, например:

    • ведут журналы в базе данных;

    • отправляют ошибки в сервисы обмена сообщениями;

    • посылают уведомления о сбоях.

    К этому типу относится расширение tree.

Подключение#

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

  • Конфигурационный файл ansible.cfg:

    [default]
    callbacks_enabled = ansible.builtin.junit, ansible.builtin.tree
    
  • Переменную окружения ANSIBLE_CALLBACKS_ENABLED.

Настройка для ansible-playbook#

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

  • В конфигурационном файле ansible.cfg:

    [default]
    stdout_callback = ansible.builtin.minimal
    
  • С помощью переменной окружения ANSIBLE_STDOUT_CALLBACK.

Настройка для отдельных команд#

Отдельные команды по умолчанию используют расширение minimal для вывода данных, но можно настроить их на использование того же расширения, что и для ansible-playbook. Для этого используйте один из следующих способов:

  • конфигурационный файл ansible.cfg:

    [defaults]
    bin_ansible_callbacks = True
    
  • переменную окружения:

    export ANSIBLE_LOAD_CALLBACK_PLUGINS=1
    

Примеры#

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

  • Для выполнения сценария с использованием расширения junit выполните команду:

    ANSIBLE_CALLBACKS_ENABLED=ansible.builtin.junit ansible-playbook playbook.yml
    
  • Для выполнения отдельной команды с использованием расширения junit выполните команду:

    ANSIBLE_LOAD_CALLBACK_PLUGINS=1 ANSIBLE_CALLBACKS_ENABLED=ansible.builtin.junit ansible all -m ping
    
  • Для смены стандартного вывода утилиты ansible-playbook на использование расширения oneline выполните команду:

    ANSIBLE_STDOUT_CALLBACK=ansible.builtin.oneline ansible-playbook playbook.yml