Обратный вызов#
Расширения обратного вызова (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