
Ich fange an zu lernen, wie man recipes
sich entwickelt. Ich muss es auf einigen Servern (oder in der Ganglia-Literatur) chef
installieren . Deshalb überprüfe ich, ob die Plattform ist , und viele andere, um das richtige Paket zu installieren.Ganglia Monitor
nodes
ubuntu
centOS
Das Problem ist, dass ich zwei verschiedene Dateien habe .config
. Tatsächlich gibt es in dieser .config
Datei nur ein oder zwei Parameter, die sich voneinander unterscheiden. Ich brauche Hilfe, um herauszufinden, wohin datacenter
die Datei server
gehört, damit ich die richtige .config
Datei kopieren kann. Bisher konnte ich das folgende Skript entwickeln, aber ich habe einige Zweifel, die in den Kommentaren im Code stehen.
#
# 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
Irgendwelche Vorschläge, wie ich diesen Code besser entwickeln kann?
Antwort1
Sie können Variablen im source
Attribute für cookbook_file
Ressourcen verwenden, um Code-Duplikation zu vermeiden.
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