如何使用Ansible并行配置apache vhosts 问题

如何使用Ansible并行配置apache vhosts 问题,ansible,Ansible,我正在用ansible配置apache vhosts。创建配置需要很多时间 版本信息: ansible剧本2.7.10 Apache/2.4.29 所有虚拟主机都在同一台服务器上。 我使用Apache建议的文件系统结构: 每个站点一个文件(vhost和已用端口),将保存到站点available/443_example.com.conf。然后我生成一个指向已启用站点的符号链接 如果没有任何更改,则按顺序运行34个vhost的配置任务大约需要5分钟 我为apache配置创建了一个角色。我确定了每

我正在用ansible配置apache vhosts。创建配置需要很多时间

版本信息:

  • ansible剧本2.7.10
  • Apache/2.4.29
所有虚拟主机都在同一台服务器上。 我使用Apache建议的文件系统结构:

每个站点一个文件(vhost和已用端口),将保存到站点available/443_example.com.conf。然后我生成一个指向已启用站点的符号链接

如果没有任何更改,则按顺序运行34个vhost的配置任务大约需要5分钟

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

  • openssl_私钥
  • openssl_csr
  • openssl\u证书
  • 6个任务:将文件放在文件系统中的正确位置,但前提是不存在Let's Encrypt配置
  • 创建模板
  • 启用模板
  • 2个任务:删除旧配置
  • 例如,编写配置模板,生成自签名证书

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

    解决 这些是我尝试过的解决方案,但都不起作用:

    1) 在每个任务上使用异步: 我在parallel.yml中使用了一个模板,这不能异步

    2) 在包含任务时使用一个异步: 有一个已知问题使得Ansible忽略了异步。循环项是串行处理的

    3) 使用“委托给”创建更多Ansible分支: 循环项是串行处理的

    4) 使用策略:免费 “第二种策略是Ansible-free,它允许每个主机尽可能快地运行到游戏结束。”

    策略:free允许多台主机并行运行。这不能只在一台主机上工作

    5) 增加叉子 自Ansible 1.3以来,fork编号自动限制为运行时可能的主机数

    和以前一样的问题

    总结 如何并行运行这些任务


    如何提高性能?

    您能否提供有关parallel.yml中发生的情况的更多信息?你有没有考虑过在你的游戏中使用指令?嗨,Flotastisch,欢迎来到SO。您知道ansible playbook的选项吗?你也可能会喜欢阅读在大多数情况下速度更快的书籍。谢谢你的评论。我在策略中增加了一段:免费,forks和关于parallel。yml我以后要去看看mitogen。mitogen真的很不错。414项任务的性能从4:51分钟增加到1:27。
    - name: 'configure vhost'
      include_tasks: parallel.yml
      loop: "{{ vhosts }}"
      async: 60
    
    - name: 'configure vhost'
      include_tasks: parallel.yml
      loop: "{{ vhosts }}"
      delegate_to: ansible@example.com