Vagrant启动问题

5

我有一个使用vagrant和chef创建的虚拟机。昨晚在虚拟机运行时,我的电脑意外重启了。之后,当我尝试启动虚拟机时,我收到以下消息:

Chef从未成功完成!任何错误都应该在上面的输出中可见。请修复您的食谱,使其正确完成。
[default] VM already created. Booting if it's not already running...
[default] Clearing any previously set forwarded ports...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Running any VM customizations...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- v-root: /vagrant
[default] -- v-data: /vagrant
[default] -- v-csr-2: /tmp/vagrant-chef-1/chef-solo-2/roles
[default] -- v-csc-1: /tmp/vagrant-chef-1/chef-solo-1/cookbooks
[default] Running provisioner: Vagrant::Provisioners::ChefSolo...
[default] Generating chef JSON and uploading...
[default] Running chef-solo...
stdin: is not a tty
[Tue, 10 Jul 2012 00:59:36 -0700] INFO: *** Chef 0.10.2 ***
[Tue, 10 Jul 2012 00:59:36 -0700] INFO: Setting the run_list to ["role[my-site]"] from JSON
[Tue, 10 Jul 2012 00:59:36 -0700] INFO: Run List is [role[my-site]]
[Tue, 10 Jul 2012 00:59:36 -0700] INFO: Run List expands to [memcached, my-site, my-site::vm]
[Tue, 10 Jul 2012 00:59:36 -0700] INFO: Starting Chef Run for lucid32
[Tue, 10 Jul 2012 00:59:37 -0700] ERROR: Running exception handlers
[Tue, 10 Jul 2012 00:59:37 -0700] ERROR: Exception handlers complete
[Tue, 10 Jul 2012 00:59:37 -0700] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out
[Tue, 10 Jul 2012 00:59:37 -0700] FATAL: NoMethodError: undefined method `[]' for nil:NilClass
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.

后续编辑:

堆栈跟踪转储到/tmp/vagrant-chef-1/chef-stacktrace.out

Generated at Tue Jul 10 00:59:37 -0700 2012
NoMethodError: undefined method `[]' for nil:NilClass
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/my-site/recipes/default.rb:114:in `from_file'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/mixin/recipe_definition_dsl_core.rb:69:in `instance_eval'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/mixin/recipe_definition_dsl_core.rb:69:in `method_missing'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/my-site/recipes/default.rb:109:in `from_file'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/cookbook_version.rb:578:in `load_recipe'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/mixin/language_include_recipe.rb:40:in `include_recipe'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/mixin/language_include_recipe.rb:27:in `each'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/mixin/language_include_recipe.rb:27:in `include_recipe'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/run_context.rb:72:in `load'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/run_context.rb:69:in `each'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/run_context.rb:69:in `load'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/client.rb:195:in `setup_run_context'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/client.rb:159:in `run'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application/solo.rb:192:in `run_application'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application/solo.rb:183:in `loop'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application/solo.rb:183:in `run_application'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application.rb:66:in `run'
/opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/chef-solo:25
/opt/ruby/bin/chef-solo:19:in `load'
/opt/ruby/bin/chef-solo:19

任何想法,谢谢,Radu

“/tmp/vagrant-chef-1/chef-stacktrace.out”中的堆栈跟踪是什么样子? - Nils Landt
稍后编辑,已添加为后续修改。 - Radu
主厨之前的运行是否已经成功完成且没有错误?在 my-site/recipes/default.rb 的第114行,您可能正在访问一些不存在的节点属性。请查看该行代码,您是否认识那个空对象,并且能否使其不为空? - Nils Landt
直到意外重启之前,它都运行良好… - Radu
3个回答

6

这是您的Chef配方中的一个错误。如果您查看堆栈跟踪,可以看到错误实际上在my-site食谱中的默认食谱的第114行。您看到的Ruby错误意味着您正在尝试执行类似于a[:foo]的操作,其中anil。当然,您不能在nil上调用[]


2

我曾经也遇到这个问题。我发现在我的虚拟机中运行的chef版本太老了(0.10.10)。

你需要更新它:

local$ vagrant ssh
vagrant$ gem install chef

然后再试一次。


1
以 root / sudo 运行。作为用户 vagrant,您会收到此错误消息:“您没有写入 /opt/vagrant_ruby/lib/ruby/gems/1.8 目录的权限”。 - Henk

0

我收到了以下错误:

Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.

Error executing action `create` on resource 'mysql_service[default]'

我使用了:

local$ vagrant ssh
vagrant$ gem install chef

再试一次后,一切都完美解决了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接