刀和berkshelf的区别?

knife and berkshelf difference?

knife 和 berkshelf 都是用来上传菜谱的。 berkshelf 正在处理“第三方依赖项”以及 feom berkfile 或 Metadata.rb。这是唯一的区别还是还有更多区别?

从广义上讲,Berkshelf 是 Chef 食谱的一种“包管理器”。

有点像 yum 之于 rpm,或 apt-get 之于 dpkg

正如您所指出的,Berkshelf 为给定的 Chef 说明书提供依赖项管理。它不仅可以提取外部依赖项,还可以从给定代码 (Git/Bitbucket) 存储库中提取相关说明书(和版本)。对于更大的 Chef 部署,管理多个依赖项总是很复杂。

有时依赖性是显而易见的。只是为了说明这一点,如果我有一本食谱 my_rabbitmq_servermetadata.rb 为:

version '0.1.0'

depends 'rabbitmq', '>= 5.7.0'

我可能会想到只有1个依赖,用knife就可以轻松解决了。

然而...

rabbitmq 食谱可能依赖于其他食谱,而其他食谱可能依赖于其他一些食谱。这种嵌套依赖关系可能导致不得不提取许多食谱(有时 > 10)。这个可以用刀来完成,但是很费时间,而且容易出错。

另一个功能是,使用 Berkshelf 上传的食谱会针对该版本冻结(默认行为)。它将防止相同版本的食谱再次上传。

如果我们参考上面的例子,我将无法在进行一些更改后使用 Berkshelf 上传 my_rabbitmq_server 版本 0.1.0。因此,对说明书代码进行任何更改都需要版本升级。

如果您还没有完成 official documentation,我强烈建议您完成。