Ansible 有没有办法在收到通知后取消处理程序?

Ansible 有没有办法在收到通知后取消处理程序?,ansible,docker-compose,ansible-playbook,notify,Ansible,Docker Compose,Ansible Playbook,Notify,我有一个由一堆停靠的微应用程序组成的环境,其中一些微应用程序依赖于其他微应用程序,相互链接,并在docker接口上通过http进行通信。我的问题是docker compose只跟踪docker-compose.yml文件,并且仅在docker-compose.yml已更改时才重新创建容器。 有了ansible,我终于可以开始跟踪配置文件了,这些文件作为卷装载在容器中,这样就可以从模板中部署它们了——这非常有效 在ansible之前,我经常跑步: docker-compose stop <

我有一个由一堆停靠的微应用程序组成的环境,其中一些微应用程序依赖于其他微应用程序,相互链接,并在docker接口上通过http进行通信。我的问题是docker compose只跟踪docker-compose.yml文件,并且仅在docker-compose.yml已更改时才重新创建容器。 有了ansible,我终于可以开始跟踪配置文件了,这些文件作为卷装载在容器中,这样就可以从模板中部署它们了——这非常有效

在ansible之前,我经常跑步:

 docker-compose stop <app> && docker-compose rm -f <app> && docker-compose up -d
docker-compose-stop和&docker-compose-rm-f和&docker-compose-up-d
当我知道挂载的文件已更改并且需要刷新卷时刷新单个应用程序

我已经用docker_服务模块为每个应用程序定义了多个角色,每个角色都有自己的处理程序,在收到通知时运行上面的代码,以刷新特定的应用程序


问题是,当多个应用程序的挂载文件发生更改时,ansible会通知每个处理程序并执行每个处理程序,这与我需要的情况不同,因为当主容器(其他应用程序依赖的容器)被重新创建时,其他应用程序不需要这样做,因为它们已经被重新创建,但它们的处理程序也正在执行。所以我的问题是:有没有办法取消通知处理程序?我知道flush\u处理程序,但它只执行通知的处理程序,而不是我所需要的。

您可以在处理程序中使用条件。
使用标志变量指示某些处理程序不应执行

- name: restart myapp1
  shell: docker ...
  when: not block_apps_restart

它并不完美,但我使用了标志变量,它很有效。再次感谢。