刀和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_server
,metadata.rb
为:
version '0.1.0'
depends 'rabbitmq', '>= 5.7.0'
我可能会想到只有1个依赖,用knife
就可以轻松解决了。
然而...
rabbitmq
食谱可能依赖于其他食谱,而其他食谱可能依赖于其他一些食谱。这种嵌套依赖关系可能导致不得不提取许多食谱(有时 > 10)。这个可以用刀来完成,但是很费时间,而且容易出错。
另一个功能是,使用 Berkshelf 上传的食谱会针对该版本冻结(默认行为)。它将防止相同版本的食谱再次上传。
如果我们参考上面的例子,我将无法在进行一些更改后使用 Berkshelf 上传 my_rabbitmq_server
版本 0.1.0
。因此,对说明书代码进行任何更改都需要版本升级。
如果您还没有完成 official documentation,我强烈建议您完成。
knife 和 berkshelf 都是用来上传菜谱的。 berkshelf 正在处理“第三方依赖项”以及 feom berkfile 或 Metadata.rb。这是唯一的区别还是还有更多区别?
从广义上讲,Berkshelf 是 Chef 食谱的一种“包管理器”。
有点像 yum
之于 rpm
,或 apt-get
之于 dpkg
。
正如您所指出的,Berkshelf 为给定的 Chef 说明书提供依赖项管理。它不仅可以提取外部依赖项,还可以从给定代码 (Git/Bitbucket) 存储库中提取相关说明书(和版本)。对于更大的 Chef 部署,管理多个依赖项总是很复杂。
有时依赖性是显而易见的。只是为了说明这一点,如果我有一本食谱 my_rabbitmq_server
,metadata.rb
为:
version '0.1.0'
depends 'rabbitmq', '>= 5.7.0'
我可能会想到只有1个依赖,用knife
就可以轻松解决了。
然而...
rabbitmq
食谱可能依赖于其他食谱,而其他食谱可能依赖于其他一些食谱。这种嵌套依赖关系可能导致不得不提取许多食谱(有时 > 10)。这个可以用刀来完成,但是很费时间,而且容易出错。
另一个功能是,使用 Berkshelf 上传的食谱会针对该版本冻结(默认行为)。它将防止相同版本的食谱再次上传。
如果我们参考上面的例子,我将无法在进行一些更改后使用 Berkshelf 上传 my_rabbitmq_server
版本 0.1.0
。因此,对说明书代码进行任何更改都需要版本升级。
如果您还没有完成 official documentation,我强烈建议您完成。