
我有 3 種不同的方法來安裝所述軟體包,我最喜歡選項 #1,但我想看看是否有理由使用選項 #2 或 3 或任何其他選項? (我這個問題的目標是獲得不同方法的回饋;如果可能的話,不要在編譯時安裝......在這種情況下)
第一。
p = package "snmp" do
package_name value_for_platform(
[ "centos", "redhat", "suse" ] => { "default" => "net-snmp" },
"default" => "snmpd"
)
action :install
end
第二。
packages = case node[:platform]
when "centos","redhat","fedora"
%w{net-snmp}
else
%w{snmpd}
end
packages.each do |pkg|
package pkg
end
第三。
package "snmpd" do
action :install
only_if do platform?("ubuntu", "debian") end
end
答案1
我通常在我自己的食譜中不支援太多發行版,但是當閱讀其他食譜(例如來自Opscode)時,我通常欣賞與上面的第二個食譜類似的方法,主要區別在於我傾向於直接顯式調用資源,而不是編譯一個陣列。
case node[:platform]
when "centos","redhat","fedora"
package 'net-snmp'
else
package 'snmpd'
end
然而,每種情況都有許多優點和缺點,這取決於你到底想表達什麼。