我正在制作一个厨师食谱,在我的流浪盒上设置一个带有Nginx postgresql和独角兽的香草ubuntu 12.04.2,但是我遇到了Nginx的麻烦,有一个例外
undefined method `[]' for nil:NilClass
安装它时,似乎与ohai配置有关.
我发布了我在这里的所有内容:
https://github.com/DonGiulio/mychef
这是chef-solo的输出:
Starting Chef Client,version 11.4.0
Compiling Cookbooks...
================================================================================
Recipe Compile Error in /var/chef/cookbooks/Nginx/recipes/source.rb
================================================================================
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
/var/chef/cookbooks/Nginx/recipes/ohai_plugin.rb:27:in `from_file'
/var/chef/cookbooks/Nginx/recipes/source.rb:42:in `from_file'
Relevant File Content:
----------------------
/var/chef/cookbooks/Nginx/recipes/ohai_plugin.rb:
20: #
21:
22: ohai 'reload_Nginx' do
23: plugin 'Nginx'
24: action :nothing
25: end
26:
27>> template "#{node['ohai']['plugin_path']}/Nginx.rb" do
28: source 'plugins/Nginx.rb.erb'
29: owner 'root'
30: group 'root'
31: mode '0755'
32: notifies :reload,'ohai[reload_Nginx]',:immediately
33: end
34:
35: include_recipe 'ohai::default'
36:
[2013-11-19T14:22:23+00:00] ERROR: Running exception handlers
[2013-11-19T14:22:23+00:00] ERROR: Exception handlers complete
Chef Client Failed. 0 resources updated
[2013-11-19T14:22:23+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2013-11-19T14:22:23+00:00] FATAL: NoMethodError: undefined method `[]' for nil:NilClass
这是堆栈跟踪:
$cat /var/chef/cache/chef-stacktrace.out
Generated at 2013-11-19 14:22:23 +0000
NoMethodError: undefined method `[]' for nil:NilClass
/var/chef/cookbooks/Nginx/recipes/ohai_plugin.rb:27:in `from_file'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/mixin/from_file.rb:30:in `instance_eval'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/mixin/from_file.rb:30:in `from_file'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/cookbook_version.rb:346:in `load_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context.rb:151:in `load_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context.rb:132:in `block in include_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context.rb:131:in `each'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context.rb:131:in `include_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/dsl/include_recipe.rb:26:in `include_recipe'
/var/chef/cookbooks/Nginx/recipes/source.rb:42:in `from_file'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/mixin/from_file.rb:30:in `instance_eval'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/mixin/from_file.rb:30:in `from_file'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/cookbook_version.rb:346:in `load_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context.rb:151:in `load_recipe'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context/cookbook_compiler.rb:139:in `block in compile_recipes'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context/cookbook_compiler.rb:137:in `each'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context/cookbook_compiler.rb:137:in `compile_recipes'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context/cookbook_compiler.rb:74:in `compile'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/run_context.rb:86:in `load'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/client.rb:224:in `setup_run_context'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/client.rb:467:in `do_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/client.rb:200:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application.rb:190:in `run_chef_client'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application/solo.rb:239:in `block in run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application/solo.rb:231:in `loop'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application/solo.rb:231:in `run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/application.rb:73:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/bin/chef-solo:25:in `required)>'
/usr/bin/chef-solo:23:in `load'
/usr/bin/chef-solo:23:in `
更新1
我正在使用ruby-2.0.0-p247配置盒子,是否依赖于早期版本的ruby?
更新2
我已尝试使用ruby-1.9.3-p448,在新配置的盒子上,同样的问题,没有变化.
请你帮助我好吗?
谢谢,
最佳答案
您还没有说明您正在使用哪种版本的ohai和Nginx烹饪书.
原文链接:https://www.f2er.com/nginx/434320.html虽然我无法回答您的问题,但我可以通过使用依赖管理器(想想烹饪书的捆绑器)来提供有关管理烹饪书的一些建议.
gem install berkshelf
创建一个Berkshelf文件
$cat Berksfile
site :opscode
cookbook "Nginx"
并使用它来下载与Nginx相关的所有烹饪书:
$berks install -p cookbooks
Using Nginx (2.0.0)
Using apt (2.3.0)
Using bluepill (2.3.0)
Using rsyslog (1.9.0)
Using build-essential (1.4.2)
Using ohai (1.1.12)
Using runit (1.2.0)
Using yum (2.3.2)
“-p”选项将它们放在“cookbooks”子目录中:
$ls -d cookbooks/*
cookbooks/apt
cookbooks/build-essential
cookbooks/ohai
cookbooks/runit
cookbooks/bluepill
cookbooks/Nginx
cookbooks/rsyslog
cookbooks/yum