Ansible 的处理程序依赖项

Handler dependencies for Ansible

我有一个配置 /etc/network/interfaces.d/ethX 的角色。它具有通过通知调用的处理程序 'restart interface'。

但是很少有程序在该接口上侦听,如果我对该接口的配置进行了任何更改,应该重新启动。

通常我可以发送 notify 来重新启动配置应用程序的角色的处理程序,但这里有一个问题:配置接口的角色是一个相当通用的角色,可以从不同的剧本和不同的应用程序角色一起调用.我无法将 notify 硬编码到这些角色的处理程序,但是,尽管如此,我还是想重新启动该接口应用程序上的所有 'dependent'。

Ansible 是否具有某种 'subscribe' 通知功能?我知道 Chef 会这样做,那么 Ansible 也可以这样做吗?我认为的另一种方式是来自接口配置角色的某种 'soft notifications',如果没有这样的处理程序,它不会失败。

有什么想法吗?

是的,Ansible 自 2.2 版以来确实有 a listener feature

处理程序的命名空间很常见,因此足以确保分配包含特定处理程序的角色(除非您在其中一个角色中使用了 flush_handlers ,在这种情况下,您需要确保角色包含您希望 运行 的处理程序在实际刷新操作之前分配)。