我目前有三个 ansible 任务:
- 创建虚拟主机
- 测试配置
- 重新加载 nginx
我现在将最后两个注册为处理程序,但是对于我正在做的事情,ansible 的转发通知感觉不对:
- 创建虚拟主机,通知测试配置(确定)
- 测试配置,通知重新加载(为什么配置测试意味着重新加载)
- 重新加载 nginx
我想要一个像这样的结构:
- 创建 vhosts,通知 nginx 重新加载
- nginx 重新加载:需要配置测试
- 配置测试:成功
- nginx 重新加载
只是因为语义看起来更正确。它不应该只是一个序列,也不应该像配置测试那样通知重新加载,因为这只是再次实现一个序列而没有背后的逻辑(就像重新加载需要先进行测试一样)
答案1
如果您忽略错误,则剧本中使用 的简单条件when
应该可以工作。默认情况下,Ansible 剧本运行在遇到错误时终止。Nginx configtest 在0
成功和1
失败时以 shell 状态代码退出,您可以使用它根据结果运行不同的任务 -
任务: - shell:服务 nginx 配置测试 ignore_errors:真 寄存器:结果 - shell:服务 nginx 重新加载 时间:结果|成功 - local_action:邮件主题='Nginx 配置错误。' 时间:结果|失败