2014-10-03 44 views
0

我使用廚師客戶端(11.12.8)與Windows節點(Win Server 2012)。Opscode CHEF(11.12.8) - chef-client無法添加env。變種。到路徑

我安裝了perforce客戶端。爲了執行我的食譜,我啓動了一個CMD廚師客戶端。

在PATH中設置Perforce安裝到p4.exe的相應路徑。 但是,在我啓動chef-client命令的cmd中,PATH未更新。 因此,在我的食譜中,當我嘗試在windows_batch資源中執行命令'p4 sync'時失敗。

解決方案我嘗試,

1/
設置PATH =%PATH%; C:\ Program Files文件\ Perforce公司
在windows_batch資源 推出P4同步命令。
不適用。

2/
將上一條命令放入批處理中。
不適用。

3/
$ ENV:PATH = $ ENV:路徑+ 「; C:\ Program Files文件\ Perforce的」
在powershell_script資源 推出P4同步命令。
不適用。

有沒有辦法做到這一點?
而不是使用:
C:\ Program Files文件\ Perforce公司\ p4.exe

THANKS


UPDATE_01

的代碼,但我不認爲這將有助於這麼多...

安裝perforceClient

windows_package 'Perforce Client' do 
    source 'PerforceClient_2014.1\\p4vinst64.exe' 
    options '/s /v"/qn"' 
    installer_type :custom 
    action :install 
end 

... 

windows_batch 'Perforce sync' do 
    code <<-EOH 
    p4 sync //APP/ 
    EOH 
end 

這裏的p4命令是從我啓動chef-client命令的cmd中不知道的。 我會看看批處理資源。 感謝

+0

請顯示您的配方代碼和廚師跑的輸出。也就是說從11.6開始,[批處理資源](http://docs.getchef.com/resource_batch.html)被推薦,而不是windows_batch。如果沒有運行日誌(爲了完整性用'-l debug'),沒有人不能幫你。執行你(也許?)使用接受和環境屬性,這是你應該給更新的環境,但沒有你的代碼我不能作出真正的答案。 – Tensibai 2014-10-03 11:42:32

回答

0
windows_package 'Perforce Client' do 
    source 'PerforceClient_2014.1\\p4vinst64.exe' 
    options '/s /v"/qn"' 
    installer_type :custom 
    action :install 
    notifies :run, "execute[PerforceSync]", :immediately 
end 

execute 'PerforceSync' do 
action :nothing 
command 'p4 sync //APP/' 
environment { "PATH": "#{ENV['PATH']};C:\Program Files\Perforce" } 
end 

無需使用windows_batch資源來執行一個命令。

我在執行資源中沒有使用任何操作,以避免在每次運行時執行它,只有在安裝軟件包時才通知它運行。

windows_batchbatch資源存在轉置現有的批次。 我相信你不會寫一個.bat或.cmd文件來運行一個命令。

execute資源文檔HERE

旁註:你應該考慮增加一個後衛任何執行或批量資源,如果它沒有被其他資源驅動,看到This爲出發點。

+0

是的, 謝謝tensibai,這就是我需要做的。 我對執行資源並不在意;)我是廚師的新手。 我記住在食譜中使用警衛。 – 2014-10-03 14:21:15

+0

@yosserbf你看,給代碼幫助:) – Tensibai 2014-10-03 14:22:04