我正在使用Ansible 2.1。假设我的主机已经在库存中分组了。然后我运行这样的剧本:
- hosts: foo
roles:
- bar
- hosts: baz
roles:
- eek
...more...
无论我设置了多少叉子,Ansible似乎都会逐一应用这些角色。是否有更好的方法来构建我的Playbooks以获得更多的执行并行性而不会使用无用的任务跳过消息向控制台发送垃圾邮件?
换句话说,在bar
适用于所有foo
主机的同时,角色eek
适用于baz
中的所有主机。如果我以组成员资格的方式应用角色,似乎有点工作,但所有跳过都会使输出真的难以阅读。
答案 0 :(得分:0)
如果只是输出中跳过的任务困扰您,您可以在ansible.cfg中设置display_skipped_hosts=False
。
如果设置为False,则ansible将不会显示跳过的任务的任何状态。默认行为是显示跳过的任务。
这个问题可能是,这会删除所有跳过的任务输出。在某些情况下,用户可能会依赖跳过的任务,并且需要了解正在进行的操作。可能有一个以编程方式解决此问题的选项。 Create a custom callback plugin。 Ansible生成的输出实际上是一个回调插件。您可以通过更改ansible.cfg中的stdout_callback = your_plugin
来更改此默认回调插件。在您的插件中,您可以决定在哪种条件下显示输出。
更改strategy甚至创建自定义策略插件也可能对您有意义。虽然据我所知,策略是每场比赛都应用的,所以没有办法让两个比赛并行执行,而且我很确定第二场比赛只会在第一场比赛的所有主场完成时开始。 (但实际上,这只是我的理解,我还没有使用策略插件)