主厨application_java cookbook - 未初始化的常量Chef :: DSL

时间:2014-05-12 18:26:42

标签: vagrant chef chef-recipe chef-solo

我的application_java cookbook有问题。我将配方添加到application_java cookbook中,将我的.war存档部署到Tomcat。这就是它的样子:

case node['platform']
when 'debian', 'ubuntu'
  include_recipe 'apt'
end
include_recipe 'java' # Need described below

application 'ensembleAPI' do
  path         "/var/lib/tomcat7/webapps/ensembleRestApi.war"
  owner "root"
  group "root"
  mode "0777"
  repository   'ensembleRestApi.war'
scm_provider Chef::Provider::File::Deploy

java_webapp
tomcat
end

我认为这没关系。但是当我用 vagrant up 运行所有进程时,它会以跟随错误结束

NameError
---------
uninitialized constant Chef::DSL
Cookbook Trace:
---------------
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/application_java/providers/java_webapp.rb:20:in `class_from_file'

我的厨师版本是11.10.2。

1 个答案:

答案 0 :(得分:1)

您需要使用Chef 11+。错误:

NameError
---------
uninitialized constant Chef::DSL

来自line in the cookbook ......

include Chef::DSL::IncludeRecipe

早期版本的Chef中不存在Chef::DSL类。如果你正在使用Vagrant,听起来你可能正在使用一个Vagrant盒子,它在旧版本中预装了Chef。我建议调查Chef" Bento"项目,其中没有安装厨师的新基础框,您可以使用" vagrant-omnibus"插件,通过Chef的综合软件包获取您想要使用的Chef版本。