如何与Ansible并行配置apache虚拟主机

时间:2019-05-05 22:13:40

标签: ansible

问题

我正在用ansible配置apache虚拟主机。创建配置会花费很多时间。

版本信息:

  • ansible-playbook 2.7.10
  • Apache / 2.4.29

所有虚拟主机都在同一服务器上。 我正在使用Apache建议的文件系统结构:

每个站点(虚拟主机和使用的端口)一个文件,该文件将保存到sites-available / 443_example.com.conf。然后,我生成一个指向站点启用的符号链接。

如果没有更改,则对34个虚拟主机依次运行配置任务大约需要5分钟。

我为apache配置创建了一个角色。我确定了必须为每个虚拟主机运行的13个任务:

  1. openssl_privatekey
  2. openssl_csr
  3. openssl_certificate
  4. 6个任务:仅当不存在“让我们加密”配置时,才将文件放置在文件系统中的正确位置上
  5. 创建模板
  6. 启用模板
  7. 2个任务:删除旧配置

例如,编写配置模板,生成一个自签名证书。

如果我可以并行化这些虚拟主机,那就太好了。我将要并行运行的任务分组在文件parallel.yml中。该文件的内容必须以正确的顺序处理。

解决方案

这些是我尝试过的解决方案,但没有一个起作用:

1)在每个任务上使用异步:

我在parallel.yml中使用模板,因此无法同步。

2)在包含任务时使用一个异步操作

- name: 'configure vhost'
  include_tasks: parallel.yml
  loop: "{{ vhosts }}"
  async: 60

有一个已知问题使Ansible忽略了异步。循环项以串行https://github.com/ansible/ansible/issues/22716

处理

3)使用“委托给”创建更多Ansible分支:

- name: 'configure vhost'
  include_tasks: parallel.yml
  loop: "{{ vhosts }}"
  delegate_to: ansible@example.com

循环项以串行https://github.com/ansible/ansible/issues/37995处理

4)使用策略:免费

“ Ansible附带了第二种策略-免费-允许每个主机以最快的速度运行到播放结束。” https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html

strategy:free允许并行运行多个主机。那仅在一个主机上不起作用。

5)增加叉子

“自Ansible 1.3起,分叉号自动限制为运行时可能的主机数,” https://docs.ansible.com/ansible/2.4/intro_configuration.html#forks

与以前一样的问题。

摘要

如何并行运行任务?

如何提高性能?

0 个答案:

没有答案