Ansible剧本依赖问题

时间:2018-11-02 16:22:36

标签: ansible

我有一个用例,其中存在剧本的依赖性。我有一组主机要在所有计算机上启动应用程序,然后有另一组主机是实际计算机。

现在我的问题是,只有在成功执行第一个剧本并启动应用程序后,ansible才能运行第二个剧本(可以说更新软件包)吗?我在这里遇到的问题是,尽管第一个剧本没有成功并且应用程序没有启动,但第二个剧本仍在运行

在这里,我从拥有我所有机器许可的远程机器上启动应用程序,并且需要在每台机器上完成软件包的更新。因此,它们是彼此依赖的两个不同的剧本。

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

这里的问题是第二本剧本不在乎命令X是否执行。一旦第一个剧本制作完成(无论成功与否,第二个剧本都将因为它们属于不同的机器而开始播放)

1 个答案:

答案 0 :(得分:1)

如果剧本似乎彼此直接相关,那么我不会将它们分成不同的剧本,而是分成同一剧本中使用的角色。您需要在第一个角色的任务中的某个位置注册一个变量,以便可以在第二个角色中使用它:

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

- hosts: second-set
  roles:
  - update-packages
    when: update_was_good
相关问题