Qual é o modo mais 'elegante' de instalar pacotes com o Chef?

4

Eu tenho 3 maneiras diferentes de instalar o pacote, e eu prefiro a opção # 1 mais, mas eu queria ver se havia uma razão para usar a opção 2 ou 3 ou alguma outra opção? (Meu objetivo desta pergunta é obter feedback de 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
    
por Scott M Likens 16.07.2009 / 06:29

1 resposta

6

Eu normalmente não suporto muitas distros em minhas próprias receitas, mas ao ler outras receitas (como no Opscode) eu geralmente aprecio abordagens semelhantes à sua 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, existem vários prós e contras para cada caso, dependendo do que exatamente você está tentando expressar.

    
por 13.08.2009 / 02:16