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

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

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

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

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

Любые идеи?


person George Shuklin    schedule 05.04.2017    source источник


Ответы (1)


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

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

person techraf    schedule 05.04.2017
comment
Я не заметил, когда они появились. Это точное и точное решение описанной проблемы. Благодарю вас! - person George Shuklin; 05.04.2017