5

我的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-cookbooknodejs更正了 Vagrant 文件。

chef.add_recipe "nodejs-cookbook"

我跑了之后

vagrant provision

一切都安装得很好!

4

1 回答 1

0

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

cookbooks/nodejs

重要的是:

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

于 2014-08-22T06:35:39.337 回答