Von Puppen und Marionetten
Konfigurationsmanagement mit Puppet
Namen und andere Fakten
Wer seine Hostnamen bereits fein säuberlich im DNS pflegt, erspart sich zeitraubendes Troubleshooting und manuelle Konfiguration. Wer das nicht will oder kann, sollte sicherstellen, dass seine jeweils lokale Konfiguration dem Beispiel in Listing 1 entspricht. Abgesehen von einer funktionierenden Namensauflösung benötigt Puppet ansonsten lediglich Ruby sowie die ebenfalls vom Puppet-Projekt gepflegte Bibliothek Facter. Auch diese ist in gängigen Linux-Distributionen bereits über die jeweiligen Repositorien verfügbar.
Facter ist eine eigenständige und plattformübergreifende Ruby-Bibliothek, die eine ganze Reihe nützlicher Informationen über das zugrundeliegende System liefern kann. Listing 2 zeigt einen gekürzten Beispiel-Aufruf, mit entsprechenden Parametern lässt sich dieser auch auf einzelne Werte beschränken. Nicht gezeigt, aber ebenfalls per Default verfügbar sind übrigens die SSH-Schlüssel des jeweiligen Systems. Sollten diese Informationen nicht ausreichen und auch online keine passenden Module auffindbar sein, dann kann man natürlich jederzeit selbst eigene Facts entwickeln.
Wer Wert auf IPv6 legt, wird übrigens enttäuscht: derlei Fakten sind leider noch nicht zu sehen, es wird aber bereits daran gearbeitet.
Listing 1: Saubere Namensauflösung ohne DNS
## Auf dem Server: # hostname server # hostname --fqdn server.example.com # cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 server.example.com server puppet ## Auf den Clients: # hostname client1 # hostname --fqdn client1.example.com # cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 client1.example.com client1 192.168.0.1 server.example.com server puppet
Listing 2: facter liefert Fakten
# facter architecture => amd64 domain => example.com facterversion => 1.5.1 fqdn => srv10.example.com hardwareisa => unknown hardwaremodel => x86_64 hostname => srv10 id => root interfaces => eth1 ipaddress => 192.168.14.101 ipaddress_eth1 => 192.168.14.101 kernel => Linux kernelrelease => 2.6.26-2-amd64 kernelversion => 2.6.26 lsbdistcodename => lenny lsbdistdescription => Debian GNU/Linux 5.0.6 (lenny) lsbdistid => Debian lsbdistrelease => 5.0.6 lsbmajdistrelease => 5 ...