我尝试使用Chef Solo和Berkshelf建立一个流浪者vm。我想使用maven食谱。 “maven”依赖于“java”和“java_ark”(包含在“java”食谱中)。所有这些都是由Opscode创建的。
但每次我收到此错误:
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/recipes/default.rb:21:in `from_file'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/platform-slayer/recipes/slayer_worker.rb:2:in `from_file'
Relevant File Content:
----------------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/recipes/default.rb:
14: # Unless required by applicable law or agreed to in writing, software
15: # distributed under the License is distributed on an "AS IS" BASIS,
16: # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17: # See the License for the specific language governing permissions and
18: # limitations under the License.
19: #
20:
21>> include_recipe "java::#{node['java']['install_flavor']}"
22:
23: # Purge the deprecated Sun Java packages if remove_deprecated_packages is true
24: %w[sun-java6-jdk sun-java6-bin sun-java6-jre].each do |pkg|
25: package pkg do
26: action :purge
27: only_if { node['java']['remove_deprecated_packages'] }
28: end
29: end
30:
有谁知道这个问题? 如果您需要更多信息,请与我们联系。
答案 0 :(得分:5)
我认为问题在于node['java']
正在评估nil
。
一种可能的解决方案是在食谱或节点定义或相关角色定义中定义属性node['java']['install_flavor']
。
但它看起来像是食谱中的一个错误,因为文档说默认值应该适用于install_flavor
属性。
答案 1 :(得分:0)
这绝对看起来像个错误。对于那些有类似问题的人,我建议使用java :: openjdk。