Ansible剧本依赖性问题

Ansible剧本依赖性问题,ansible,Ansible,我有一个用例,其中依赖于剧本。我有一组主机在我所有的机器上启动应用程序,然后是另一组主机,它们是实际的机器 现在我的问题是,ansible是否只有在第一个playbook成功执行并启动应用程序时才可能运行第二个playbook(比如更新包)。我在这里遇到的问题是,第二个playbook运行,尽管第一个playbook没有成功,应用程序也没有启动 在这里,我从一台远程机器启动应用程序,该机器对我的所有机器都有权限,并且需要在每台机器上完成更新包。因此,它们是两个相互依赖的不同剧本 First pl

我有一个用例,其中依赖于剧本。我有一组主机在我所有的机器上启动应用程序,然后是另一组主机,它们是实际的机器

现在我的问题是,ansible是否只有在第一个playbook成功执行并启动应用程序时才可能运行第二个playbook(比如更新包)。我在这里遇到的问题是,第二个playbook运行,尽管第一个playbook没有成功,应用程序也没有启动

在这里,我从一台远程机器启动应用程序,该机器对我的所有机器都有权限,并且需要在每台机器上完成更新包。因此,它们是两个相互依赖的不同剧本

First playbook
  hosts: A
  tasks: 
    - name: check if app started and ready
      command: x

Second Playbook
  hosts: B
  tasks:
    - name: run y command from B machine to execute on A
      command: y

这里的问题是,第二个playbook并不关心是否执行了命令X。第一个剧本一完成(无论成功或失败,第二个剧本就开始了,因为它们属于不同的机器)

如果剧本像这样彼此直接依赖,那么我不会把它们分成不同的剧本,而是分成同一剧本中使用的角色。您需要在第一个角色的任务中注册一个变量,以便在第二个重头戏中使用:

- hosts: first-set
  roles:
    - { role: update-app } # registers update_was_good

- hosts: second-set
  roles:
  - update-packages
    when: update_was_good

您是否有机会分享这些剧本以及如何运行它们,为我们提供一个开始调试/工作的地方?@Geoff我已经更新了这个问题。你有什么可能的解决方法吗?没有比下面的Bruce更好的了。你好@Bruce谢谢你的回答。你能给出准确的语法吗?这样我可以验证它是否有效。提前感谢任务
-名称:检查应用程序是否已启动并准备就绪
将有一些可注册的返回值(例如
标准行
)。有关更多详细信息,请参阅。您必须根据该任务的结果创建一个var,以便传递给以后的任务。