Зависимости обработчика для Ansible
У меня есть роль, которая настраивает /etc/network/interfaces.d/ethX
, Он имеет обработчик "restart interface", который вызывается через уведомления.
Но есть несколько программ, которые прослушивают этот интерфейс и должны быть перезапущены, если я что-то изменил в конфигурации этого интерфейса.
Обычно я мог отправить notify
перезапустить обработчик роли, которая настраивает приложение, но здесь есть одна загвоздка: роль настройки интерфейса является довольно общей и может быть вызвана из разных сборников пьес вместе с различными ролями приложения. Я не мог жестко закодировать notify
обработчикам для этих ролей, но, тем не менее, я хочу перезапустить все "зависимые" от этого интерфейса приложения.
Есть ли в Ansible какая-то функция подписки на уведомления? Я знал, что шеф-повар делает, так может быть Ansible может сделать это тоже? Другой способ, которым я подумал, - это какие-то "мягкие уведомления" из роли конфигурации интерфейса, которые не завершаются ошибкой, если такого обработчика нет.
Есть идеи?
1 ответ
Да, Ansible имеет функцию прослушивания начиная с версии 2.2.
Пространство имен обработчиков является общим, поэтому достаточно убедиться, что роли, содержащие определенные обработчики, назначены (если вы не использовали flush_handlers
в одной из ролей, в этом случае вам необходимо убедиться, что роль, содержащую обработчик, который вы хотите запустить, назначается до фактической операции сброса).