我刚开始和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
错误看起来很一般,所以找出原因并没有多大帮助。
答案 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
。