我刚刚开始与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
Run Code Online (Sandbox Code Playgroud)
该错误看起来很一般,因此找出原因并没有多大帮助.
简短回答:确保您已安装最新版本的Chef Client.
答案很长:
要获得更多详细信息,首先要做的是在client.rb文件中更好地记录日志.通常,您可以通过在/etc/chef/client.rb中添加以下行:
log_level :debug
Run Code Online (Sandbox Code Playgroud)
这已经向我展示了客户端尝试访问的资源:
[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"
Run Code Online (Sandbox Code Playgroud)
这是一个不存在的资源,因为系统管理员从Opscode的Ubuntu仓库安装了客户端,而且这个版本不是它的最后一个版本,而且它与Chef Server 11不兼容.我让他安装最新版本的客户端来自Opscode.com上的Chef Client安装页面
正如您在那里看到的,您可以下载所需的包,也可以只运行
curl -L https://www.opscode.com/chef/install.sh | sudo bash
Run Code Online (Sandbox Code Playgroud)
最新版本.
现在正在运行的厨师 - 客户端.