【问题标题】:How can I make Berkshelf use a local path as the default site, or unset the default site?如何让 Berkshelf 使用本地路径作为默认站点,或取消设置默认站点?
【发布时间】:2013-10-25 14:56:49
【问题描述】:

我有一个包含许多食谱的厨师存储库,以及一个包含以下内容的 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 不是为处理这个问题而设计的,但能够关闭默认站点以便不会从用户无法控制的源中隐式提取任何食谱仍然很有用。

【问题讨论】:

标签: ruby chef-infra berkshelf


【解决方案1】:

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”说明书的依赖项不需要明确列出,而是作为传递依赖项从您的自定义存储库中下载。

【讨论】:

    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2013-12-15
    • 2014-12-26
    相关资源
    最近更新 更多