Dependencies 易变资源清册主机依赖关系

Dependencies 易变资源清册主机依赖关系,dependencies,ansible,inventory,Dependencies,Ansible,Inventory,我有一个一堆oracle数据库服务器的ansible清单。大多数时候,我都希望我的剧本能做到这一点。但对于一组特定的RAC服务器,我希望确保ansible以串行方式处理它们。我的清单如下所示。请注意,这只是一个示例,实际上有170多台主机是独立主机和RAC的混合体,因此理想情况下,该解决方案是可扩展的: [d1w1] server1 server2 [d1w2] hostA hostB [d1w3] standalone1 standalone2 rac1 rac2 rac3 在这种情况下

我有一个一堆oracle数据库服务器的ansible清单。大多数时候,我都希望我的剧本能做到这一点。但对于一组特定的RAC服务器,我希望确保ansible以串行方式处理它们。我的清单如下所示。请注意,这只是一个示例,实际上有170多台主机是独立主机和RAC的混合体,因此理想情况下,该解决方案是可扩展的:

[d1w1]
server1
server2

[d1w2]
hostA
hostB

[d1w3]
standalone1
standalone2
rac1
rac2
rac3
在这种情况下,当我为“d1w3”运行ansible playbook时,playbook将同时开始为所有5台主机执行。我需要它同时执行standalone1、standalone2和rac1。当rac1成功完成时,转到rac2;当rac2成功完成时,转到rac3

我知道组和子组,但不知道如何建立依赖关系


有什么想法吗?

我建议考虑在同一剧本中制作多个剧本。在定义的
主机上,每个播放将在前一个播放之后运行

- name: parallel play on 3 hosts
  hosts: standalone1,standalone2,rac1
  tasks:
    - name: tasks 1
      …

- name: play on rac2 
  hosts: rac2
  tasks:
    - name: tasks 1
      …

- name: play on rac3 
  hosts: rac3
  tasks:
    - name: tasks 1
      …

您可能需要重新构造,但仍然可以让hosts文件定义

[parallels]
1.2.3.4
1.2.3.5

[serials]
2.3.4.5
2.3.4.6
2.3.4.7
然后你就可以插播几部戏了-

- name: Do The Thing
  hosts: parallels
  roles:
   - test

- name: Do The Thing in serial
  hosts: serials
  serial: 1
  roles:
   - test
这可能仍然不是您想要的,但如果您将其与的解决方案结合使用,它可能会起作用。这种依赖有多深

如果你把所有必须首先做的事情放在一组中,然后把所有依赖于第二组的事情放在第三组中,然后把所有依赖于第二组的事情放在第三组中,你可以将所有的第一波、第二波、第三波等平行


您可能必须使用
--limit
语句,但它可以工作。

playbook任务相同吗?是的,如果是独立的或是rac,playbook任务相同。暴露的问题不太清楚,因为实际上您没有解释您的服务器组是如何在资源清册中完成的,这是ansible中的一个关键信息,它也缺乏一个可理解的工作流程。这似乎需要将主机放在剧本中。我实际上有170台主机,混合了单机和rac。我不知道这是否能很好地扩展。谢谢你的回答!