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.

0 Comments.