是否可以在 Ansible 中异步运行 site.yml 中定义的角色,而无需打开数千个终端?

是否可以在 Ansible 中异步运行 site.yml 中定义的角色,而无需打开数千个终端?

目前,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

相关内容