代码之家  ›  专栏  ›  技术社区  ›  James

当cookbook具有依赖项时,Chef工作流在验证阶段失败

  •  1
  • James  · 技术社区  · 7 年前

    我正在使用Chef Automatic的工作流部分将食谱发送到我的Chef服务器。我已经通过管道在Chef服务器上成功上传了2本烹饪书。

    在Chef服务器上:
    apache 版本为0.2.3
    another_test 版本为0.1.1

    我想改变一下 阿帕奇 为了依赖另一个_测试,我更新了 阿帕奇 并将版本升级为 0.2.4 .

    的元数据文件 阿帕奇 depends 'another_test' 另一个_测试 没有依赖项。

    Berksfile for 阿帕奇

    source :chef_server
    source 'https://supermarket.chef.io'
    metadata
    

    当我调用交付审查时,管道开始运行,但我在验证阶段的单元测试阶段失败。

    execute[unit_rspec_apache] action run

    ================================================================================
    ================================================================================
    Mixlib::ShellOut::ShellCommandFailed
    ------------------------------------
    预期进程以[0]退出,但收到“1”
    ----开始输出rspec——格式文档——颜色----
    标准输出:[2017-11-21T14:06:57+00:00]错误:连接被拒绝连接到 https://localhost/universe ,重试1/5
    [2017-11-21T14:07:02+00:00]错误:连接被拒绝连接到 https://localhost/universe ,重试2/5
    [2017-11-21T14:07:07+00:00]错误:连接被拒绝连接到 https://localhost/universe
    [2017-11-21T14:07:12+00:00]错误:连接被拒绝连接到 https://localhost/universe ,重试4/5
    [2017-11-21T14:07:17+00:00]错误:连接被拒绝连接到 https://localhost/universe ,重试5/5

    “before(:suite)`钩子中出错。 失败/错误:引发NoSolutionError。新(需求,e)

    Berkshell::无解决方案错误: 由于解决方案约束(apache=0.2.4),无法满足包另一个不存在的_测试的约束。可能导致另一个_测试受到约束的解决方案约束:[(apache=0.2.4)->(另一个_测试>=0.0.0)]
    缺失工件:另一个_测试
    无法满足的需求:(apache=0.2.4)
    无法找到满足需求的解决方案:apache(0.2.4)

    由于此故障,apache 0.2.4的新版本从未上载到Chef服务器。

    编辑: 我已经使用超市的依赖项进行了测试,它通过了验证阶段。所以我有 depends 'java' 在apache中,这可以很好地上传。当我依赖来自厨师服务器的烹饪书时,问题就开始了。

    编辑2: 我可以登录runner并执行以下操作 knife cookbook list . 这向我证明了运行者可以访问chef服务器并查看那里有哪些烹饪书。我还尝试将Berksfile更改为 阿帕奇 拥有 source 'https://<full-url-to-chef-server/organizations/myorg' 代替 source :chef_server

    1 回复  |  直到 7 年前
        1
  •  0
  •   James    7 年前

    我必须编辑 /var/opt/delivery/workspace/.chef/knife.rb runner节点上的文件。我在文件底部添加了这一行: chef_server_url 'https://chef-server/organizations/myorg' .