当cookbook具有依赖关系时,Chef Workflow在Verify阶段失败

时间:2017-11-21 14:09:53

标签: chef workflow verify depends

我正在使用Chef Automate的Workflow部分向我的Chef服务器提供cookbook。我已经通过管道在Chef Server上成功上传了2本烹饪书。

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

我想对apache进行更改以依赖another_test,因此我更新了apache的元数据,并将版本提升为0.2.4

apache的元数据文件有depends 'another_test'  并且another_test没有依赖关系。

apache的Berksfile是

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

当我进行交付审核时,管道启动,但我在验证阶段的单元测试阶段出现故障。

execute[unit_rspec_apache] action run

  

=============================================== =================================
      在资源'execute [unit_rspec_apache]'上执行动作`run`时出错       ================================================== ==============================
      Mixlib :: ShellOut :: ShellCommandFailed
      ------------------------------------
      预期进程以[0]退出,但收到'1'       ----开始输出rspec --format documentation --color ----
      STDOUT:[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,重试3/5
      [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.new(要求,e)

     

Berkshelf :: NoSolutionError:         由于解决方案约束(apache = 0.2.4),无法满足不存在的包another_test的约束。可能导致对another_test的约束的解决方案约束:[(apache = 0.2.4) - > (another_test> = 0.0.0)]
        遗失的文物:another_test
        无法满足的需求:(apache = 0.2.4)
        无法找到满足需求的解决方案:apache(0.2.4)

由于此失败,新版本的apache 0.2.4永远不会上传到Chef服务器。

编辑: 我已经使用超市的依赖关系进行了测试,并通过了验证阶段。所以我在apache中有depends 'java'并且上传得很好。当我依赖来自厨师服务器的食谱时,问题就开始了。

编辑2: 我可以登录跑步者并做knife cookbook list。这证明了跑步者可以访问厨师服务器并查看那里存在的烹饪书。我也尝试更改apache的Berksfile source 'https://<full-url-to-chef-server/organizations/myorg'取代source :chef_server

1 个答案:

答案 0 :(得分:0)

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

此刀配置文件由转轮节点上的dbuild用户使用。它读取此文件以确定Chef服务器的URL。