2014-03-03 46 views
5

我想測試一個食譜取決於其他三個本地食譜。我的目錄結構是這樣的:測試廚房不會參考當地的食譜

/cookbooks/ 
    cookbook_test/ 
    recipes 
    templates 
    metadata.rb 
    cookbook_dep1/ 
    cookbook_dep2/ 
    cookbook_dep3/ 

的食譜,我試圖測試(cookbook_test)我的元數據文件只是有一個像提到的其他三種食譜依賴:運行時kitchen converge default-ubuntu-1204

depends cookbook_dep1 
depends cookbook_dep2 
depends cookbook_dep3 

然而我得到以下內容:

[2014-03-03T18:05:13+00:00] ERROR: Cookbook cookbook_devp1 not found. If you're loading cookbook_devp1 from another cookbook, make sure you configure the dependency in your metadata  
[2014-03-03T18:05:13+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)  

我唯一能在網上找到的是我應該使用berkshelf。是否沒有其他方式僅僅使用測試廚房來參考本地食譜?

回答

5

您必須將相關性放入名爲「cookbooks」(或「site-cookbooks」)的目錄中.kitchen.yml所在的同一目錄中。或者使用Berkshelf或圖書管理員廚師。

你也可以嘗試將父目錄符號鏈接到「./cookbooks」,但不確定這是否會導致某些命令的無限遞歸。

+0

我看不出如何工作。根據opscode,主存儲庫應該充當所有食譜,角色,數據庫和環境代碼的容器。 https://github.com/opscode/chef-repo更好地解釋了這一點。 我所有的食譜都包含在一個存儲庫中,該存儲庫遵循opscode定義的結構。 您建議將.kitchen.yml文件放入存儲庫的底部,併爲我需要運行的每種類型的融合(=使用它自己的運行列表添加kitchen.yml套件)編寫不同的廚房套件? – keftes

+0

幾年來的趨勢是將烹飪書作爲單獨的軟件項目和知識庫進行處理。即使Chef(之前稱爲Opscode)很早以前就已經將其單獨的[cookbooks repo](https://github.com/opscode/cookbooks)分爲[單獨的](https://github.com/opscode-cookbooks)。如今,「Chef repo」只包含角色等等。 YMMV,但測試廚房的總體思路是一次幫助* one * cookbook進行集成測試,並使用一些依賴管理器來獲取其他食譜。 – tmatilai

+0

看起來我們可能不得不重構我們的項目結構。謝謝。 – keftes