Chef - 尝试将apache2别名添加到vhost文件中

时间:2014-07-08 23:12:06

标签: apache amazon-web-services chef aws-opsworks

我是Chef的新手,我正在运行AWS OpsWorks环境并通过Chef 11.10部署代码。我正在尝试在运行apache2的实例的vhost文件中创建两个alias行:

alias /foo /my/dir/name/
alias /bar /another/my/dir/name

我在S3存储桶中有一个自定义菜谱,OpsWorks成功地将其提取并分发到所有实例。在该自定义食谱中,我有一个名为vhosts.rb的食谱:

include_recipe "apache2"

web_app "Test1" do
  server_name "Web1.com"
  server_aliases ["www.Web1.com"]
  allow_override "all"
  docroot "/srv/www/web_test/current/sites/"
end

这样就可以很好地创建一个vhost文件,但我无法弄清楚如何添加别名行。我查看了OpsCode默认的apache2 cookbook,但在aliasdefault.rbmod_alias或{中找不到对通用web_app命令/参数的任何引用{1}}。

如何添加这些别名行?我确信这很容易,但是我淹死了想要解决这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

apache2 cookbook的web_app提供程序不支持在生成的conf文件中添加Alias指令。完成您所需要的最简单方法是在templates/default/web_app.conf.erb扩展模板文件并添加类似于以下内容的块:

<% if @aliases -%>
   <% @aliases.each do |alias| -%>
     Alias <%= alias %>
   <% end -%>
<% end -%>

然后,将您的web_app电话改为:

web_app "Test1" do
  server_name "Web1.com"
  server_aliases ["www.Web1.com"]
  allow_override "all"
  docroot "/srv/www/web_test/current/sites/"
  aliases ["/foo /bar", "/baz /meh"]
end

web_app定义将通过任何额外的参数传递给模板,使它们可用作实例变量。

注意:有一些不同的技术可用于修改模板文件。你可以直接在S3文件中更改它,或者你可以做一个完整的包装菜谱并通过Berkshelf进行管理。