用于Node.js的Vagrant,设置机器 - Chef失败

Ale*_*sky 5 node.js chef-infra vagrant

我的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
Run Code Online (Sandbox Code Playgroud)

当我跑步时,vagrant reload我从Chef获得以下异常:

[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.
Run Code Online (Sandbox Code Playgroud)

解决:在食谱文件夹我改名nodejs-cookbooknodejs和纠正放浪文件.

chef.add_recipe "nodejs-cookbook"
Run Code Online (Sandbox Code Playgroud)

我跑了之后

vagrant provision
Run Code Online (Sandbox Code Playgroud)

一切都安装得很好!

Jer*_*emy 0

add_recipe 应该是菜谱的名称。例如文件结构:

cookbooks/nodejs

重要的是:

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