Automatisierte Installation mit Cobbler
Mit Cobbler wird die automatisierte Installation von Linux-Rechnern zum Kinderspiel. Wir zeigen, wie Sie damit Xen- und Vmware-Images verwalten.
Wer schon einmal auf mehreren Computern Linux installiert hat, wird gemerkt haben, dass das Ganze doch ziemlich zeitaufwändig ist. Auch wenn man sich Checklisten macht, ist es nicht so einfach, die gleiche Konfiguration immer wieder fehlerlos zu reproduzieren. Deshalb wissen die meisten Systemadministratoren die Vorzüge eines automatisierten Installationssystems zu schätzen.
Praktisch jedes Betriebssystem besitzt seinerseits die Fähigkeit zur automatisierten Installation. Was angesichts der Notwendigkeit solcher Systeme verwundert, ist der große Aufwand, eine solche Umgebung einzurichten. Bislang erforderte die Einrichtung einiges an Wissen über IP-Netze, das so genannte Pre eXectuable Environment (PXE) und natürlich das Betriebssystem selbst. Diese Faktoren stellen für viele Administratoren eine hohe Einstiegshürde dar.
In den letzten Jahren sind ganz unterschiedliche so genannte Provision-Systeme entstanden (von engl. ,,to provision``, bereitstellen). Der bekannteste Ansatz läuft darauf hinaus, mit »dd« ein Disk-Image einer Installation anzulegen und es dann zum Beispiel mit PING (Partimage is not Ghost [1]) bei Bedarf auf die Rechner im Netz zu verteilen. Diese Lösung ist aber wenig flexibel, denn sie stellt für alle die gleiche Umgebung bereit und berücksichtigt keine Unterschiede in Hardware-Ausstattung oder Funktionalität. Auch die Wartung der Images, zum Beispiel bei Updates, ist aufwändig.
Einfacher geht es mit Cobbler (englisch für ,,Schuster``), einem von Red Hat initiierten Projekt, das von Michael de Haan geleitet wird. Cobbler ist ein allumfassender Baukasten für Provisioning von Betriebssystemumgebungen, das die Installation über DHCP und TFTP einschließt, sowie das Management der Software-Quellen und so weiter. Bedienbar ist Cobbler über die Kommandozeile oder über ein Web-Interface (Abbildung 1).

Abbildung 1: Optional lässt sich Cobbler über ein Browser-Interface verwalten.
Neben echten Rechnern kann Cobbler auch virtuelle Maschinen verwalten. Das Management von KVM- und Xen-Maschinen geht dabei genauso einfach von statten wie das von echten Servern. Dieser Artikel führt vor, wie Sie Cobbler aufsetzen und mit dessen Helfer namens Koan die virtuellen Images verwalten.
Im Einzelnen bietet Cobbler die folgende Funktionalität:
- dhcpd: Der DHCP-Daemon.
- dnsmasq: Masquerading DNS-Server
- bind: DND-Server.
- tftpd: Trivial File Transfer Protocol daemon.
Damit ist es möglich, alle Komponenten für die Remote-Konfiguration auf einem Server mit Cobbler zu betreiben. Natürlich können Sie auch vorhandene Server nutzen, zum Beispiel DHCP oder DNS.
Zur schnelleren Installation erstellt Cobbler auf Wunsch einen Mirror eines Software-Repository oder einer DVD, genauso wie von Third-Party-Repositories. Wenn das Booten über PXE nicht möglich ist, kann Cobbler für die Clients eine Boot-CD erzeugen. Mit einem einzigen Cobbler-Kommande können Sie eine Distributíon herunterladen und mittels Syslinux startklar machen. Ein weiterer Befehl genügt, um alle Pakete eine Update-Repository zu installieren.
Neben seiner Einfachheit besticht Cobbler auch durch seine Flexibilität, was die Individualisierung der Installation anbelangt. Zum Beispiel ist es möglich, Code-Schnipsel innerhalb der Konfiguration zu verwenden, die je nach IP-Adresse, Hostname oder anderen Merkmalen andere Werte aufweisen. Damit kann der Administrator zum Beispiel leicht unterschiedliche SSH-Schlüssel auf seine Server aufspielen. Ein weiterer Pluspunkt ist die Cobblers gute Integration mit Puppet, einem Tool zum Konfigurationsmanagement (siehe Artikel in diesem Heft).
Installation
Es gibt zwar fertige Pakete für Debian und Ubuntu, die sind aber nicht gerade auf dem aktuellsten Stand. Besser sind Sie in der Regel mit aktuelle Fedora-, Red-Hat- oder CentOS-Versionen bedient. Bei diesen installieren Sie die nötigen Basispakete über:
yum install cobbler httpd dhcp bind tftp-server
Wenn auf dem Server SELinux läuft, müssen Sie es so einrichten, dass Cobbler die dynamisch erzeugten Kickstart-Dateien auch übers Netz ausliefern darf.
setsebool -P httpd_can_network_connect true
Wenn Sie die Datei »/etc/cobbler/settings« so ändern, dass sie die folgenen Einstellungen enthält, kümmert sich Cobbler um Konfiguration und Start von DNS und DHCP-Servern. Die Variablen »server« und »next_server« beziehen sich auf den PXE-Bootvorgang. Später erhalten die Clients über DHCP diese Adressen, von denen sie schließlich die Boot-Informationen beziehen. In diesem Fall hat der Cobbler-Server die Adresse 192.168.1.5:
manage_dhcp: 1 manage_dns: 1 next_server: '192.168.1.5' server: '192.168.1.5'
Wenn Sie eine andere IP-Adresse verwenden möchten, editieren SIe »/etc/cobbler/dhcp.template« entsprechend. Wenn Sie das nicht machen, werden die PXE-Clients vergeblich versuchen, das Boot-Image von diesem Host zu laden, genauso wie die von CD gebooteten Clients dann ihre Software-Repositories nicht finden.
Auch in der DNS-Konfiguration »/etc/cobbler/named.template« stellen Sie die richtige IP-Adresse des Cobbler-Servers ein. Das ist nur einer von mehreren Schritten, um die DNS-Funktionalität Cobblers einzurichten. In der gleichen Zeile ist auch der Port 53 für den Dienst eingerichtet, der Standard-Port für DNS:
listen-on port 53 { 192.168.1.5; };Befindet sich zwischen Cobbler-Server und den Clients eine Firewall, müssen Sie die Ports in Tabelle 1 freischalten.
| Tabelle 1: Erforderliche Ports | |
|---|---|
| Port | Dienst |
| TCP 53 | DNS |
| UDP 53 | DNS |
| UDP 68 | DHCP |
| UDP 69 | TFTP |
| TCP 80 | HTTP |
| UDP 25150 | Remote Syslog |
| TCP 25151 | XMLRPC |
| TCP 25152 | XMLRPC |
Jetzt mit Inhalt
Nachdem die Cobbler-Grundkonfiguration soweit steht, ist es an der Zeit, die erste zu installierende Distribution zu installieren. Das geht mit Cobbler in nur einer Zeile mit zwei Parametern: dem Namen, den die Distribution bekommen soll und dem Ort der Installationsdaten. Letztere können entweder aus dem Internet geladen werden oder von einem Installationsmedium stammen. Mit einer Installations-DVD erschöpft sich das Ganze darin:
cobbler import --name=F9 --mirror=/media/dvd
Mit einem Mirror-Server im Internet wird der Befehl nur unwesentlich länger:
cobbler import -name=F9 --mirror=rsync://mirror.anl.gov/fedora/linux/releases/9/\ Fedora/i386/
Ein praktisches Feature von Cobbler besteht darin, dass es automatisch die neuesten Pakete in das Installations-Image packt, also selbständig Akualisierungen aus Update-Repositories lädt. Das erspart Updates nach der Installation, die nur wieder Zeit fressen würden, vor allem, wenn es sich schon um eine etwas ältere Linux-Distribution handelt. Natürlich sind Sie nicht auf reine Update-Repositories festgelegt, sie können genauso gut spezifische Third-Party-Repositories verwenden, zum Beispiel Dells Openmanage oder HPs System-Management-Pakete.
Um ein neues Repository hinzuzufügen, verwenden Sie den Befehl »cobbler add repo«, dem der Name des Repository sowie Adresse und Pfad folgen.
cobbler repo add --name=F9-updates --mirror=http://mirror.anl.gov/fedora/linux/updates/9\ /i386/
Der Befehl »cobbler reposync« aktualisiert alle eingetragenen Repositories, lassen Sie ihn also am besten per Cronjob regelmäßig ablaufen. Eine weitere Einstellung legt fest, dass die über Cobbler installierte Maschinen ihre Updates vom lokalen Mirror holen, statt beispielsweise aus dem Internet. Dazu tragen Sie in »/etc/cobbler/settings« ein:
yum_post_install_mirror: 1
Ein so genanntes Profil fasst eine Reihe von allgemeinen Einstellungen zusammen. Ein Cobbler-Profil enthält üblicherweise eine Distribution, optional ein oder mehrere Repositories und die Installations-Konfigurationsdatei. Damit können Sie ein und dieselbe Distribution in unterschiedlichen Profilen verwenden, ja sogar mit unterschiedlichen Repositories. Das vereinfacht nicht nur die Konfiguration, sondern spart auch Platz auf dem Provisioning-Server. Ein Profil, um Fedora 9 mit den neuesten Updates zu installieren, sieht beispielsweise so aus:
cobbler profile add --name=Fedora9 --distro=F9-i386 --updates=F9-updates --kickstart=/etc\ /cobbler/sample.ks
Die Kickstart-Datei »sample.ks« installiert ein Minimalsystem. Sie stellt eine gute Ausgangsbasis dar, um einige Dateien hinzuzufügen oder die Konfiguration zu verändern. Wenn Sie »/etc/cobbler/settings« ändern oder andere Cobbler-Befehle ausführen, müssen Sie mit »cobbler sync« dem Daemon die Änderungen beibringen.
Cobbler bringt auch einen Mechanismus mit, der potenzielle Probleme der aktuellen Konfiguration findet, zum Beispiel blockierende Firewalls, SELinux-Absicherung oder fehlende Dienste. Der Befehl »cobbler check« startet die Überprüfung. Listing 1 zeigt das Ergebnis eines solchen Checks.
| Listing 1: »cobbler check« |
|---|
01 The following potential problems were detected: 02 #0: service cobblerd is not running 03 #1: service httpd is not running 04 #2: since iptables may be running, 05 ensure 69, 80, 25150, and 25151 are unblocked 06 #3: One or more kickstart templates references default 07 password 'cobbler' and should be changed for security reasons: 08 /etc/cobbler/sample.ks, 09 /etc/cobbler/legacy.ks, 10 /etc/cobbler/sample_end.ks |
Die Probleme Nummer 0 und 1 werden im Folgenden gelöst, Problem 2 weist nur auf ein potenzielle Fehlerquelle hin, weil auf dem Server IPTables läuft. Sind die fraglichen Ports also nicht geblockt, können Sie den Hinweis ignorieren. Problem Nummer 3 weist auf ein Security-Problem hin, denn in den aufgelisteten Kickstart-Dateien steht immer noch das Root-Passwort »cobbler«. Das ist tatsächlich nur dann gefährlich, wenn diese Kickstart-Dateien auch verwendet werden. Nachdem im Beispielfall ohnehin benutzergenerierte Kickstart-Dateien zum Einsatz kommen, kann auch dieses Problem ignoriert werden.
Nun bleibt nur noch, die erforderlichen Dienst zu starten und sie zum automatischen Start beim Booten zu markieren (Listing 2).
| Listing 2: Starting services |
|---|
01 /sbin/chkconfig httpd on 02 /sbin/chkconfig dhcpd on 03 /sbin/chkconfig xinetd on 04 /sbin/chkconfig tftp on 05 /sbin/chkconfig cobblerd on 06 /sbin/service httpd start 07 /sbin/service dhcpd start 08 /sbin/service xinetd start 09 /sbin/service cobblerd start |
Ungefähr 90 Prozent des Funktionsumfangs von Cobbler ist auch über das Web-Interface zu erreichen. Sie aktivieren es, indem Sie im Abschnitt »[authentication]« der Datei »/etc/cobbler/modules.conf« eintragen:
[authentication] module = authn_configfile
Damit ist die URL »http://192.168.1.5/cobbler/web« mit dem Benutzernamen »cobbler« und dem Passwort »cobbler« erreichbar. Ändern Sie mit dem folgenden Befehl das Passwort auf einen sicheren Wert:
htdigest /etc/cobbler/users.digest "Cobbler" cobbler
Mit dem Web-Interface kann der Administrator Distributionen wie auch Profile und Repositories hinzufügen, ändern und löschen.
Mit der jetzigen Konfiguration können Sie über PXE booten oder von einer mit Cobbler erzeugten CD, die dann in eine vollautomatisierte Netzwerkinstallation übergeht. Das Booten der CD führt dabei im Endeffekt zum exakt gleichen Ablauf wie die PXE-Variante.
Jetzt wird's virtuell
Zum Umgang mit virtuellen Maschinen zieht Cobbler eine Hilfsanwendung namens Koan heran. Damit können Sie virtuelle Disks, Netzwerk und andere Funktionen konfigurieren, das Betriebssystem automatisch laden und die virtuelle Maschine starten. Koan funktioniert mit Xen, KVM und bestimmten Versionen von VMWware. Derzeit unterstützt es VMWare Workstation und Server, der Support von VMWware ESX ist in Arbeit. Ein Befehl genügt, um eine virtuelle Maschine bereitzustellen:
koan --server=cobber.example.org --virt --virt-type=kvm --profile=Fedora9
Damit holt Koan von Cobbler die Größe von Speicher und Festplatte, schreibt eine Konfigurationsdatei, startet die virtuelle Maschine und installiert das Betriebssystem. Die Default-Werte können Sie auch auf der Befehlszeile überschreibe, beispielsweise die Größe des verfügbaren Speichers. Tabelle 2 zeigt die möglichen Parameter.
| Tabelle 2: Überschreibbare Koan-Optionen | |
|---|---|
| Option | Beschreibung |
| --virt-name | Name der virtuellen Maschine |
| --virt-type | Virtualisierungstechnik (qemu/xen/vmware) |
| --virt-ram | Speicher in MBytes |
| --virt-bridge | Bridge Device |
| --virt-path | Verzeichnis für das Blockgerät |
| --no-gfx | Kein VNC-Support (nur bei Xen) |
Virtuelle Maschinen für VMWare erfordern etwas mehr Arbeit, aber dann eigentlich auch nur eine Zeile. Sie müssen in Cobbler einen Eintrag vornehmen, der die MAC-Adresse der virtuellen Maschine festlegt und ein Profil zuweisen:
# auf dem Cobbler-Server cobbler system add --name=foo --mac=00:50:56\ :00:00:00 # auf dem VMWare-Host koan --server=cobbler.example.org --name=foo\ --virt --virt-type=vmware
Achten Sie darauf, dass VMWare MAC-Adressen zwischen »00:50:56:00:00:00« und »00:50:56:3F:FF:FF« erwartet, damit das Netzwerk funktioniert.
Fazit
Cobbler ist eine leistungsfähige Lösung für das Provisioning von Linux-Systemen, das den Administrator von viel Konfigurationsaufwand befreit. Dank seiner einfachen Bedienung eignet es sich nicht nur fürs Data Center, sondern auch für die Masseninstallation von Linux-Systemen beispielsweise in einer User Group.
| Geht's auch ohne Red Hat? |
|---|
|
Es überrascht wenig, dass Cobbler sich besonders gut für das Provisioning von Red Hat und Fedora eignet, denn schließlich arbeitet Michael DeHaan bei Red Hat. Dennoch kann Cobbler ohne weiteres auch Suse- und Debian-Distributionen installieren. Derzeit ist sogar der Support von Windows und Solaris in Arbeit. Damit man beim Cobbler-System ebenfalls nicht auf Red Hat oder Fedora festgelegt ist, arbeiten Mitglieder der Ubuntu- und Debian-Communities schon an Paketen für ihre Distributionen. |
Infos
- [1] Partimage is not Ghost: [http://ping.windowsdream.com/]
- [2] Cobbler Website: [https://fedorahosted.org/cobbler]
- [3] Kickstart Documentation: [http://fedoraproject.org/wiki/Anaconda/Options]


Kommentare
Kommentar hinzufügen