2

我有一个包含许多食谱的厨师存储库,以及一个包含以下内容的 Berksfile:

Dir.glob('cookbooks/*/').each do |path|
    cookbook File.basename(path), :path => path
end

cookbook 'supervisor', '~> 0.5.1', :github => "opscode-cookbooks/supervisor"

这包括来自存储库的每本说明书,以及来自 github 存储库的外部说明书。默认情况下,Berkshelf 会在 opscode 社区站点中搜索任何未列出的说明书。

而不是这个,我想:

  • 禁用此默认设置,并且永远不要在外部站点中搜索缺少的依赖项。
  • 将此默认值替换为本地路径,以便我可以删除Dir.glob添加我的每个本地食谱的路径。

作为旁注,我完全意识到将食谱保存在 chef 存储库中被认为是一种反模式。在这种情况下,这不是我可以改变的,虽然 Berkshelf 不是为处理这个问题而设计的,但能够关闭默认站点以便不会从用户无法控制的源中隐式提取任何食谱仍然很有用。

4

1 回答 1

2

Berkshelf 似乎使用 opscode 社区站点作为其默认位置,因此您可以尝试设置一个虚拟站点值。想法是缺少依赖项会引发超时错误。

在我看来,更好的方法是使用专门的托管厨师组织或开源厨师服务器来操作您自己的食谱存储库:

chef_api "https://api.opscode.com/organizations/myrepo", node_name: "repo", client_key: "/path/to/repo.pem"

cookbook 'myapp'
cookbook 'supervisor', '~> 0.5.1', :github => "opscode-cookbooks/supervisor"

“myapp”说明书的依赖项不需要明确列出,而是作为传递依赖项从您的自定义存储库中下载。

于 2013-11-09T02:27:45.813 回答