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

all*_*llo 5 ansible

我目前有三个 ansible 任务:

  • 创建虚拟主机
  • 测试配置
  • 重新加载nginx

我现在将最后两个注册为处理程序,但是 ansible 的转发通知对我正在做的事情感觉不对:

  • 创建虚拟主机,通知测试配置(好的)
  • 测试配置,通知重新加载(为什么配置测试意味着重新加载)
  • 重新加载nginx

我想要一个像这样的结构:

  • 创建虚拟主机,通知 nginx 重新加载
  • nginx 重新加载:需要配置测试
  • 配置测试:成功
  • nginx重新加载

只是因为语义看起来更正确。它不应该只是一个序列,也不应该像配置测试那样通知重新加载,因为这只是再次实现一个序列而没有背后的逻辑(就像重新加载需要先进行测试一样)

Dan*_* t. 6

在您的剧本中使用的简单条件when应该可以工作,以防您忽略错误。默认情况下,Ansible playbook 运行在遇到错误时终止。Nginx configtest 以0成功和1失败的shell 状态代码退出,您可以使用它根据结果运行不同的任务 -

任务:
  - 外壳:服务 nginx configtest
    ignore_errors: 真
    注册:结果

  - 外壳:服务 nginx 重新加载
    时间:结果|成功

  - local_action: 邮件主题='Nginx 配置错误。'
    时间:结果|失败