首页 » 翻译 » Ansible » 正文

如何使用with_item的同时使用notify功能

今天研究了一个东西,就是如何在使用with_item的同时根据每一个item的情况,选择是否调用notify

我们很多时候都需要使用with_item这个循环,例如检测文件是否更新,或者其它什么时候,例如我们有4个文件

 

例如,当a 更新的时候,我们重启a服务,b更新的时候我们重启b服务,c更新的时候我们重启c服务,d更新的时候我们重启d服务

当然,我们可以写死:

这样肯定没问题,当我们a文件更新的时候,会自动重启a服务,b文件更新的时候会自动重启b,但是我们能不能使用with_item来完成

答案是可以的,但是有一个问题,当a 文件更新的时候 不光a 服务重启了,b,c,d服务也重启了,这不是我们想看到的,解决办法如下:

就是我么不在使用notify模块功能,使用when来解决,其实虽然是个循环,但是我们的register仍然存储了每个item的相关信息,这样我们就可以在剩下的task中使用

另:完整测试用例

本地/tmp/dev/下会存放每次需要更新war包,当war有更新时,需要将新的war包拷贝到目的主机,并删除原来的war解压生成的文件夹

(后续重启服务没写)

 

 

 

 

 

 

发表评论