2013-03-19 122 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