5

我正在尝试使用 Chef-solo、Berkshelf 和 vagrant-berkshelf 插件来配置 Vagrant 机器。但是,配置失败并出现以下错误:

Berkshelf::CookbookNotFound: Cookbook <cookbook name> not found in any of the default locations

berks install成功将所有内容安装到~/.berkshelf/cookbooks/,但永远不会将食谱复制到~./berkshelf/default/vagrant/berkshelf-20131017-8441-pqghfq-defaultBerkshelf 报告它正在更新的位置,就在跟踪之前:

[Berkshelf] Updating Vagrant's berkshelf: '/Users/<me>/.berkshelf/default/vagrant/berkshelf-20131017-8441-pqghfq-default'

所以,我想我的问题是:

  1. 谁负责将食谱复制到特定的 Vagrant 文件夹(Berkshelf、vagrant-berkshelf 插件或 Vagrant)?今晚我浏览了每个 repo 的来源,但无法确定应该在哪里发生这种情况。
  2. 我可以提供更多信息来帮助回答问题 #1 吗?:)

环境细节:

Mac OSX 10.8 红宝石 1.9.3

vagrant -v: 1.3.5

berks -v : Berkshelf (2.0.10)

$: vagrant plugin list

buff-config (0.2.0)

mini_portile (0.5.1)

nugrant (1.1.0)

vagrant-berkshelf (1.3.4)

vagrant-cachier (0.1.0)

vagrant-omnibus (1.1.1)

vagrant-rackspace (0.1.3)

4

2 回答 2

7

谁负责将食谱复制到特定的 Vagrant 文件夹(Berkshelf、vagrant-berkshelf 插件或 Vagrant)?

一点来自 A 列,一点来自 B 列,两者都从 C 列得到一些帮助。

Vagrant chef-solo provisioner能够将说明书(+角色/数据包/等)从主机复制到客户机。它通过在主机上创建一个目录然后将该目录挂载到 VM 中来实现这一点。

vagrant-berkshelf 插件首先在主机上创建一个目录,然后使用 vanilla Berkshelf 功能将所有相关的说明书导出到该目录。

最后,vagrant-berkshelf 插件告诉 Chef-Solo 供应商使用它创建的目录作为它应该复制到来宾的食谱的源。

于 2013-10-18T13:40:40.103 回答
3

我在尝试提供一个流浪盒时遇到了类似的问题。我通过以下方式解决了我的问题。

在 Berksfile 中,添加以下内容

'cookbook-name', path: "<path to cookbook>"

通常是“食谱/食谱名称”

Berksfile 然后能够找到食谱并将其复制到 berksfile 的位置,这是 chef-solo 查找食谱的位置。我希望它有所帮助。

于 2014-03-14T15:34:35.397 回答