如何并行运行多个ansible播放?

如何并行运行多个ansible播放?,ansible,Ansible,我有一本包含多个剧本的剧本: --- - hosts: druid-realtime-1 sudo: true roles: - { role: druid-realtime, du_rt_id: 1 } - hosts: druid-realtime-2 sudo: true roles: - { role: druid-realtime, du_rt_id: 2 } 我如何让ansible同时播放这两部剧而不是一部接一部?你可以这样做 在Ansible资源清册中,

我有一本包含多个剧本的剧本:

---
- hosts: druid-realtime-1
  sudo: true
  roles:
  - { role: druid-realtime, du_rt_id: 1 }

- hosts: druid-realtime-2
  sudo: true
  roles:
  - { role: druid-realtime, du_rt_id: 2 }

我如何让ansible同时播放这两部剧而不是一部接一部?

你可以这样做

在Ansible资源清册中,将服务器分组并分配主机变量:

[druid-realtime]
druid-realtime-1 id=1
druid-realtime-2 id=2
然后在剧本中引用变量:

- hosts: druid-realtime
  sudo: true
  roles: 
    - { role: druid-realtime, du_rt_id: {{ id }} }

一起寻址主机(如果您希望它们执行相同的操作)


如果你的剧本是孤立的,你可以拆分剧本:1剧本->1剧本。例如:

  • druid-realtime-1.yml:
-主机:druid-realtime-1
sudo:是的
角色:
-{角色:德鲁伊实时,杜鲁伊:1}

  • druid-realtime-2.yml:
-主机:druid-realtime-2
sudo:是的
角色:
-{角色:德鲁伊实时,du_rt_id:2}

  • 保留一个包含其他剧本的主要剧本网站.yml:

-包括:druid-realtime-1.yml
-包括:druid-realtime-2.yml


通过这种方法,您可以为每个剧本使用一个终端,并继续使用您的主剧本。

不确定创建此帖子时是否可以这样做,但我相信这正是您想要的:


这允许您停止任务阻塞,即在继续执行下一个任务之前等待任务完成。

要并行运行多个剧本,我今天写了

因此,对于您的问题,请将剧本拆分为不同的yml文件并运行:

pip install ansible-parallel
ansible-parallel *.yml

你们不能,但请解释为什么你们需要这样做?这个问题可以用“如何并行处理同一角色的多个主机”来表达。当前的问题更一般,此处提供的答案不能满足一般要求。@Mxx:通常用于加速引导。通常有site.yaml或main.yaml,其中包括许多其他无关的剧本。如果所有这些无关的剧本都可以并行执行,而不需要fork/background的shell特性,那就太好了。这些不匹配的分隔符肯定是偶然的吗?du_rt_id是什么?这是Ansible内置关键字吗?只是一个任意变量。请参阅中的示例,我不明白会发生什么。在两台主机上并行运行它并不能解决手头的问题。
pip install ansible-parallel
ansible-parallel *.yml