Berksfile中的主厨'cookbook'与metadata.rb中的'depends'

使用'cookbook'将食谱添加到Berksfile并使用'depends'添加cookbooks到metadata.rb有什么区别? 例如,如果我添加到metadata.rb

depends 'nginx' 

我需要将它添加到Berksfile使用

 cookbook 'nginx' 

Berksfile是Berkshelf特有的,而元数据文件则embedded到Chef中。

将您的依赖关系添加到元数据文件允许其他应用程序(如图书pipe理员或超市)读取您的依赖关系。

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

我强烈build议在元数据文件中指定所有依赖关系,并使用Berksfile指向超级市场(如Github或本地path)中不存在特定食谱的地方。

Berksfile和metadata.rb具有不同的目的来解决和在食谱生命周期的不同阶段进入图片。

  1. Berksfile用于食谱的依赖pipe理。 考虑一下我的食谱正在使用厨师超市的社区食谱。 在这种情况下,首先我需要从超市下载社区食谱,并将其与我自己的食谱一起上传到厨师服务器。 Berksfile为您简化了这个工作stream程。 使用单一命令( berks install ),它从各自的源(可能来自git仓库或超市)下载所有相关的食谱(及其相关的食谱 – 传递依赖)。 用另一个命令berks upload它将所有这些食谱上传到厨师服务器。 您不必单独knife cookbook uploadBerksfile在特定食谱生命周期中的作用在这里完成。

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