2013-06-05 73 views
0

如何在循環中編寫此代碼。 我對ruby非常陌生,所以很苦惱。廚師模板並在循環中使用它

我想創建一個響應文件,然後更新IHS(IBM HTTP Server)的補丁包

#Install the fix pack for IHS 

template "/tmp/ihs-fixpack-response1.txt" do 
    source "ihs-fixpack-response.erb" 
    mode 0755 
    owner "root" 
    group "root" 
    variables({ 
    :fixpack => "7.0.0-WS-IHS-LinuxX32-FP0000019.pak", 
    :product_path => node[:websphere][:ihs][:ihs_path] 
    }) 
end 

# code for installing Fixpack 
bash "ihs/was-updateinstaller" do 
    user "root" 
    code %(#{node[:websphere][:ihs][:ihs_updi_path]}/update.sh -options "/tmp/ihs-fixpack-response1.txt" -silent) 

end 

#Install the fix pack for the plugin. 
template "/tmp/ihs-fixpack-response2.txt" do 
    source "ihs-fixpack-response.erb" 
    mode 0755 
    owner "root" 
    group "root" 
    variables({ 
    :fixpack => "7.0.0-WS-PLG-LinuxX32-FP0000019.pak", 
    :product_path => node[:websphere][:ihs][:ihs_wasPluginPath] 
    }) 
end 

# code for installing Fixpack 
bash "ihs/was-updateinstaller" do 
    user "root" 
    code %(#{node[:websphere][:ihs][:ihs_updi_path]}/update.sh -options "/tmp/ihs-fixpack-response2.txt" -silent) 
end 

回答

3

我相信這會做你想要什麼:

[ [ "7.0.0-WS-IHS-LinuxX32-FP0000019.pak", node[:websphere][:ihs][:ihs_path] ], 
    [ "7.0.0-WS-PLG-LinuxX32-FP0000019.pak", node[:websphere][:ihs][:ihs_wasPluginPath] ] 
].zip(1..2).each do |vars, i| 
    template "/tmp/ihs-fixpack-response#{i}.txt" do 
    source "ihs-fixpack-response.erb" 
    mode 0755 
    owner "root" 
    group "root" 
    variables({ 
     :fixpack => vars.first, 
     :product_path => vars.last 
    }) 
    end 

    bash "ihs/was-updateinstaller" do 
    user "root" 
    code %(#{node[:websphere][:ihs][:ihs_updi_path]}/update.sh -options "/tmp/ihs-fixpack-response#{i}.txt" -silent) 
    end 
end 
+0

三江源答案。它幾乎是我想要的。 我試圖獲得新的值:fixpack和:product_path每次 如果它只是一個單一的值,它不是一個問題,因爲我已經看到相同的expamples。問題是如何創建一個多維數組。在我的情況下,我必須在運行時用兩個不同的值填充模板。 或者有沒有比循環更好的方法。 我可以使用單個模板「/tmp/ihs-fixpack-response.txt」 再次感謝您的幫助cbl – Saurav

+0

我已經編輯了考慮':fixpack'更改的答案。如果這還不是你所需要的,那就試着具體講一下你想要的結果。 :) – cassianoleal

+0

非常感謝,這正是我想要的。 – Saurav