¿Cómo copiar el archivo de configuración apropiado, con CHEF, en una receta?

¿Cómo copiar el archivo de configuración apropiado, con CHEF, en una receta?

Estoy empezando a aprender cómo recipesdesarrollarme chef. Necesito instalarlo Ganglia Monitoren algunos servidores (o nodesen la literatura de ganglios). Por eso estoy comprobando si la plataforma es ubuntu, centOSy muchas otras, para instalar el paquete correcto.

El problema es que tengo dos .configarchivos diferentes; en realidad, solo hay uno o dos parámetros en este .configarchivo que diferirían entre sí. Necesito ayuda para detectar a qué pertenece datacenterel archivo serverpara poder copiar el .configarchivo correctamente. Hasta ahora, pude desarrollar este script a continuación, pero tengo algunas dudas, que se encuentran en los comentarios del código.

#
# Cookbook Name:: ganglia
# Recipe:: default
#
# Copyright 2013, Valter Henrique.com
#
# All rights reserved - Do Not Redistribute
#
# Installing Ganglia Monitor

case node[:platform]
  when "ubuntu", "debian"
    package "ganglia-monitor"
  when "redhat", "centos", "fedora"
    package "ganglia-gmond"
  end
  user "ganglia"
end

# Setting different .config files
case ipaddress
# DataCenter #1
# how put more options in the when condition ? A when for /^200.222./ or /^200.223./ ?
    when /^200.222./ 
        # putting config file
        cookbook_file "/etc/ganglia/gmond.conf" do
            owner "root"
            group "root"
            mode "0644"
            source "dc1/gmond.conf"
            notifies(:restart, "service[gmond]")
        end
    #DataCenter #2
    when /^216.235./
        cookbook_file "/etc/ganglia/gmond.conf" do
            owner "root"
            group "root"
            mode "0644"
            source "dc2/gmond.conf"
            notifies(:restart, "service[gmond]")
        end
  end

¿Alguna sugerencia sobre cómo desarrollar mejor este código?

Respuesta1

Puede utilizar variables en sourceel atributo del cookbook_filerecurso para evitar la duplicación de código.

dc = case ipaddress
     when /^200\.222\./
       'dc1'
     when /^216\.235\./
       'dc2'
     end

cookbook_file "/etc/ganglia/gmond.conf" do
   owner "root"
   group "root"
   mode "0644"
   source "#{dc}/gmond.conf"
   notifies(:restart, "service[gmond]")
end

información relacionada