我在头节点上使用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个命令完成后执行。到底是怎么回事?为什么我不能同时向所有节点发送命令?
答案 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,现在一切都很好。