63

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

depends 'nginx'

我是否需要将其添加到 Berksfile 使用

cookbook 'nginx'

?

4

3 回答 3

79

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

将您的依赖项添加到元数据文件允许其他应用程序,如图书馆管理员或超市,也可以读取您的依赖项。

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

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

于 2014-08-16T18:37:22.460 回答
20

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

  1. Berksfile用于食​​谱的依赖管理。考虑一个案例,我的食谱使用的是 厨师超市的社区食谱。在这种情况下,首先我需要从超市下载该社区食谱并将其与我自己的食谱一起上传到厨师服务器。Berksfile 为您简化了这个工作流程。使用单个命令berks install(使用另一个命令berks upload,它将所有这些食谱上传到厨师服务器。您不必单独上传它们knife cookbook uploadBerksfile的作用,特别是食谱的生命周期在这里完成。

  2. metadata.rb在实际聚合节点时由 chef-client 引用。它使用此文件将所有必需的说明书从厨师服务器(假设这些说明书现在通过使用berkshelfknife)下载到节点以成功完成厨师客户端运行。

于 2016-03-31T10:33:58.087 回答
0

您不需要在两个文件中声明依赖项@Kamil 在 metadata.rb 中声明您的依赖项,并在 berksfile 中获取本地超市或厨师 supermaket,这将为您下载依赖项。

于 2020-06-15T18:06:20.570 回答