我才刚刚开始使用 Vagrant 和 Chef,但我得到了我认为非常奇怪的错误。
一个简单的虚拟机,没有厨师,一切都很好,但是当我把一些食谱放进去时,它就失败了。
这是我当前从 Vagrantfile 调用的主配方的 default.rb。它主要来自这个博客/教程
r = execute "apt-get update" do
user "root"
command "apt-get update"
action :nothing
end
r.run_action(:run)
include_recipe "php"
include_recipe "apache2"
include_recipe "mysql"
php apache2 和 mysql 配方直接来自 opscode 社区站点。
如果我只是把其中一个食谱放进去,那么它加载得很好。有时两个很好,但如果我把三个都放进去,那么最后一个似乎会导致错误。我已经更改了订单轮次,它始终是导致错误的最后一个。这是错误 - 每次都一样,但在这种情况下 php 是三个中的最后一个,您可以看到它无法安装:
[default] [Fri, 06 Jan 2012 10:01:33 -0800] INFO: Processing package[php5] action install (php::package line 32)
: stdout
[default] [Fri, 06 Jan 2012 10:04:52 -0800] ERROR: package[php5] (php::package line 32) has had an error
: stdout
[default] [Fri, 06 Jan 2012 10:04:52 -0800] ERROR: Running exception handlers
: stdout
[default] [Fri, 06 Jan 2012 10:04:52 -0800] ERROR: Exception handlers complete
: stdout
[default] /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/file_cache.rb:54:in `initialize': stderr
[default] : : stderr
[default] Read-only file system - /tmp/vagrant-chef-1/chef-stacktrace.out: stderr
[default] (: stderr
[default] Errno::EROFS: stderr
[default] )
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/file_cache.rb:54:in `open'
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/file_cache.rb:54:in `store'
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application.rb:133:in `debug_stacktrace'
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application/solo.rb:210:in `run_application'
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application/solo.rb:183:in `loop'
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application/solo.rb:183:in `run_application'
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/../lib/chef/application.rb:66:in `run'
: stderr
[default] from /opt/ruby/lib/ruby/gems/1.8/gems/chef-0.10.2/bin/chef-solo:25
from /opt/ruby/bin/chef-solo:19:in `load'
from /opt/ruby/bin/chef-solo:19
: stderr
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
chef-solo -c /tmp/vagrant-chef-1/solo.rb -j /tmp/vagrant-chef-1/dna.json
The output of the command prior to failing is outputted below:
[no output]
通常,我会破坏 VM 并为每次新尝试做 vagrant up,但有几次我尝试过 vagrant reload 和 vagrant provision 并获得相同的结果。
另外,我不知道这是否正常,但我的 Mac 在进行配置时几乎完全锁定。我通常可以同时运行 2 或 3 个 vmware 虚拟机,而不会觉得它太费劲了,所以让它完全锁定是……奇怪。