gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:17:51 25 4
gpt4 key购买 nike

我有一个由一堆 dockerized 微应用组成的环境,其中一些依赖于其他微应用,彼此链接并通过 docker 接口(interface)上的 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_service 模块为每个应用程序定义了多个角色,每个角色都有自己的处理程序,当收到通知时,它会运行上面的代码,以刷新该特定应用程序。

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

最佳答案

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

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

关于ansible - 有没有办法在收到通知后取消处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39271228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com