2013-03-19 120 views
6

Hy 我试图在亚马逊EC2 Linux AMI上与主厨Solo合作运行MongoDB食谱。 我已经安装了Omnibus,在.rb文件中设置食谱路径,并在.json文件中设置运行列表。我将mongodb recipe zip的内容从github复制到了cookbook文件夹,并运行了chef-solo命令。 结果如下:厨师独奏错误:食谱未找到

致命错误:厨师::例外:: CookbookNotFound:食谱未找到。如果你加载容易从其他菜谱,请确保您配置元数据

依赖我很新的Linux也一样,我究竟做错了什么?

回答

7

该错误是相当具有描述性的。您的运行列表中可能有depends aptmetadata.rb文件中的食谱。

幸运的是,这很容易解决 - 只要在您的cookbooks文件夹中的apt食谱(https://github.com/opscode-cookbooks/apt),并把它在你运行列表(或角色,当你到那个水平)。

+0

它在我的本地Ubuntu上运行完美,但它仍然无法在Amazon EC2上运行。我猜,因为它不适合。 其中一个错误是: 错误:执行[apt-get-update](apt :: default第22行)出错:没有这样的文件或目录 - apt-get update; ignore_failure已设置,继续 猜测这没什么大不了的,因为它会继续。其中一个是: *软件包[update-notifier-common]动作安装 *没有指定版本,没有候选版本可用于update-notifier-common 我已经为apt Cookbook制作了自述文件,但它没有不要说需要指定某些东西。 – Csapi007 2013-03-20 16:08:01

+0

看起来EC2上没有apt,你不应该把它放在你的运行列表中(如果mongodb也需要它,EC2上也只有食谱) – cmur2 2013-03-20 17:16:11

+0

是的,我尝试安装MongoDB配方,错误我得到的消息: - * package [mongo-10gen-server]动作安装 *没有指定版本,没有可用于mongo-10gen-server的候选版本 - 这很奇怪,因为在运行runlist中的默认配方时10gen之一。这与我以前的问题有什么关系,还是完全不同的东西? :S – Csapi007 2013-03-20 18:07:41

10

如果您使用的是chef-solo,请确保您的solo.rb指向正确的食谱位置。我已经将它设置为:

cookbook_path "/root/chef-repo/cookbooks" 

代替:

cookbook_path "/home/ubuntu/chef-repo/cookbooks" 
2

Karishma是正确in her answer,但我想扩大它,使通过跳过绝对路径更具活力。下面是我的实现:

root = File.absolute_path(File.dirname(__FILE__)) 
file_cache_path root 
cookbook_path root + '/cookbooks' 

它设置的路径是,无论你放在solo.rb文件。

2

这发生在我身上,因为我忘了先跑librarian-chef install