1

也许有人面临同样的情况

我们在 redis 上有一个干净的实例,它试图把一个厨师默认食谱只有

include_recipe "redisio :: 安装"

当我做饭时收到以下错误环境 AWS ec2.micro ubuntu 12.04 当我运行做饭时收到错误

================================================================================
Recipe Compile Error in /tmp/chef-solo/cookbooks/main/recipes/default.rb
================================================================================


NoMethodError
-------------
undefined method `[]' for nil:NilClass


Cookbook Trace:
---------------
  /tmp/chef-solo/cookbooks/ulimit/recipes/default.rb:13:in `block in from_file'
  /tmp/chef-solo/cookbooks/ulimit/recipes/default.rb:12:in `from_file'
  /tmp/chef-solo/cookbooks/redisio/recipes/install.rb:20:in `from_file'
  /tmp/chef-solo/cookbooks/main/recipes/default.rb:11:in `from_file'


Relevant File Content:
----------------------
/tmp/chef-solo/cookbooks/ulimit/recipes/default.rb:

  6:  # All rights reserved - Do Not Redistribute
  7:  #
  8:  ulimit = node['ulimit']
  9:  
 10:  case node[:platform]
 11:    when "debian", "ubuntu"
 12:      template "/etc/pam.d/su" do
 13>>       cookbook ulimit['pam_su_template_cookbook'] 
 14:      end
 15:  end
 16:  


[2013-04-06T14:09:50+00:00] ERROR: Running exception handlers
[2013-04-06T14:09:50+00:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated
[2013-04-06T14:09:50+00:00] FATAL: Stacktrace dumped to /tmp/chef-solo/chef-stacktrace.out
[2013-04-06T14:09:50+00:00] FATAL: NoMethodError: undefined method `[]' for nil:NilClass
ERROR: RuntimeError: chef-solo failed. See output above.

资源https://github.com/Piom/redis-chef.git

4

1 回答 1

2

我也遇到了这个问题。我有一种解决方法,但我也刚刚开始研究厨师。

问题是 redisio 取决于 ulimit 并且当您没有定义 ulimit 的任何属性时,看起来配方无法处理。

ulimit = node['ulimit']

尝试获取属性的哈希值,但结果为零。因此,如果您定义一些属性,它应该可以工作。

自从您下载后,可能会有更新版本的食谱。如果没有,ulimit/attributes/default.rb我有default['ulimit']['pam_su_template_cookbook'] = nil,它对我有用。

ulimit 让您限制资源。我认为它可以用来限制redis资源。(我也是新手。)所以更好的方法可能是弄清楚你想如何配置 ulimit 并设置正确的属性而不是 nil

于 2013-07-24T02:36:36.380 回答