我正在用ansible配置apache虚拟主机。创建配置会花费很多时间。
版本信息:
所有虚拟主机都在同一服务器上。 我正在使用Apache建议的文件系统结构:
每个站点(虚拟主机和使用的端口)一个文件,该文件将保存到sites-available / 443_example.com.conf。然后,我生成一个指向站点启用的符号链接。
如果没有更改,则对34个虚拟主机依次运行配置任务大约需要5分钟。
我为apache配置创建了一个角色。我确定了必须为每个虚拟主机运行的13个任务:
例如,编写配置模板,生成一个自签名证书。
如果我可以并行化这些虚拟主机,那就太好了。我将要并行运行的任务分组在文件parallel.yml中。该文件的内容必须以正确的顺序处理。
这些是我尝试过的解决方案,但没有一个起作用:
我在parallel.yml中使用模板,因此无法同步。
- name: 'configure vhost'
include_tasks: parallel.yml
loop: "{{ vhosts }}"
async: 60
有一个已知问题使Ansible忽略了异步。循环项以串行https://github.com/ansible/ansible/issues/22716
处理- name: 'configure vhost'
include_tasks: parallel.yml
loop: "{{ vhosts }}"
delegate_to: ansible@example.com
循环项以串行https://github.com/ansible/ansible/issues/37995处理
“ Ansible附带了第二种策略-免费-允许每个主机以最快的速度运行到播放结束。” https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html
strategy:free允许并行运行多个主机。那仅在一个主机上不起作用。
“自Ansible 1.3起,分叉号自动限制为运行时可能的主机数,” https://docs.ansible.com/ansible/2.4/intro_configuration.html#forks
与以前一样的问题。
如何并行运行任务?
如何提高性能?