
Tenho 3 maneiras diferentes de instalar o referido pacote e prefiro mais a opção 1, mas queria ver se havia um motivo para usar a opção 2 ou 3 ou alguma outra opção. (Meu objetivo com esta pergunta é obter feedback sobre diferentes maneiras de fazer isso; e não instalar em tempo de compilação, se possível... neste caso)
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
Responder1
Normalmente não suporto muitas distros em minhas próprias receitas, mas ao ler outras receitas (como do Opscode), geralmente aprecio abordagens semelhantes à segunda, acima, a principal diferença é que eu tenderia a invocar explicitamente o recurso diretamente , em vez de compilar uma matriz.
case node[:platform]
when "centos","redhat","fedora"
package 'net-snmp'
else
package 'snmpd'
end
No entanto, há vários prós e contras para cada caso, dependendo exatamente do que você está tentando expressar.