Servermanagement with puppet – Part 4

Puppet facts

Bemerkung: Dieser Artikel basiert auf Part 1 – Part 3 meiner Puppet Artikel. Bitte diese zuerst lesen !

“Factor” erlaubt es einem Informationen und Eigenschaften der Nodes zusammen mit der Puppetkonfiguration zu verwenden.
Facts sind als Variablen in Puppet verfügbar. Wenn man den “facter” Befehl ausführt bekommt man eine Liste mit allen Facts und ihren Werten:

sebastian@pc1:~$ facter
architecture => i386
domain => domain.local
facterversion => 1.5.1
fqdn => pc1.domain.local
hardwaremodel => i686
hostname => pc1
interfaces => eth0
ipaddress => 192.168.0.2
ipaddress_eth0 => 192.168.0.2
kernel => Linux
kernelrelease => 2.6.28-11-server
kernelversion => 2.6.28
lsbdistcodename => jaunty
lsbdistdescription => Ubuntu 9.04
lsbdistid => Ubuntu
lsbdistrelease => 9.04
macaddress => 00:0c:29:7a:37:37
macaddress_eth0 => 00:0c:29:7a:37:37
memoryfree => 417.25 MB
memorysize => 497.37 MB
netmask => 255.255.255.0
netmask_eth0 => 255.255.255.0
operatingsystem => Ubuntu
operatingsystemrelease => 9.04
processor0 => Intel(R) Xeon(TM) CPU 2.80GHz
processorcount => 1
ps => ps -ef
puppetversion => 0.24.5
rubysitedir => /usr/local/lib/site_ruby/1.8
rubyversion => 1.8.7
swapfree => 883.99 MB
swapsize => 883.99 MB
virtual => vmware

Wie man sieht ist ‘pc1′ eine 32-Bit virtuelle Maschine mit Ubuntu 9.04. Nun wollen wir unser “baseclass template” so erweitern, dass die vmware-tools automatisch auf allen virtuellen Maschinen installiert werden:

Bearbeiten von “/etc/puppet/manifests/templates.pp”:

#
# templates.pp
#

class baseclass {
include user::admins
include munin::client
include ntp

if $virtual == "vmware" {
include vmware::client
}
case $virtual {
vmware: { include vmware::client }
}

}

vmware Modul anlegen:

mkdir -p /etc/puppet/modules/vmware/manifests/

“/etc/puppet/modules/vmware/manifests/init.pp” Datei anlegen:

#
# init.pp
#

class vmware{

}

“/etc/puppet/modules/vmware/manifests/client.pp” Datei anlegen:

#
# client.pp
#

class vmware::client inherits vmware{

package { open-vm-tools: ensure => installed }

}

Bemerkung: Dies ist nur ein einfaches Beispiel. Sollte man mehr als ein Betriebssystem in seinem Setup haben benötigt man die “operatingsystem” Variable als zweite Bedingung.
http://reductivelabs.com/trac/puppet/wiki/LanguageTutorial#conditionals

Custom Facts

Puppet gibt einem auch die Möglichkeit eigene Facts zu definieren.

http://reductivelabs.com/trac/puppet/wiki/AddingFacts

Leave a comment

0 Comments.

Leave a Reply


[ Ctrl + Enter ]