食谱之间的共享文件/模板

我们有多个食谱,引用相同的文件和模板,并想知道是否有一个合理的方法来确保所有这些是相同的文件,以确保没有过时。 是否有可能有一个单一的文件/模板参考多个食谱/食谱? 我想过使用符号链接,但是这不适合我们,因为Git不支持它们。

cookbook_file和模板资源支持“cookbook”参数,该参数指定哪个cookbook包含源文件。 然后你可以创build一个“公共”的食谱,这些文件作为一个单一的实体。 例如:

% cookbooks/commons cookbooks/commons |-- files | `-- default | `-- master.conf `-- templates `-- default `-- general.conf.erb 

假设你有两个食谱,thing1和thing2,他们都使用这些。 食谱可能是:

 # thing1/recipes/default.rb cookbook_file "/etc/thing1/master.conf" do source "master.conf" cookbook "commons" end template "/etc/thing1/general.conf" do source "general.conf.erb" cookbook "commons" end # thing2/recipes/default.rb cookbook_file "/etc/thing2/like_master_but_different.conf" do source "master.conf" cookbook "commons" end template "/etc/thing2/not_as_general_as_you_think.conf" do source "general.conf.erb" cookbook "commons" end 

但是,我会问为什么你的食谱中的不同types的function之间有重复? 也就是说,这种事情适合你使用的自定义轻量级资源/提供者吗?