RHEL Installation & Kickstart Automation (Artikel 062)
Vollautomatisierte Installation der Red Hat Familie mittels Kickstart. Erstellung von Konfigurationsdateien für unattended Deployments auf Bare Metal und in VMs.
# Kickstart Deep Dive: RHEL-Installationen im Autopilot
TL;DR / Management Summary Wer mehr als drei Server manuell installiert, verschwendet Zeit. Kickstart ist die Methode von Red Hat, um den Installationsprozess von RHEL, Rocky, Alma und Fedora vollständig zu automatisieren. Durch eine einfache Textdatei (
anaconda-ks.cfg) werden Partitionierung, Netzwerk, Benutzer und Paketauswahl vorgegeben. Das Ergebnis: Identische, reproduzierbare und fehlerfreie Server in Minuten.
# 1. Einführung & Architektur
Der Weg der Automatisierung.
Der Installer von Red Hat heißt Anaconda. Kickstart ist die Skriptsprache, die Anaconda steuert.
# Der Workflow (Mermaid)
graph TD
A[Boot Medium: ISO / PXE] --> B[Boot Parameter: inst.ks=URL]
B --> C[Anaconda Installer starts]
C --> D[Fetch Kickstart File via HTTP/TFTP]
D --> E[Automated execution: Partition, Users, Packages]
E --> F[Post-Install Scripts %post]
F --> G[Reboot into production system]
# 2. Die Anatomie der Kickstart-Datei
Befehle und Sektionen.
Eine Kickstart-Datei (*.ks) ist in drei Hauptteile gegliedert:
- Command Section: Allgemeine Systemeinstellungen (Sprache, Keyboard, IP).
- Packages Section (
%packages): Welche Software soll installiert werden? - Scripts Section (
%pre,%post): Befehle vor oder nach der Installation.
# Beispiel: Minimalistisches Kickstart
# Language / Timezone
lang de_DE.UTF-8
keyboard --vckeymap=de --xlayouts='de'
timezone Europe/Berlin --utc
# Auth & Disk
rootpw --iscrypted $6$rounds=4096$salt$hash...
text
cdrom
bootloader --location=mbr
# Partitioning (LVM)
clearpart --all --initlabel
autopart --type=lvm
# Packages
%packages
@^minimal-environment
kexec-tools
openssh-server
%end
# Post-Install Action
%post
yum update -y
echo "Installation complete" >> /root/install.log
%end
# 3. Bereitstellung der Kickstart-Datei
Wie kommt das Skript zum Server?
# via Boot-Optionen
Beim Starten der ISO (im Bootmenü TAB oder E drücken) hängen Sie folgendes an die linux-Zeile an:
inst.ks=http://192.168.1.10/kickstart/webserver.ks
# Quellen für die Datei
- Web:
inst.ks=http://...(Standard im RZ). - Lokal:
inst.ks=hd:LABEL=USBDRIVE:/ks.cfg. - NFS:
inst.ks=nfs:server:/path/to/ks.cfg.
# 4. Day-2 Operations: Dynamische Kickstarts
Ein Skript für alle Fälle.
Nutzen Sie die %pre Sektion, um Hardware zu erkennen und die Datei zur Laufzeit zu manipulieren. So können Sie z.B. entscheiden, ob auf /dev/sda oder /dev/nvme0n1 installiert wird.
%pre
# Erkenne Disk-Typ
if [ -b /dev/nvme0n1 ]; then
echo "ignoredisk --only-use=nvme0n1" > /tmp/diskconfig
else
echo "ignoredisk --only-use=sda" > /tmp/diskconfig
fi
%end
# Binde die generierte Datei ein
%include /tmp/diskconfig
# 5. Troubleshooting & “War Stories”
Wenn der Autopilot versagt.
# Story 1: “Der hängende Root-Password Dialog”
Symptom: Trotz Kickstart bleibt der Installer beim Root-Passwort stehen.
Ursache: Das Passwort wurde im Klartext übergeben, aber das System erwartet ein verschlüsseltes Passwort (wegen --iscrypted).
Lösung: Generieren Sie das Passwort mit openssl passwd -6 und nutzen Sie das Flag --iscrypted.
# Story 2: “Netzwerk-Konflikt bei PXE”
Symptom: Der Installer findet die Kickstart-Datei nicht, obwohl das Netzwerk beim PXE-Boot da war.
Ursache: Anaconda initialisiert das Netzwerk neu. Wenn kein DHCP vorhanden ist oder das Interface falsch benannt wurde, schlägt der Download fehl.
Lösung: Übergeben Sie IP-Parameter direkt im Boot-Prompt: ip=192.168.1.50::192.168.1.1:255.255.255.0:hostname:eth0:none.
# 6. Fazit & Empfehlung
- Goldene Regel: Nach jeder manuellen Installation finden Sie in
/root/anaconda-ks.cfgeine Kopie dessen, was Sie gerade getan haben. Nutzen Sie dies als Vorlage! - Validierung: Nutzen Sie das Tool
ksvalidator(Paketpykickstart), um Ihre Skripte vor dem Einsatz auf Syntaxfehler zu prüfen. - Alternativen: Für virtuelle Maschinen nutzen Sie lieber Packer oder fertige Cloud-Images (siehe Artikel 002). Kickstart ist der König für Bare-Metal.
# Anhang: Cheatsheet
| Aufgabe | Befehl / Flag |
|---|---|
| Passwort verschlüsseln | openssl passwd -6 |
| Syntax-Check | ksvalidator /pfad/zu/ks.cfg |
| Text-Modus erzwingen | text in Command Section |
| Automatischer Reboot | reboot am Ende der Command Section |
| Log-Files (im Installer) | ALT+F2 drücken, dann /tmp/anaconda.log |