Das erste Meeting mit dem Kunden ist gerade vorbei, und er sieht zufrieden aus, aber doch nicht völlig überzeugt. Vielleicht denkt er: "Kann der Kerl mit dem roten Hut das wirklich halten, was er da eben so vollmundig versprochen hat? Schließlich geht es nicht nur um eine Handvoll, sondern um mehrere Hundert Systeme. Wie will der denn in der kurzen Zeit alle Rechner installieren, konfigurieren und mit unserer Software versorgen?"
Zugegeben, die Anzahl der Maschinen ist für den zur Verfügung stehenden Zeitraum schon enorm, aber mithilfe des Cobbler-XMLRPC-API sollte das Anlegen der vielen System-Profile in der Cobbler-Datenbank kein großes Problem darstellen. Dank intensiver Gespräche mit dem Kunden weiß ich nun auch, welche Art von Systemen er hat und wie diese zu konfigurieren sind. Das lässt sich eigentlich alles recht leicht über eine passende Struktur und ein ausgefeiltes Kickstart-Profil im Spacewalk-Server lösen. Zu dem Thema gibt es einen Artikel im ADMIN-Magazin [1]. Also stellen die vielen Cobbler-Systemeinträge wirklich die größte Hürde dar. Zur Erinnerung: Mithilfe dieser Systemeinträge ist Cobbler in der Lage, für jedes System eine individuelle PXE-Konfigurationsdatei zu generieren. Dank sogenannter Snippets, die später im Kickstart-Profil zum Einsatz kommen, ist die Individualisierung eines Systems bereits zu einem sehr frühen Zeitpunkt möglich. Dies gilt beispielsweise für das zu installierende Betriebssystem, die Netzwerkkonfiguration und, dank beliebiger Variablen, die sich als Kernel-Argumente in Cobbler definieren lassen, für eigentlich jede nur denkbare Konfigurationseinstellung.
Mit ein bisschen Script-Foo kommen diese Variablen dann während der Installation zum Einsatz und passen das System den eigenen Wünschen an. Ist ein solcher Eintrag für einen Rechner erst einmal erzeugt, ist der eigentlich nur noch zu starten, um eine vollkommen automatisierte Installation mittels PXE anzustoßen. Die Aufgabe besteht jetzt darin, diese Einträge erst einmal in die Cobbler-Datenbank aufzunehmen. Ein klassischer Aufruf hierfür sieht beispielsweise wie in Listing 1 aus.
Listing 1
Systemeinstellungen
Alles kein Problem, wenn es sich nur um ein paar Maschinen handelt, die notwendigen Befehle sind schnell ausgeführt. Was aber, wenn der Kunde gerne 1000 Maschinen installiert haben möchte? 1000 Einträge von Hand eingeben? Keine angenehme Aufgabe. Ein Shell-Skript? Klingt schon ganz gut, aber es geht noch besser.
Cobbler bietet neben dem manuellen Anlegen dieser Systemeinträge die Möglichkeit, diese Aufgabe mittels einer Python- oder XMLRPC-API zu automatisieren. Welche der beiden Schnittstellen man wählt, ist Geschmackssache. Wegen einiger negativer Erlebnisse mit der Python-API entscheide ich mich für XMLRPC. XMLRPC ((Extensible Markup Language Remote Procedure Call) ist vereinfacht ausgedrückt ein standardisierter Weg für Computerprogramme, sich über ein Netzwerk auszutauschen und Daten zu versenden und zu empfangen. Welche Daten zu übertragen sind, das legen verschiedene Methodenaufrufe fest. Über das HTTP-Protokoll gelangen die Daten dann – in XML-Form – an den anfragenden Client. Praktisch jede moderne Sprache bietet heute ein XML-Interface an. Hier kommt der Einfachheit halber Python zum Einsatz.
Einen ersten Einstieg zeigt Listing 2. Neben dem obligatorischen Importieren der »xmlrpclib
«
, erzeugt der Aufruf in Zeile 2 ein Objekt zum Verbinden mit dem Cobbler-Server. Zeile 3 erzeugt ein passendes Token zum Login. Mit diesem Token erhalten alle Spacewalk-Benutzer automatisch Zugang zum Cobbler-Server. Hierfür ist jedoch noch eine Anpassung in »/etc/cobbler/settings
«
notwendig. Dort ist die Anweisung »redhat_management_permissive
«
auf 1 zu setzen. Zeile 4 gibt alle vorhandenen System-Einträge aus.
Listing 2
Basics
Listing 3 zeigt ein etwas umfangreicheres Beispiel. Hier gehe ich davon aus, dass die Systeme mit allen notwendigen Informationen wie beispielsweise IP-, MAC-Adresse, Gateway und so weiter in einer CSV-Datei aufgeführt sind. Diese CSV-Datei schnappt sich das Python-Script, steckt die einzelnen System-Eigenschaften in ein Dictionary, ordnet den einzelnen Dictionary-Keys den passenden Wert zu und übergibt schließlich alles an Cobbler. Das Ergebnis ist das gleiche wie bei dem manuellen Aufruf von Cobbler weiter oben. Mithilfe der XMLRPC-API ist es ein Leichtes, die ganze Systemlandschaft im Cobbler abzubilden. Die notwendigen Systemkonfigurationsdateien für den PXE-Server erzeugt Cobbler dabei automatisch. Nach ein paar Tests und manuellen Anpassungen an den Kickstart-Dateien, auf die Cobbler in den Systemeinträgen verweist, sind alle Systeme schließlich im Handumdrehen installiert. Und das Beste daran ist: Cobbler ist freie Software, die unter der GPL-Lizenz allen zur Verfügung steht. Nach dem ganzen Gerede über Cobbler [2] habe ich nun doch glatt Appetit bekommen. Da ich mich dazu auch noch gerade in den USA aufhalte, versuche ich nun also erstmal ein Restaurant zu finden, in dem es diese leckeren Teigkrusten mit Früchten gibt, die wie die nützliche Software heißen. Bis bald.
Listing 3
Systeminformationen
Infos