Berksfile中的厨师'cookbook'与metadata.rb中的'depends'相对应

时间:2014-08-16 18:20:49

标签: chef berkshelf berksfile

使用'cookbook'将烹饪书添加到Berksfile并使用'depends'将cookbook添加到metadata.rb之间有什么区别?例如,如果我添加到metadata.rb

depends 'nginx'

我是否需要使用

将其添加到Berksfile
cookbook 'nginx'

3 个答案:

答案 0 :(得分:74)

Berksfile特定于Berkshelf,而元数据文件内置于Chef。

将依赖项添加到元数据文件允许其他应用程序(如librarian-chef或超市)也可以读取您的依赖项。

请注意,只要您将metadata行添加到Berksfile中,Berkshelf也会从元数据中读取依赖项。

我强烈建议您在元数据文件中指定所有依赖项,并使用Berksfile指向存储特定cookbook的位置(如果它们在超市中不可用)(如Github或本地路径)。

答案 1 :(得分:16)

Berksfile和metadata.rb有不同的目的要解决,并在食谱生命周期的不同阶段出现。

  1. Berksfile 用于烹饪书的依赖关系管理。考虑一下我的食谱使用chef supermarket的社区食谱的情况。在这种情况下,首先我需要从超市下载该社区食谱,并将其与我自己的食谱一起上传到厨师服务器。 Berksfile为您简化了此工作流程。使用单个命令(berks install),它会从各自的源(可能来自git存储库或超市)下载所有依赖的cookbook(及其依赖的cookbook - 传递依赖项)。使用另一个命令berks upload,它将所有这些烹饪书上传到厨师服务器。您无需使用knife cookbook upload单独上传它们。 Berksfile 在特定烹饪书生命周期结束时的作用。

  2. metadata.rb 由chef-client引用,同时实际收敛节点。它使用此文件从厨师服务器下载所有必需的烹饪书(假设这些烹饪书现在可通过使用berkshelfknife在厨师服务器上提供)到节点以成功完成厨师 - 客户端运行。

答案 2 :(得分:0)

您无需在两个文件@Kamil中声明依赖项 在metas.rb中声明您的依赖项,并在berksfile中找到内部超市或厨师超级市场中的本地资源,这将为您下载依赖项。