Зависимости обработчика для Ansible

У меня есть роль, которая настраивает /etc/network/interfaces.d/ethX, Он имеет обработчик "restart interface", который вызывается через уведомления.

Но есть несколько программ, которые прослушивают этот интерфейс и должны быть перезапущены, если я что-то изменил в конфигурации этого интерфейса.

Обычно я мог отправить notify перезапустить обработчик роли, которая настраивает приложение, но здесь есть одна загвоздка: роль настройки интерфейса является довольно общей и может быть вызвана из разных сборников пьес вместе с различными ролями приложения. Я не мог жестко закодировать notify обработчикам для этих ролей, но, тем не менее, я хочу перезапустить все "зависимые" от этого интерфейса приложения.

Есть ли в Ansible какая-то функция подписки на уведомления? Я знал, что шеф-повар делает, так может быть Ansible может сделать это тоже? Другой способ, которым я подумал, - это какие-то "мягкие уведомления" из роли конфигурации интерфейса, которые не завершаются ошибкой, если такого обработчика нет.

Есть идеи?

1 ответ

Решение

Да, Ansible имеет функцию прослушивания начиная с версии 2.2.

Пространство имен обработчиков является общим, поэтому достаточно убедиться, что роли, содержащие определенные обработчики, назначены (если вы не использовали flush_handlers в одной из ролей, в этом случае вам необходимо убедиться, что роль, содержащую обработчик, который вы хотите запустить, назначается до фактической операции сброса).

Другие вопросы по тегам