Vagrant,为Node.js设置机器 – 厨师失败

我的Vagrantfile

 Vagrant::Config.run do |config| config.vm.box = "lucid32" config.ssh.forward_agent = true config.vm.forward_port 3000, 3000 # allow for symlinks in the app folder config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/app", "1"] config.vm.customize ["modifyvm", :id, "--memory", 512, "--cpus", 1] config.vm.provision :chef_solo do |chef| chef.cookbooks_path = "cookbooks" chef.add_recipe "apt" chef.add_recipe "build-essential" chef.add_recipe "nodejs-cookbook" chef.add_recipe "chef-hosts" chef.add_recipe "git" chef.json = { "nodejs" => { "version" => "0.8.12", "install_method" => "source", "npm" => "1.1.62" }, "host_aliases" => [{ "name" => "awesomeapp", "ip" => "127.0.0.1" }] } end end 

当我运行vagrant reload我得到了厨师的例外:

 [2012-11-25T07:58:23+01:00] ERROR: Running exception handlers [2012-11-25T07:58:23+01:00] ERROR: Exception handlers complete [2012-11-25T07:58:24+01:00] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out [2012-11-25T07:58:24+01:00] FATAL: Chef::Exceptions::CookbookNotFound: Cookbook nodejs not found. If you're loading nodejs from another cookbook, make sure you configure the dependency in your metadata Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete. 

已解决 :在食谱文件夹中,我将nodejs-cookbook重命名为nodejs并更正了stream浪文件。

 chef.add_recipe "nodejs-cookbook" 

跑完之后

 vagrant provision 

一切都安装好了!

add_recipe应该是配方的名称。 例如文件结构:

cookbooks/nodejs

而且重要的是:

cookbooks/nodejs/metadata.rb应该包含: name "nodejs"