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


11

我们有多个参考相同文件和模板的食谱,并且想知道是否存在合理的方法来确保所有文件和模板都相同,以确保所有文件都不会过时。是否可以有多个配方/食谱参考的单个文件/模板?我考虑过使用符号链接,但是这对我们不起作用,因为Git不支持它们。

Answers:


17

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

% 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

但是,我想问一下,为什么您的食谱中的各种功能之间存在重复?也就是说,这种东西是否适合您使用的自定义轻量级资源/提供程序?


1
感谢您提供的示例以及其他解决方案。太棒了!
gdurham
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.