ansible 任务可以作为依赖项吗?

ansible 任务可以作为依赖项吗?

我目前有三个 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 配置错误。'
    时间:结果|失败
  

相关内容