目前,site.yml 中定义了多个角色:
- include: role1.yml
- include: role2.yml
- include: role3.yml
- include: role4.yml
- include: role5.yml
并且它们通过发出以下命令同步运行:
ansible-playbook -i testing site.yml -u root --vault-password-file ~/.vault_pass.txt
问题
如何一次性运行site.yml中定义的角色?
讨论
它通过打开多个终端并运行来异步运行所有角色:
ansible-playbook -i testing playbook1.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook2.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook3.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook4.yml -u root --vault-password-file ~/.vault_pass.txt
ansible-playbook -i testing playbook5.yml -u root --vault-password-file ~/.vault_pass.txt
答案1
看一眼剧本策略:
在 2.0 中,我们添加了一种控制播放执行的新方法,即策略,默认情况下,播放仍将按以前的方式运行,即我们所说的线性策略。所有主机将在任何主机启动下一个任务之前运行每个任务,使用分叉数(默认为 5)进行并行化。
值得尝试制定以下策略free
:
第二种策略是免费提供的 ansible,它允许每个主机尽可能快地运行直到游戏结束。
- hosts: all
strategy: free
还请检查叉子设置在ansible.cfg
:
这是与远程主机通信时生成的默认并行进程数。自 Ansible 1.3 起,fork 数自动限制为可能的主机数,因此这实际上是您认为可以处理的网络和 CPU 负载的限制。许多用户可能将其设置为 50,有些则将其设置为 500 或更多。如果您有大量主机,则更高的值将使所有这些主机上的操作完成得更快。默认值非常非常保守:
forks=5