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

Chef infra 如何覆盖chef apache2默认站点模板?,chef-infra,Chef Infra,在chef apache2 cookbook中,您可以找到启用默认站点的属性节点['apache']['default\u site\u enabled']。如果设置为true,则此模板为useapache2/templates/default/default site.erb。但我发现有一个固定值AllowOverride None,所以显然不能通过属性更改它。所以我的问题是如何在我的自定义食谱中覆盖它,以便我可以用自己的方式调整这个模板 或者还有其他更好的方法吗?您应该创建自己的食谱,将这本

在chef apache2 cookbook中,您可以找到启用默认站点的属性
节点['apache']['default\u site\u enabled']
。如果设置为true,则此模板为use
apache2/templates/default/default site.erb
。但我发现有一个固定值
AllowOverride None
,所以显然不能通过属性更改它。所以我的问题是如何在我的自定义食谱中覆盖它,以便我可以用自己的方式调整这个模板


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

您应该创建自己的食谱,将这本apache2食谱包装起来,我们称之为apache2_包装。创建您自己的*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”
文件将在每次运行chef时被覆盖,首先是原始模板,然后是您的模板。它会启动apache2重新启动触发器,因此apache2服务将在每次chef运行时重新启动(但我不确定-您应该测试它!)。如果是这种情况,并且它困扰着你,那么唯一的方法就是在现有食谱的基础上创建你自己的食谱。

谢谢。过了一段时间我才明白。