我有3种不同的方式来安装这个软件包,我更喜欢#1选项,但我想看看是否有理由使用选项#2或3或其他选项? (我这个问题的目标是获得不同方式的反馈,如果可能的话,不要在编译时安装…在这种情况下)
1。
p = package "snmp" do package_name value_for_platform( [ "centos", "redhat", "suse" ] => { "default" => "net-snmp" }, "default" => "snmpd" ) action :install end
第2位。
packages = case node[:platform] when "centos","redhat","fedora" %w{net-snmp} else %w{snmpd} end packages.each do |pkg| package pkg end
3。
package "snmpd" do action :install only_if do platform?("ubuntu", "debian") end end
我通常不会在自己的食谱中支持太多的发行版,但是在阅读其他食谱时(例如从Opscode),我通常会喜欢类似于上述第二种方法的方法,主要区别是我倾向于直接显式调用资源,而不是编译一个数组。
case node[:platform] when "centos","redhat","fedora" package 'net-snmp' else package 'snmpd' end
但是,每种情况都有很多优点和缺点,具体取决于您想要expression的内容。