在chef apache2 cookbook中,您可以找到启用默认网站的属性node['apache']['default_site_enabled']
。如果设置为true,则此模板使用apache2/templates/default/default-site.erb
。但我发现有固定值AllowOverride None
,所以很明显你不能通过属性来改变它。所以我的问题是如何在我的自定义食谱中覆盖它,以便我可以用我自己的方式调整这个模板?
或许还有其他更好的方法吗?
答案 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服务将在每个厨师运行时重新启动(但我不确定 - 你应该测试它!)。如果是这种情况并且让您烦恼,那么唯一的方法就是根据现有的食谱创建自己的食谱。