2014-09-25 254 views
3

我有一套用於配置web和SQL服務器的食譜,它們目前在我們的持續部署管道中使用。我希望開發人員能夠使用相同的食譜來設置他們的本地開發環境,而無需向廚師服務器註冊每臺開發機器。看起來,廚師零可以用來完成這一點,但我有一些麻煩開始使用它。如何在沒有廚師服務器的情況下運行廚師(廚師獨奏/廚師零)

我有一個廚師的回購文件夾與我的食譜在裏面,我跟着steps in this article

PS C:\Temp\chef-repo> tree . 
Folder PATH listing 
Volume serial number is 3E77-463C 
C:\TEMP\CHEF-REPO 
└───cookbooks 
    └───test 
     └───recipes 
PS C:\Temp\chef-repo> cat .\cookbooks\test\recipes\default.rb 
file "C:\Temp\test.log" do 
    content 'HELLO WORLD' 
end 

但是,當我運行chef-client -z -o test它似乎無法找到我的食譜。

這是錯誤我得到:

Starting Chef Client, version 11.16.0 
[2014-09-25T10:17:37-05:00] WARN: Run List override has been provided. 
[2014-09-25T10:17:37-05:00] WARN: Original Run List: [] 
[2014-09-25T10:17:37-05:00] WARN: Overridden Run List: [recipe[test]] 
resolving cookbooks for run list: ["test"] 

================================================================================ 
Error Resolving Cookbooks for Run List: 
================================================================================ 

Missing Cookbooks: 
------------------ 
No such cookbook: test 

Expanded Run List: 
------------------ 
* test 


Running handlers: 
[2014-09-25T10:17:37-05:00] ERROR: Running exception handlers 
Running handlers complete 
[2014-09-25T10:17:37-05:00] ERROR: Exception handlers complete 
[2014-09-25T10:17:37-05:00] FATAL: Stacktrace dumped to C:/Users/username/.chef/local-mode-cache/cache/chef-stacktrace.out 
Chef Client failed. 0 resources updated in 25.375311 seconds 
[2014-09-25T10:17:38-05:00] FATAL: Net::HTTPServerException: 412 "Precondition Failed " 

我運行從C:\Temp\chef-repo這個命令,這是我的廚師存儲庫文件夾的根目錄。我也試着改變我的%USERPROFILE%\.chef\knife.rb包含以下設置:

cookbook_path [ 
    "C:\Temp\chef-repo\cookbooks" 
] 
local_mode true 
node_name "Chef.example.com" 

我在做什麼錯?

回答

4

到底哪裏出問題了是你的conf指定

cookbook_path [ 
    "C:\Temp\chef-repo\cookbooks" 
] 

將被紅寶石加載knife.rb通過/更換\或雙倍他們\\

刀的時候可能解釋爲C:Tempchef-repocookbooks .rb是一個ruby文件,並被解析爲ruby代碼。

與許多編程語言一樣,\用於逃避下一個字符。

編輯精密:需要複製命令等時

始終使用正斜槓,你會避免錯誤,廚師需要與適當取代他們照顧逃脫反斜線

你WOLD使用的唯一的地方反斜槓將是一個帶有heredoc語法的批處理資源,也許你將不得不逃脫它們(不確定是否需要逃脫)

+0

啊,太簡單了!謝謝。 – 2014-09-26 16:37:23

2

這並沒有完全回答你的問題......我通過讓開發人員使用一個位於「流浪」廚師環境中的流浪vm來解決這個問題,該流程與dev/qa /除少數例外情況外,產品環境也是如此就廚師服務器而言,每個人都有相同的節點名稱,因此必須註冊每臺機器。

+0

感謝您的建議。無論如何要思考,但真的希望有一個無服務器的解決方案,以便廚師食譜可以作爲構建刪除的一部分與其他構建工件一起交付,並僅作爲部署的一部分執行。 – 2014-09-26 14:38:33