2014-04-29 21 views
13

我有我的廚師cookbooks存儲在廚師/ cookbooks /文件夾。當運行kitchen converge我仍然得到通知如何在.kitchen.yml文件中指定cookbook路徑?

Berksfile, Cheffile, cookbooks/, or metadata.rb not found so Chef will run with effectively no cookbooks. Is this intended? 

我試過很多選項,例如:

suites: 
    - name: default 
    run_list: recipe[git] 
    cookbook_path: "chef/cookbooks" 

,但我無法找到合適的解決方案。如何指定食譜和角色的路徑?

+0

你在運行test-kitchen文件夾一本食譜或在你的回購包含多個食譜?應該是第一個.. – StephenKing

+0

這是後者。我的目標是一起測試所有的食譜。我的意思是確保節點配置良好,一切正常並運行。我不需要測試一本食譜(因爲我使用社區的食譜)。這是一個錯誤的方法? – tsusanka

+1

是的,據我所知,t-k是用於測試一個特定的食譜(可以依靠其他人)。 – StephenKing

回答

2

您需要將其設置在供應方部分:

provisioner: 
    name: chef_zero 
    require_chef_omnibus: 11.12.2 
    cookbook_path: whatever/path/to/cookbooks 
+0

仍然無法得到它的工作,你有一分鐘​​快速瀏覽我的bash日誌嗎? https://gist.github.com/tsusanka/8cdf9c7828a85cd94889認爲這些文件甚至沒有複製到操作系統 – tsusanka

+0

它看起來像你已經在使用Berkshelf - 爲什麼使用cookbook_path呢? – sethvargo

+1

Thx回覆。我決定通過Berkshelf下載食譜。我想這是不必要的,但無論如何,即使我使用Berkshelf,我仍然有我自己的非社區食譜,位於「廚師/食譜」,我需要添加。 – tsusanka

0

建立一個頂級Berksfile,你必須.kitchen.yml包含您正在測試的食譜參考。每個食譜都會聲明他們的依賴關係,並且頂層的berks install將確保你安裝了所有東西。

(我剛剛碰到同樣的問題,從chefdk 0.4開始)。

12

你要放的路徑在berksfile,這將可能最終看起來像這樣..

source 'https://supermarket.chef.io' 
cookbook 'cookbookname', path: 'relative/or/absolute/path/to/cookbook/directory' 

的berksfile也被廚師當你部署代碼,以便它會幫助您在你的機器上的相對文件結構與你的主服務器上的相同(即所有的食譜共享一個目錄,所以你的berksfile可以使用路徑'../cookbookname')

+0

這解決了我的問題。我在另一個項目中從我的食譜以外的目錄運行.kitchen.yml,參考指向食譜內的值。 – comjf

+1

應該有一個**冒號(:)**下面的路徑關鍵字。 – 1in9ui5t

+0

沒問題..用冒號包括編輯答案。 – JackChance

相關問題