2013-12-14 32 views
1

在厨师apache2食谱中,您可以找到启用默认网站的属性node['apache']['default_site_enabled']。如果您设置为true,则此模板使用apache2/templates/default/default-site.erb。但是,我发现有固定值AllowOverride None,所以显然你不能通过属性来改变它。所以我的问题是如何在我的自定义食谱中覆盖它,以便我可以用我自己的方式调整此模板?如何覆盖厨师apache2默认网站模板?

或者还有其他更好的方法可以做到吗?

回答

2

你应该创建自己的食谱来包装这个apache2食谱,我们称之为apache2_wrap。创建您自己的* apache2_wrap/templates/default/default-site.erb *模板并按照您需要的方式设置值。你的食谱应该是这样的:

include_recipe 'apache2::default' #or whatever apache2 recipe you need 

#enable default site yourself 
template "#{node['apache']['dir']}/sites-available/default" do 
    source 'default-site.erb' 
    owner 'root' 
    group node['apache']['root_group'] 
    mode  '0644' 
    notifies :restart, 'service[apache2]' 
end 

apache_site 'default' do 
    enable true 
end 

我没有测试它,但它应该工作。但是有一个潜在的问题:看起来这个"#{node['apache']['dir']}/sites-available/default"文件将在每次运行厨师时被覆盖,首先是原始模板,然后是你的。其中启动apache2重新启动触发器,因此apache2服务将重新启动每个厨师运行(但我不知道 - 你应该测试它!)。如果是这种情况,并且困扰你,那么唯一的方法就是根据现有的食谱制作你自己的食谱。

+0

谢谢。这就是我在一段时间后所发现的。 – sobi3ch