我正在尝试用PHP构建一个Ubuntu12.04.2精确盒。环顾四周,我发现了一个我想要作为起点使用的存储库,尝试一切都很好,但是我需要用一个64位的库来更改基框。
所以,我使用维维创建了一个新的盒子
veewee vbox define 'web-php54-precise' 'ubuntu-12.04.2-server-amd64'
veewee vbox build 'web-php54-precise'
veewee vbox export 'web-php54-precise'克隆源存储库:
git clone --recursive git://github.com/simshaun/symfony-vagrant.git
cd symfony-vagrant/vagrant我更改了Vagrantfile中的行,以便使用我的新框:
config.vm.box = "web-php54-precise"
config.vm.box_url = ""但是运行vagrant up时,在主厨-solo部署过程中会出现一个致命的错误。我试图改变require_recipe中的include_recipe,但没有成功。我认为提供程序不识别文件networking_basic/attributes/default.rb,因此node['networking']['packages']结果未定义。
请注意,将相同的菜谱直接添加到Vagrantfile中效果很好:
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
# chef.add_recipe "networking_basic" <= this works
chef.add_recipe "vagrant_main"
# cut #
end我是不是错过了用veewee配置基本框的东西?一些想法?谢谢。
这是日志:
vagrant git:(master) ✗ vagrant up
[default] Importing base box 'web-php54-precise'...
[default] Matching MAC address for NAT networking...
[default] Clearing any previously set forwarded ports...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Available bridged network interfaces:
1) en0: Ethernet
2) en1: Wi-Fi (AirPort)
3) p2p0
What interface should the network bridge to? 1
[default] Preparing network interfaces based on configuration...
[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] -- project1: /home/vagrant/web-app
[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
[2013-02-22T13:10:02+00:00] INFO: *** Chef 11.4.0 ***
[2013-02-22T13:10:03+00:00] INFO: Setting the run_list to ["recipe[vagrant_main]"] from JSON
[2013-02-22T13:10:03+00:00] INFO: Run List is [recipe[vagrant_main]]
[2013-02-22T13:10:03+00:00] INFO: Run List expands to [vagrant_main]
[2013-02-22T13:10:03+00:00] INFO: Starting Chef Run for web-php54-precise
[2013-02-22T13:10:03+00:00] INFO: Running start handlers
[2013-02-22T13:10:03+00:00] INFO: Start handlers complete.
[2013-02-22T13:10:03+00:00] WARN: require_recipe is deprecated and will be removed in a future release, please use include_recipe
[2013-02-22T13:10:03+00:00] WARN: require_recipe is deprecated and will be removed in a future release, please use include_recipe
================================================================================
Recipe Compile Error in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/vagrant_main/recipes/default.rb
================================================================================
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/networking_basic/recipes/default.rb:7:in `from_file'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/vagrant_main/recipes/default.rb:10:in `from_file'
Relevant File Content:
----------------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/networking_basic/recipes/default.rb:
1: #
2: # Cookbook Name:: networking_basic
3: # Recipe:: default
4: #
5: #
6:
7>> node['networking']['packages'].each do |netpkg|
8: package netpkg
9: end
10:
[2013-02-22T13:10:03+00:00] ERROR: Running exception handlers
[2013-02-22T13:10:03+00:00] ERROR: Exception handlers complete
[2013-02-22T13:10:03+00:00] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out
[2013-02-22T13:10:03+00:00] 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.发布于 2013-02-22 15:43:35
你的假设是正确的,节点‘网络’是零,所以它不可能有‘包’子属性。
根本的问题是,vagrant_main食谱正在执行"include_recipe“操作,但是定义节点‘网络’的networking_basic食谱的属性文件还没有加载。
在主厨第10版和更早的版本中,主厨没有按确定的顺序加载食谱组件。一般假设是运行列表顺序,因为这是加载菜谱的顺序。所以现在主厨在第11版的时候就这么做了。
但是,在本例中,运行列表没有networking_basic食谱,vagrant_main包括它。为了确保组件被加载,需要依赖于我们正在使用的食谱。要解决此问题,请创建一个包含以下内容的迷航器_main/metadata.rb文件:
name "vagrant_main"
depends "apache2"
depends "apt"
depends "mysql"
depends "networking_basic"
depends "php"
depends "xdebug"https://stackoverflow.com/questions/15025610
复制相似问题