【问题标题】:Can I reference multiple versions of a Chef cookbook?我可以参考厨师食谱的多个版本吗?
【发布时间】:2015-06-08 22:30:03
【问题描述】:

是否可以在如下食谱中引用厨师食谱的多个版本,其中一个食谱 (foo) 中的食谱引用另一食谱 (bar) 中的多个版本的食谱,其中版本变量在此块之前填充?

begin
    case version
    when ""
        include_recipe "cookbook-bar"
    when "1.0.0"
        include_recipe "cookbook-bar@1.0.0"
    when "1.0.1"
        include_recipe "cookbook-bar@1.0.1"
    else
        raise "Invalid Version: " + version
    end
rescue Chef::Exceptions::CookbookNotFound
    raise "The Specified Cookbook Was Not Found: cookbook-foo-bar@" + version
end

metadata.rb 文件中,我设置了如下所示的依赖项,希望能引入cookbook-bar1.0.01.0.11.0.2 版本。

depends          "cookbook-bar", "<= 1.0.2"

但是当我运行它时,对于1.0.01.0.1cookbook-bar 版本,我仍然收到CookbookNotFound 错误。

【问题讨论】:

    标签: chef-infra chef-recipe cookbook


    【解决方案1】:

    你不能,只有一个版本的食谱会被拉到节点上,最高匹配依赖约束。

    如果您在同一运行中需要多个版本的食谱,那么您在某个地方会遇到问题。

    【讨论】:

    • 一个用例可能是一个“清理”配方,我想在继续之前根据最后运行的食谱版本进行清理。在这种情况下,唯一的选择是让最新版本的“清理”配方知道如何从所有以前的版本中清理吗?
    • 不,有很多方法,如果没有真正的用例,很难判断哪个更适合。主要共识是避免这种更改并从头开始提供目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2021-11-01
    相关资源
    最近更新 更多