linux-rhel-centos-fedora rhel automation kickstart deployment rocky-linux

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:

  1. Command Section: Allgemeine Systemeinstellungen (Sprache, Keyboard, IP).
  2. Packages Section (%packages): Welche Software soll installiert werden?
  3. 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.cfg eine Kopie dessen, was Sie gerade getan haben. Nutzen Sie dies als Vorlage!
  • Validierung: Nutzen Sie das Tool ksvalidator (Paket pykickstart), 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