In order to test Chef-Client run, we need to have Chef-Client configured to use the hosted Chef or own hosted server.
Running Chef-Client in Debug Mode
vipin@server:~$ sudo chef-client -l debug …TRUNCATED OUTPUT… Hashed Path:A+WOcvvGu160cBO7IFKLYPhh9fI= X-Ops-Content-Hash:2jmj7l5rSw0yVb/vlWAYkK/YBwk= X-Ops-Timestamp:2012-12-27T11:14:07Z X-Ops-UserId:vagrant' Header hash: {"X-Ops-Sign"=>"algorithm=sha1;version=1.0;", "X-Ops-Userid"=>"vagrant", "X-Ops-Timestamp"=>"2012-12- 27T11:14:07Z", "X-Ops-Content- Hash"=>"2jmj7l5rSw0yVb/vlWAYkK/YBwk=", "X-Ops- Authorization- 1"=>"HQmTt9U/ LJJVAJXWtyOu3GW8FbybxAIKp4rhiw9O9O3wtGYVHyVGuoilWDao", "X-Ops-Authorization- 2"=>"2/uUBPWX+YAN0g1/ fD2854QAU2aUcnSaVM0cPNNrldoOocmA0U5HXkBJTKok", "X-Ops-Authorization- 3"=>"6EXPrEJg5T+ ddWd5qHAN6zMqYc3untb41t+eBpigGHPhtn1LLInMkPeIYwBm", "X-Ops-Authorization- 4"=>"B0Fwbwz2HVP3wEsYdBGu7yOatq7fZBXHfIpeOi0kn/ Vn0P7HrucnOpONmMgU", "X-Ops-Authorization- 5"=>"RBmmbetFSKCYsdg2v2mW/ ifLIVemhsHyOQjffPYPpNIB3U2n7vji37NxRnBY", "X-Ops-Authorization- 6"=>"Pb3VM7FmY60xKvWfZyahM8y8WVV9xPWsD1vngihjFw=="} [2012-12-27T11:14:07+00:00] DEBUG: Sending HTTP Request via GET to api.opscode.com:443/organizations/agilewebops/ nodes/vagrant [2012-12-27T11:14:09+00:00] DEBUG: ---- HTTP Status and Header Data: ---- [2012-12-27T11:14:09+00:00] DEBUG: HTTP 1.1 200 OK [2012-12-27T11:14:09+00:00] DEBUG: server: nginx/1.0.5 [2012-12-27T11:14:09+00:00] DEBUG: date: Thu, 27 Dec 2012
Inspecting the Result of the Last Chef-Client Run
In order to check the last Chef-Client run especially failure issues when we are developing a new cookbook, we need to know what exactly went wrong. Even though Chef prints everything in stdout, one might want to see the debug log again.
If we want to test, we need to have a broken cookbook which is failing on compilation.
user@server:~$ sudo chef-client ================================================================== ============== Recipe Compile Error in /srv/chef/file_store/cookbooks/my_ cookbook/recipes/default.rb ================================================================== ============== NoMethodError ------------- undefined method `each' for nil:NilClass Cookbook Trace: --------------- /srv/chef/file_store/cookbooks/my_cookbook/recipes/default. rb:9:in `from_file' Relevant File Content: ---------------------- /srv/chef/file_store/cookbooks/my_cookbook/recipes/default.rb: 2: # Cookbook Name:: my_cookbook 3: # Recipe:: default 4: # 5: # Copyright 2013, YOUR_COMPANY_NAME 6: # 7: # All rights reserved - Do Not Redistribute 8: # 9≫ nil.each {} 10:
For more details, we can look into the stacktrace.
user@server:~$ less /srv/chef/file_store/chef-stacktrace.out Generated at 2013-07-21 18:34:05 +0000 NoMethodError: undefined method `each' for nil:NilClass /srv/chef/file_store/cookbooks/my_cookbook/recipes/default.rb:9:in `from_file' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.4/lib/chef/ mixin/from_file.rb:30:in `instance_eval' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.4/lib/chef/ mixin/from_file.rb:30:in `from_file' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.4/lib/chef/ cookbook_version.rb:346:in `load_recipe'