Automatisierte Installation mit Cobbler

Neue Schuhe

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

<C>cobbler check<C>

The following potential problems were detected:
#0: service cobblerd is not running
#1: service httpd is not running
#2: since iptables may be running,
ensure 69, 80, 25150, and 25151 are unblocked
#3: One or more kickstart templates references default
password 'cobbler' and should be changed for security reasons:
/etc/cobbler/sample.ks,
/etc/cobbler/legacy.ks,
/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

/sbin/chkconfig httpd on
/sbin/chkconfig dhcpd on
/sbin/chkconfig xinetd on
/sbin/chkconfig tftp on
/sbin/chkconfig cobblerd on
/sbin/service httpd start
/sbin/service dhcpd start
/sbin/service xinetd start
/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.

comments powered by Disqus

Artikel der Woche

Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018