- Chef 教程
- Chef - 主页
- Chef - 概述
- Chef - 架构
- Chef - 版本控制系统设置
- Chef - 工作站设置
- Chef - 客户端设置
- Chef - Test Kitchen 设置
- Chef - Knife 设置
- Chef - Solo 设置
- Chef - 食谱
- Chef - 食谱依赖项
- Chef - 角色
- Chef - 环境
- Chef - 将 Chef-Client 作为守护进程
- Chef - Chef-Shell
- Chef - 测试食谱
- Chef - Foodcritic
- Chef - ChefSpec
- 使用 Test Kitchen 测试食谱
- Chef - 节点
- Chef - Chef-Client 运行
- 高级 Chef
- 动态配置食谱
- Chef - 模板
- Chef - 使用 Chef DSL 的纯 Ruby
- Chef - 带有食谱的 Ruby Gems
- Chef - 库
- Chef - 定义
- Chef - 环境变量
- Chef - 数据包
- Chef - 数据包脚本
- Chef - 跨平台食谱
- Chef - 资源
- 轻量级资源提供程序
- Chef - 蓝图
- Chef - 文件和软件包
- Chef - 社区食谱
- Chef 有用资源
- Chef - 快速指南
- Chef - 有用资源
- Chef - 讨论
Chef - Chef-Client 运行
为了测试 Chef-Client 的运行,我们需要配置 Chef-Client 以使用托管的 Chef 或自己托管的服务器。
在调试模式中运行 Chef-Client
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
检查最后一次 Chef-Client 运行的结果
为了检查最后一次 Chef-Client 运行,特别是在我们开发新食谱时出现故障问题,我们需要知道具体出了什么问题。即使 Chef 在 stdout 中打印所有内容,也可能会想要再次查看调试日志。
如果我们想测试,我们需要有一个在编译时失败的损坏食谱。
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:
有关更多详细信息,我们可以查看堆栈跟踪。
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'
广告