Mithilfe von Red Hat Kickstart ist es möglich, Systeme auf einfache Art und Weise mit Red Hat Enterprise Linux aufzusetzen. So kann ein System direkt aus dem Netzwerk das Installationsprogramm booten, welches dann Red Hat inklusive Zusatzsoftware installiert und konfiguriert.
Benötigt werden:
Der Host erhält per DHCP eine IP und bootet anschließend über PXE ein kleines Installationssystem. Dieses bezieht über HTTP die Kickstart-Konfiguration und installiert auf deren Basis Pakete von einer NFS- oder FTP-Freigabe. Diese Dienste können auf einem oder auf mehreren Hosts laufen.
In diesem Beispiel verwende ich:
Ein funktionierender Kickstart-Vorgang mit erfolgreicher Installation ist in weniger als 10 Minuten durchgeführt:
Über eine NFS- oder FTP-Freigabe werden die RHEL-Installationsdateien zur Verfügung gestellt. Zuerst wird eine lokale Kopie der Installationsmedien angelegt, die dann über NFS lesend dem gesamten Netzbereich (192.168.178.0/255.255.255.0) zur Verfügung gestellt wird.
# mkdir /export/rhel63 # mount /dev/sr0 /media # cp -Rv /media/* /export/rhel63 # umount /media # vi /etc/exports ... /export/rhel63 192.168.178.0/24(ro) ... ZZ # exportfs -ra # exportfs -v /export/rhel63 192.168.178.0/24
Für den Start der Installation wird eine Kickstart-Konfiguration benötigt. Kickstart installiert dann auf Basis dieser Konfiguration ausgewählte Software-Pakete und legt auch Benutzer an.
Die Kickstart-Konfiguration kann komfortabel über das Tool system-config-kickstart vorgenommen werden. Das Tool erfordert eine grafische Oberfläche und fragt in Form eines Assistenten alle benötigen Informationen ab - dazu zählen beispielsweise:
In diesem Beispiel wurden zwei Kickstart-Konfigurationen für einen Client (Desktop) und einen Server (Apache2 und PHP5) angelegt.
Anschließend wird der Webserver installiert und konfiguriert, bevor die Konfigurationen kopiert werden:
# yum install httpd # chkconfig httpd on # service httpd start # cp ks.cfg /var/www/html/ks.cfg # cp ks-server.cfg /var/www/html/ks-server.cfg
Damit Hosts über das Netz booten, muss ein TFTP-Server, der einige Boot-Dateien „streamt“, aufgesetzt werden. Anschließend werden einige Dateien von der RHEL-DVD und vom lokalen Dateisystem in den TFTP-Ordner kopiert.
# yum install tftp-server # chkconfig tftp on # chkconfig xinetd on # service xinetd start # service tftp start # cd /var/lib/tftpboot # cp -R /export/rhel63/images/pxeboot/* . # cp /usr/share/syslinux/vesamenu.c32 . # mkdir pxelinux.cfg
Unterhalb des Ordners pxelinux.cfg befinden sich Konfigurationsdateien. Diese können für jeden bootenden Host unterschiedlich sein. So kann man beispielsweise einen bestimmten Rechner als Server aufsetzen lassen, während alle anderen aufzusetzenden Hosts immer als Client aufgesetzt werden. Die Dateinamen richten sich nach der MAC-Adresse oder der IP-Adresse im hexadezimalen Format:
MAC-/IP-Adresse | Dateiname | Kommentar |
---|---|---|
00:0C:29:B4:32:F1 | 01-00-0c-29-b4-32-f1 | Dateiname in Kleinbuchstaben mit vorangestelltem 01-! |
192.168.178.20 | C0A8B214 | IP-Oktette in Hexadezimal |
Der PXE-Client sucht nach der besten für ihn passenden Konfigurationsdatei (für seine IP) - findet er eine solche nicht, sucht er eine für seine IP-Adresse. Findet er auch die nicht, wird nach Dateien mit fehlenden IP-Oktetten gesucht, solange bis eine Datei gefunden wird. Zuletzt wird die Standard-Konfigurationsdatei default geladen.
Ein PXE-Client, der die IP-Adresse 192.168.178.20 und die MAC-Adresse 00:0C:29:B4:32:F1 hat würde also in der folgenden Reihenfolge nach Konfigurationsdateien suchen:
01-00-0c-29-b4-32-f1
(MAC-Adresse)C0A8B214
(192.168.178.20 in hexadezimaler Darstellung)C0A8B21
C0A8B2
C0A8B
C0A8
C0A
C0
C
default
Im pxelinux.cfg
-Ordner wird nun eine Standard-Konfiguration angelegt:
# vi default default vesamenu.c32 timeout 600 menu title Welcome to Kickstart! menu color border 0 #ffffffff #00000000 menu color sel 7 #ffffffff #ff000000 menu color title 0 #ffffffff #00000000 menu color tabmsg 0 #ffffffff #00000000 menu color unsel 0 #ffffffff #00000000 menu color hotsel 0 #ff000000 #ffffffff menu color hotkey 7 #ffffffff #ff000000 menu color scrollbar 0 #ffffffff #00000000 label local menu label Boot from ^local drive menu default localboot 0xffff label ks menu label Install using ^Kickstart kernel vmlinuz append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks=http://192.168.178.10/ks.cfg ESC ZZ
Die Konfigurationsdatei kann für den Server einfach kopiert und angepasst werden. Interessant ist in diesem Fall nur die append-Zeile, da das Installationsprogramm eine andere Kickstart-Konfigurationsdatei (aufgrund der angepassten Software-Auswahl für den Server!) verwenden muss.
# cp default 01-00-50-56-3f-4c-9f # vi 01-00-50-56-3f-4c-9f ... append ksdevice=eth0 load_ramdisk=1 initrd=initrd.img network ks=http://192.168.178.10/ks-server.cfg ...
Für das Menü lässt sich ganz einfach ein Hintergrundbild setzen - es muss ein Bild in der Größe 640×480 als PNG oder JPG erstellt werden. Anschließend wird die Konfiguration wie folgt angepasst:
# vi default default vesamenu.c32 timeout 600 menu background back.png menu title Welcome to Kickstart! ...
Der Pfad zum Bild erfolgt ab dem TFTP-Root, idealerweise wird das Bild also direkt unter /var/lib/tftpboot gespeichert.
Der DHCP-Server muss dahingehend konfiguriert werden, dass er BOOTP-Clients zulässt. Darüber hinaus müssen die folgenden beiden Variablen konfiguriert werden:
Variable | Wert | Beschreibung |
---|---|---|
filename | pxelinux.0 | Dateiname des PXE Linux-Bootloaders |
next-server | 192.168.178.10 | IP-Adresse des TFTP-Servers |