运行chef-client抛出404“找不到对象”(Net :: HTTPServerException)

时间:2013-04-18 09:23:02

标签: chef

我刚开始和Chef一起工作,我对DevOps领域很陌生 我安装了Chef Server,它工作正常,然后我开始玩Knife一点点并添加了两个客户端 - 我的MacBook(OS X)和一个我自己不管理的Ubuntu 10.04服务器,所以我不得不问一个系统管理员来将chef-client安装到此计算机上。我创建了一个测试手册并将其添加到每个客户端的运行列表中。然而,当我尝试在他们两个上运行chef-client时,在我的Mac OS X机器上一切正常,而Ubuntu 10.04运行时抛出错误:

$ sudo chef-client

[Wed, 17 Apr 2013 16:32:26 +0200] INFO: Starting Chef Run (Version 0.9.18)  
[Wed, 17 Apr 2013 16:32:27 +0200] ERROR: Running exception handlers  
[Wed, 17 Apr 2013 16:32:27 +0200] ERROR: Exception handlers complete  
/usr/lib/ruby/1.8/net/http.rb:2101:in `error!': 404 "Object Not Found" (Net::HTTPServerException)
from /usr/lib/ruby/1.8/chef/rest.rb:234:in `api_request'
from /usr/lib/ruby/1.8/chef/rest.rb:285:in `retriable_rest_request'
from /usr/lib/ruby/1.8/chef/rest.rb:215:in `api_request'
from /usr/lib/ruby/1.8/chef/rest.rb:226:in `api_request'
from /usr/lib/ruby/1.8/chef/rest.rb:335:in `follow_redirect'
from /usr/lib/ruby/1.8/chef/rest.rb:226:in `api_request'
from /usr/lib/ruby/1.8/chef/rest.rb:285:in `retriable_rest_request'
from /usr/lib/ruby/1.8/chef/rest.rb:215:in `api_request'
from /usr/lib/ruby/1.8/chef/rest.rb:111:in `get_rest'
from /usr/lib/ruby/1.8/chef/client.rb:252:in `sync_cookbooks'
from /usr/lib/ruby/1.8/chef/client.rb:165:in `run'
from /usr/lib/ruby/1.8/chef/application/client.rb:222:in `run_application'
from /usr/lib/ruby/1.8/chef/application/client.rb:212:in `loop'
from /usr/lib/ruby/1.8/chef/application/client.rb:212:in `run_application'
from /usr/lib/ruby/1.8/chef/application.rb:62:in `run'
from /usr/bin/chef-client:26

错误看起来很一般,所以找出原因并没有多大帮助。

2 个答案:

答案 0 :(得分:6)

简短回答:确保您已安装最新版本的Chef Client。


答案很长:

要获得更多详细信息,首先要做的是在client.rb文件中实现更好的日志记录。通常,您可以通过在/etc/chef/client.rb中添加以下行:

log_level :debug

这已经向我展示了客户端试图访问的资源:

[Wed, 17 Apr 2013 16:46:10 +0200] DEBUG: Sending HTTP Request via GET to  
    chef.xxxxxx.xxxxx.com:443/nodes/node-apache1.xxxxxx.com/cookbooks  
[Wed, 17 Apr 2013 16:46:10 +0200] ERROR: Running exception handlers  
[Wed, 17 Apr 2013 16:46:10 +0200] ERROR: Exception handlers complete  
[Wed, 17 Apr 2013 16:46:10 +0200] DEBUG: Re-raising exception:   
Net::HTTPServerException - 404 "Object Not Found"

这是一个不存在的资源,因为系统管理员已经从Opscode的Ubuntu仓库安装了客户端,而且这个版本不是它的最后一个版本,而且它与Chef Server 11不兼容。我让他安装来自the Chef Client install page on Opscode.com

的最新版客户端

正如您所见,您可以下载所需的软件包,也可以只运行

curl -L https://www.opscode.com/chef/install.sh | sudo bash

获取最新版本。

正在运行的厨师 - 客户端现在可以正常工作。

答案 1 :(得分:1)

PS:我不确定这会对其他人有所帮助,但我设法通过以下方式解决了同样的问题。

如果你进入框中,然后运行此命令

  

sudo chef-client --runlist“your_cookbook_name”

它会提示确切的错误。所以你可以根据错误采取行动。

在我的情况下,当我通过上述方法检查时,BDW。我发现我没有在https://manage.chef.io/中创建Environment