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と、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.

解決済み: クックブック フォルダーで、Vagrant ファイルに名前を変更nodejs-cookbookして修正しました。nodejs

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 に答える