knife和berkshelf的区别



knife和berkshelf都用于上传食谱。伯克希尔正在处理"第三方依赖关系";以及feom berkfile或Metadata.rb。这是唯一的区别还是还有更多区别?

从广义上讲,Berkshelf是一种"包管理器";厨师烹饪书。

这有点像yumrpm是什么,或者apt-getdpkg是什么。

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

有时依赖关系是显而易见的。为了说明这一点,如果我有一本食谱my_rabbitmq_server,其中metadata.rb为:

version '0.1.0'
depends 'rabbitmq', '>= 5.7.0'

我可能会认为只有一个依赖项,并且我可以用knife轻松地解决它。

然而。。。

rabbitmq食谱可能依赖于其他食谱,也可能依赖于一些其他食谱。这种嵌套的依赖关系可能导致必须提取许多烹饪书(有时>10(。这可以用刀来完成,但它很耗时,而且容易出错。

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

如果我们参考上面的例子,在进行一些更改后,我将无法使用Berkshelf上传my_rabbitmq_server版本0.1.0。因此,对于食谱代码的任何更改,它都有必要进行版本提升。

如果你还没有看过官方文件,我强烈建议你这样做。

最新更新