Chef infra 如何使用最新的食谱,而其他一些保持锁定的书架

Chef infra 如何使用最新的食谱,而其他一些保持锁定的书架,chef-infra,berkshelf,Chef Infra,Berkshelf,我有一个像这样的Berksfile: source "https://api.berkshelf.com" cookbook 'ruby_build' cookbook 'rbenv', github: 'fnichol/chef-rbenv' cookbook 'foo', git: 'git@bitbucket.org:ironsand/cookbook-foo.git' 在knife solo cook节点之后,将创建Berksfile.lock,并锁定cookbooks的版本 我想将

我有一个像这样的
Berksfile

source "https://api.berkshelf.com"

cookbook 'ruby_build'
cookbook 'rbenv', github: 'fnichol/chef-rbenv'
cookbook 'foo', git: 'git@bitbucket.org:ironsand/cookbook-foo.git'
knife solo cook节点
之后,将创建
Berksfile.lock
,并锁定cookbooks的版本

我想将最新的cookbook用于自己的cookbook(
foo
),并锁定其他人创建的cookbook的版本(
rbenv
ruby\u build


我不知道怎么做。有人知道我能做吗?

您可以在Berksfile中指定您的食谱版本。或者,对于要为其提供git回购的烹饪书,可以指定要拉取的修订

source "https://api.berkshelf.com"

cookbook 'ruby_build', '= 4.0.2'
cookbook 'rbenv', github: 'fnichol/chef-rbenv', tag: 'some_Tag'
cookbook 'foo', git: 'git@bitbucket.org:ironsand/cookbook-foo.git', :branch 'master'

如果你想要一个特定的散列而不是一个标记或分支,你也可以在中使用
:ref'some\u git\u hash\u for\u ref'

也许我理解错了,但是即使我指定了一个git repo和分支或标记,当我运行
shove solo cook
命令时,
Berksfile.lock
也会锁定修订。因此,在我删除
Berksfile.lock
之前,不会使用最新版本。是的,这就是为什么它是
.lock
文件的原因。如果要更新版本,必须运行
berks update
或删除锁定文件。这就是我的问题,如何在锁定其他存储库的同时释放
.lock
我自己的存储库。如果在Berksfile中锁定所需的版本,然后在运行
之前删除Berksfile.lock,你应该没事的。Berksfile中的特定版本将获得认可,而Berksfile中没有特定版本的烹饪书将使用最新的兼容版本。