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.
Diese Anleitung bezieht sich auf Red Hat Enterprise Linux 6 bzw CentOS 6.
======Aufbau======
{{ :computer:linux:kickstartaufbau.jpg?200|Aufbau des Szenarios}}
Benötigt werden:
* **DHCP-Server** - Vergabe von IPs und Weiterleitung von BOOTP-Clients
* **TFTP-Server** - Bereitstellung von Bootimage zum Starten von Linux
* **HTTP-Server** - Übertagen der Kickstart-Konfiguration für den aufzusetzenden Host
* **NFS-/FTP-Server** - Austausch der RHEL-Pakete
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:
* IPCop-Appliance als **DHCP-Server** - **192.168.178.1**
* RHEL6-System als **TFTP-/HTTP-/NFS-Server** - **192.168.178.10**
* "Nackte" virtuelle Maschine als aufzusetzenden Client - **192.168.178.20**
* "Nackte" virtuelle Maschine als aufzusetzender Server - **192.168.178.21**
======Video======
Ein funktionierender Kickstart-Vorgang mit erfolgreicher Installation ist in weniger als 10 Minuten durchgeführt:
======Installation======
=====NFS-Freigabe=====
Ü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
=====Kickstart und Apache=====
{{ :computer:linux:kickstart1.jpg?200|system-config-kickstart}}
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:
* Quelle der Installationsdateien (FTP, NFS, HTTP, lokal)
* Anzulegende Benutzer und deren Passwörter
* Software-Auswahl
* Partitionierungsschema
* Benutzerdefinierte Skripte
* uvm...
{{ :computer:linux:kickstart2.jpg?200|system-config-kickstart}}
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
{{ :computer:linux:kickstart3.jpg?200|system-config-kickstart}}
=====TFTP-Server=====
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
...
====Menü-Hintergrundbild====
{{ :computer:linux:kickstart_menu.jpg?200|Boot-Menü mit Hintergrundbild}}
Für das Menü lässt sich ganz einfach ein Hintergrundbild setzen - es muss ein Bild in der Größe 640x480 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.
=====DHCP-Server=====
{{ :computer:linux:kickstart_dhcp.jpg?200|DHCP-Einstellungen}}
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|
======Internetverweise======
* Ausführlicher und interessanter Artikel über Kickstart: [[http://www.linux-mag.com/id/6747]]