2016-03-07 90 views
4

我使用execute資源或bash資源。廚師 - 執行vs bash資源

都得到相同的結果:

bash 'Execute my script' do 
    user 'root' 
    cwd '/mydir' 
    code <<-EOH 
    ./myscript.sh 
    EOH 
end 

execute 'Execute my script' do 
    user 'root' 
    cwd  '/mydir' 
    command './myscript.sh' 
end 

我看到的唯一區別是,bash實際創建其中code是寫一個shell腳本(名爲/tmp/chef-script#{date}{#id})。

executebash資源之間執行shell腳本的最佳做法是什麼?

回答

6

對於單個腳本,請使用executebash資源用於在配方代碼中內嵌腳本內容。

0

在bash中&執行塊我們需要編寫代碼來捕獲錯誤,就像添加多個命令一樣&廚師將獲取最後一個命令的狀態。 爲了使它更清楚 - 當Bash/execute塊只有一個命令廚師發現問題時,如果下一個命令成功,那麼它將取最後一個命令狀態。

bash 'Execute my script' do 
    user 'root' 
    cwd '/mydir' 
    code <<-EOH 
    ./myscript.sh 
    ls srini ##This will fail 
    ls ## this will be successful 
    EOH 
end 

execute 'Execute my script' do 
    user 'root' 
    cwd  '/mydir' 
    command './myscript.sh' 
    command 'ls srini' #will fail 
    command 'ls' # will be successful 
end