食谱之间共享文件/模板

食谱之间共享文件/模板

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

答案1

cookbook_file 和模板资源支持“cookbook”参数,该参数指定哪个 cookbook 包含源文件。然后,您可以创建一个“commons”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

但是,我想问的是,为什么你们的食谱中不同种类的功能之间存在重复?也就是说,这种事情是否适合你使用的自定义轻量级资源/提供程序?

相关内容