在chef apache2-windows cookbook中添加一个vhost

时间:2014-09-26 09:03:55

标签: apache vagrant chef chef-recipe chef-solo

我对厨师很陌生。我正在使用apache2-windows食谱来配置流浪汉开发环境,这在文档方面很不方便。我已经设法让它安装,甚至可以很好地使用opscodes php食谱,但是我很难让它设置一个虚拟主机。

到目前为止,我添加了vhosts' extra'到/attributes/default.rb就像这样:

default['apache']['windows']['extras'] = ["vhosts"]

成功添加了一个' vhosts.d'目录到apache root,包括httpd.conf中的httpd-vhosts.conf,并在httpd-vhosts.conf中添加一个条目,其中包含* .conf中的&.vhosts.d'目录。

不幸的是,我无法弄清楚如何使用随配方提供的虚拟主机资源,看起来它应该将我的虚拟主机放入' vhosts.d'使用/templates/default/virtualhost.conf.erb模板。

我已将以下内容添加到/recipes/default.rb

virtualhost "mysite.localhost" do
  server_aliases ["www.mysite.localhost"]
  docroot "/vagrant"
  action :create
end

但它失败了,告诉我“没有任何资源或方法名为' virtualhost'对于' Chef :: Recipe"默认"'。

我错过了什么?我还需要做些什么才能让我在配方中使用虚拟主机资源吗?

1 个答案:

答案 0 :(得分:1)

这是对图书馆烹饪书/ LWRP的警告之一,他们的名字来源于食谱名称。

Doc是HERE

如果apache2-windows不在运行列表中,则必须在cookbook metadata.rb中使用depends 'apache2-windows'定义它。

但这里的主要问题是虚拟主机资源由于两件事而被命名为apache2_windows_virtualhost

  • 资源来自cookbook名称,因此它变为cookbook_resource
  • Ruby不允许在班级名称中使用-,因此他们会神奇地'已转换为_以进行资源调用。

tl; dr; 使用此

apache2_windows_virtualhost "mysite.localhost" do
  server_aliases ["www.mysite.localhost"]
  docroot "/vagrant"
  action :create
end