
Estoy empezando a aprender cómo recipes
desarrollarme chef
. Necesito instalarlo Ganglia Monitor
en algunos servidores (o nodes
en la literatura de ganglios). Por eso estoy comprobando si la plataforma es ubuntu
, centOS
y muchas otras, para instalar el paquete correcto.
El problema es que tengo dos .config
archivos diferentes; en realidad, solo hay uno o dos parámetros en este .config
archivo que diferirían entre sí. Necesito ayuda para detectar a qué pertenece datacenter
el archivo server
para poder copiar el .config
archivo 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 source
el atributo del cookbook_file
recurso 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