在Ansible剧本中,我如何以更并行的方式应用基于组的角色?

在Ansible剧本中,我如何以更并行的方式应用基于组的角色?,ansible,ansible-role,Ansible,Ansible Role,我用的是Ansible 2.1。假设我的主机已经分组在清单中。然后我运行这样一个剧本: - hosts: foo roles: - bar - hosts: baz roles: - eek ...more... 不管我设置了多少叉子,Ansible似乎都会一个接一个地应用这些角色。有没有更好的方法来构建我的剧本,以获得更多的执行并行性,而不向控制台发送无用的任务跳过消息 换句话说,所以角色bar适用于foo中的所有主机,就像eek适用于所有baz主机一样。如果我以

我用的是Ansible 2.1。假设我的主机已经分组在清单中。然后我运行这样一个剧本:

- hosts: foo
  roles:
    - bar

- hosts: baz
  roles:
    - eek

...more...
不管我设置了多少叉子,Ansible似乎都会一个接一个地应用这些角色。有没有更好的方法来构建我的剧本,以获得更多的执行并行性,而不向控制台发送无用的任务跳过消息


换句话说,所以角色
bar
适用于
foo
中的所有主机,就像
eek
适用于所有
baz
主机一样。如果我以组成员身份为条件应用角色似乎是可行的,但是所有的跳过都会使输出非常难以读取。

如果只是输出中的跳过任务让您感到困扰,您可以在您的应用程序中设置
display\u skipped\u hosts=False

如果设置为False,ansible将不会显示跳过任务的任何状态。默认行为是显示跳过的任务

问题可能是,这会删除所有跳过的任务输出。在某些情况下,用户可能依赖跳过的任务,需要了解发生了什么。可能有一个选项可以通过编程方式解决此问题。Ansible生成的输出实际上是一个回调插件。您可以通过在应用程序中更改
stdout\u callback=your\u plugin
来更改此默认回调插件。在插件中,您可以决定在何种条件下显示输出

更改策略插件,甚至创建自定义策略插件,对您来说可能也很有趣。虽然据我所知,每出戏都会采用策略,所以没有办法让两出戏并行执行,我很确定第二出戏只有在第一出戏的所有主持人都完成后才会开始。(但实际上,这只是我的理解,我还没有玩过策略插件)