7

我刚开始与 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

该错误看起来很普遍,因此找出原因并没有太大帮助。

4

2 回答 2

8

简短的回答:确保您已经安装了最新版本的 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 不兼容。我让他安装最新版本的客户端来自Opscode.com 上的 Chef Client 安装页面

如您所见,您可以下载所需的软件包或直接运行

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

对于最新版本。

运行 chef-client 现在一切正常。

于 2013-04-18T09:23:01.600 回答
2

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

如果你 ssh 进入盒子然后运行这个命令

sudo chef-client --runlist "your_cookbook_name"

它将提示确切的错误。所以你可以根据错误采取措施。

就我而言,当我检查上述方法时,BDW。我发现我没有Environmenthttps://manage.chef.io/中创建。

于 2014-12-16T11:23:18.633 回答