
Tengo 3 formas diferentes de instalar dicho paquete y prefiero la opción n.° 1, pero quería ver si había alguna razón para usar la opción n.° 2 o 3 o alguna otra opción. (Mi objetivo con esta pregunta es obtener comentarios sobre diferentes formas de hacer esto; y no instalar en tiempo de compilación si es posible... en este caso)
1er.
p = package "snmp" do
package_name value_for_platform(
[ "centos", "redhat", "suse" ] => { "default" => "net-snmp" },
"default" => "snmpd"
)
action :install
end
2do.
packages = case node[:platform]
when "centos","redhat","fedora"
%w{net-snmp}
else
%w{snmpd}
end
packages.each do |pkg|
package pkg
end
3er.
package "snmpd" do
action :install
only_if do platform?("ubuntu", "debian") end
end
Respuesta1
Por lo general, no admito demasiadas distribuciones en mis propias recetas, pero cuando leo otras recetas (como las de Opscode), generalmente aprecio enfoques similares a la segunda, arriba, la principal diferencia es que tendería a invocar explícitamente el recurso directamente. , en lugar de compilar una matriz.
case node[:platform]
when "centos","redhat","fedora"
package 'net-snmp'
else
package 'snmpd'
end
Sin embargo, existen una serie de pros y contras para cada caso, dependiendo de lo que estés tratando de expresar exactamente.