6

我正在尝试与 Berkshelf 一起管理食谱。以下是步骤

$ berks init  # and use a custom Vagrant box image
$ vim Berksfile  # and put cookbook 'git'
$ berks install
$ vagrant up

我希望最后一步为 VM 配置git说明书,但是我得到:

$ bin/vagrant up
/Users/pmu/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/hashie-2.0.0/lib/hashie/mash.rb:80:警告:重新定义“object_id”可能会导致严重的问题
[默认] 导入基础框 'Ubuntu-11.04'...
[默认] NAT 网络的匹配 MAC 地址...
[默认] 清除任何以前设置的转发端口...
[默认] 转发端口...
[默认] -- 22 => 2222(适配器 1)
[Berkshelf] 安装食谱...
[Berkshelf] 使用 git (2.3.0)
[Berkshelf] 使用 dmg (1.1.0)
[Berkshelf] 使用 build-essential (1.3.4)
[Berkshelf] 使用 yum (2.1.0)
[Berkshelf] 使用 windows (1.8.4)
[Berkshelf] 使用 chef_handler (1.1.4)
[Berkshelf] 使用 runit (1.0.6)
[默认] 创建共享文件夹元数据...
[默认] 清除任何以前设置的网络接口...
[默认] 根据配置准备网络接口...
[默认] 正在启动虚拟机...
[默认] 等待虚拟机启动。这可能需要几分钟。
[默认] VM 已启动并可以使用!
[默认] 配置和启用网络接口...
[默认] 设置主机名...
[默认] 正在装载共享文件夹...
[默认] -- v-root: /vagrant
[默认] -- v-csc-1: /tmp/vagrant-chef-1/chef-solo-1/cookbooks
[默认] 运行供应商:Vagrant::Provisioners::ChefSolo...
[默认] 生成厨师 JSON 并上传...
[默认] 运行厨师独奏...
标准输入:不是 tty
[2013-02-24T12:51:04+00:00] 信息:***厨师 10.18.2 ***
[2013-02-24T12:51:05+00:00] 信息:从 JSON 将 run_list 设置为 ["recipe[berkshelf-test::default]"]
[2013-02-24T12:51:05+00:00] 信息:运行列表是 [recipe [berkshelf-test::default]]
[2013-02-24T12:51:05+00:00] 信息:运行列表扩展为 [berkshelf-test::default]
[2013-02-24T12:51:05+00:00] 信息:为 ubuntu-11.04 启动 Chef Run
[2013-02-24T12:51:05+00:00] 信息:运行启动处理程序
[2013-02-24T12:51:05+00:00] 信息:启动处理程序完成。
[2013-02-24T12:51:05+00:00] 错误:运行异常处理程序
[2013-02-24T12:51:05+00:00] 错误:异常处理程序完成
[2013-02-24T12:51:05+00:00] 致命:Stacktrace 转储到 /tmp/vagrant-chef-1/chef-stacktrace.out
[2013-02-24T12:51:05+00:00] 致命:Chef::Exceptions::CookbookNotFound:Cookbook berkshelf-test not found。如果您从另一本食谱加载 berkshelf-test,请确保在元数据中配置依赖项
厨师从未成功完成!任何错误都应该在
上面的输出。请修复您的食谱,以便它们正确完成。

Vagrantfile 中的 chef-solo 部分:

  config.vm.provision :chef_solo 做 |chef|
    厨师.json = {
      :mysql => {
        :server_root_password => 'rootpass',
        :server_debian_password => 'debpass',
        :server_repl_password => 'replpass'
      }
    }

    chef.run_list = [
      “配方 [berkshelf-test::default]”
    ]
  结尾
4

2 回答 2

9

在这种情况下,问题出chef.run_list在您的 Vagrantfile 中 - 它指示 Chef 从“berkshelf-test”食谱中加载“默认”配方。如果您使用 git 食谱进行测试,您可能需要"recipe[git::default]"

您可能还需要添加require 'berkshelf/vagrant'到 Vagrantfile 的顶部。有关更多解释,请参阅Berkshelf 主页上的“Vagrant With Berkshelf”部分。

于 2013-02-24T13:14:00.160 回答
2

我收到了这个错误,根本原因是插件如何处理共享文件夹的问题。此问题中的答案修复了它:Vagrant + Chef:配置错误“Chef 需要的共享文件夹在虚拟机上丢失。”

rm .vagrant/machines/default/virtualbox/synced_folders
vagrant reload --provision
于 2015-04-08T21:27:32.167 回答