【问题标题】:Recipe Compile Error: undefined method `[]' for nil:NilClass配方编译错误:nil:NilClass 的未定义方法“[]”
【发布时间】:2016-10-15 07:44:33
【问题描述】:

在这里发布...以及使用 Chef 的新手...但是我正在制作一个简单的节点从属菜谱,并且在我制作的每本菜谱上都会继续出现此错误。我已经搜索并寻求帮助,但似乎无法在任何地方找到有关此问题的任何见解......任何帮助或建议都非常感谢!

`安装食谱宝石: 编写食谱...

   ================================================================================
   Recipe Compile Error in /tmp/kitchen/cache/cookbooks/jenkins/attributes/default.rb
   ================================================================================

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

   Cookbook Trace:
   ---------------
     /tmp/kitchen/cache/cookbooks/jenkins/attributes/default.rb:6:in `from_file'

   Relevant File Content:
   ----------------------
   /tmp/kitchen/cache/cookbooks/jenkins/attributes/default.rb:

     1:  default['jenkins']['user'] = 'jenkins'
     2:  default['jenkins']['group'] = 'jenkins'
     3:  default['jenkins']['home'] = '/home/jenkins'
     4:  default['jenkins']['work_dir'] = '/opt/jenkins'
     5:  
     6>> if node['tomcat']['base_version'] > 6
     7:    default['jenkins']['tomcat_service'] = 'tomcat'
     8:    default['jenkins']['install_dir'] = '/usr/share/tomcat/webapps'
     9:  else
    10:    default['jenkins']['tomcat_service'] = "tomcat#{node['tomcat']['base_version']}"
    11:    default['jenkins']['install_dir'] = "/usr/share/tomcat#{node['tomcat']['base_version']}/webapps"
    12:  end
    13:  default['jenkins']['build_dependencies'] = []
    14:  default['jenkins']['versioned_packages'] = []
    15:  # Example:

   Platform:
   ---------
   x86_64-linux


   Running handlers:
   [2016-10-14T22:58:04+00:00] ERROR: Running exception handlers
   Running handlers complete
   [2016-10-14T22:58:04+00:00] ERROR: Exception handlers complete
   Chef Client failed. 0 resources updated in 22 seconds
   [2016-10-14T22:58:04+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out
   [2016-10-14T22:58:04+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
   [2016-10-14T22:58:04+00:00] ERROR: undefined method `[]' for nil:NilClass
   [2016-10-14T22:58:05+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)`

我的工作要求我运行这个版本的 Chef:

Chef Development Kit Version: 0.15.16 chef-client version: 12.11.18 delivery version: master (444effdf9c81908795e88157f01cd667a6c43b5f) berks version: 4.3.5 kitchen version: 1.10.0

【问题讨论】:

    标签: tomcat jenkins chef-infra chef-recipe cookbook


    【解决方案1】:

    node['tomcat'] 未设置,因此您不能使用低于它的值。这可能意味着您错过了 metadata.rb 文件中的依赖项。

    【讨论】:

    • 非常感谢,这有效。我很困惑,因为一些同事能够在他们的元数据文件中不包含该行的情况下制作相同的食谱。
    • 节点属性是全局的,因此如果通过运行列表或其他依赖于它的方式将 tomcat 食谱拉入,它将被加载。
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多