如何使Ansible在我的所有6个计算节点上执行bash代码,而不是5然后1?

时间:2017-02-18 20:32:40

标签: ansible

我在头节点上使用Ansible与6个计算节点进行通信。我设置了Ansible /etc/ansible/hosts以指示我的6个计算节点的IP地址。然后我通过Ansible传递命令,如下所示:

ansible all -m shell -a "sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" -u root

然而,前5个计算节点返回必要的信息,但随后有一个暂停,最后第六个节点也返回。我已经使用了/etc/ansible/hosts文件,并且发现它始终是列出的6个暂停的最后一个IP地址;我们谈论的计算节点并不重要。

如果我运行计算密集型命令,例如通过ansible查找素数,则前5个命令同时发生,最后的命令仅在前5个命令完成后执行。到底是怎么回事?为什么我不能同时向所有节点发送命令?

2 个答案:

答案 0 :(得分:1)

使用-f参数指定要使用的并行进程数。

ansible all -m shell -a "sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor" -u root -f 6

答案 1 :(得分:0)

好的,所以我明白了。 Ansible附带默认设置的并行分叉设置为5.您可以在/etc/ansible/ansible.cfg文件中更改此设置。我将它改为6,现在一切都很好。