如何覆盖chef apache2默认站点模板?

时间:2013-12-14 12:21:06

标签: chef

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

或许还有其他更好的方法吗?

1 个答案:

答案 0 :(得分: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服务将在每个厨师运行时重新启动(但我不确定 - 你应该测试它!)。如果是这种情况并且让您烦恼,那么唯一的方法就是根据现有的食谱创建自己的食谱。