Dies ist eine alte Version des Dokuments!


Installation mit Hilfe eines Kickstartfiles für CentOS 8.x (PXE-Server)

Kurz mal einen Testrechner auf diesem Wege zu installieren, wie im Kapitel Installation von CentOS 8.x via PXE beschrieben, mag ja noch als praktikabel angesehen werden. Will man aber mehrere Duzend oder gar hunderte von Systemen installieren, wird man sehr schnell feststellen, dass diese Variante noch nicht wirklich das Mittel der Wahl sein kann und wird.

Viele wertvolle Hinweise zur Erstellung und zu den Optionen rund um PXE1) finden sich in der Original-RedHat-Dokumentation Performing an advanced RHEL installation im Kapitel Chapter 3. Kickstart installation basics

Ergänzend finden sich auch noch wertvolle Hinweise zum Thema Creating Kickstart files in der aktuellen CentOS 8.0.1905 documentation.

Für die weitgehende Automatisierung der Installation unserer Rechner greifen wir auf ein Installationsscript zurück, welches uns entsprechend unterstützen wird. Diese Datei enthält Angaben zu den einzelnen Installationschritten, die wir bei einer manuellen Installation immer angeben oder anklicken müssten. Im Wesentlichen sind dies Angaben zu:

  • Systemsprache
  • Tastaturlayout
  • Netzwerkdefinitionen
  • Installationsquelle
  • Zeitzone
  • Paketauswahl
  • u.s.w.

Kickstart-Dateien kann mit einer der folgenden Methoden erstellen:

    • Voraussetzungen:
      • Man hat ein Red Hat-Kundenportal-Konto und ein aktives Red Hat-Abonnement.
    • Vorgehensweise:
      1. Öffnen der Informationsseite zum Kickstart-Generator-Labor unter https://access.redhat.com/labsinfo/kickstartconfig
      2. Menüpunkt Go to Application links neben der Überschrift anwählen und warten bis die nächste Seite geladen ist.
      3. Im Dropdown-Menü den Punkt Red Hat Enterprise Linux 8 auswählen und erneut warten bis die Seite aktualisiert wird.
      4. Nun das zu installierende System anhand der Felder im Formular beschreiben.
      5. Die links auf der linken Seite des Formulars helfen um schnell zwischen den Abschnitten des Formulars zu navigieren.
      6. Zum Download der generierte Kickstart-Datei auf die rote Schaltfläche Download oben auf der Seite klicken.
      7. Der Webbrowser speichert die Datei dann in derm lokal gewähltenVerzeichnis.
  • Kopieren und editieren einer bestehenden Kickstart-Datei, die als Ergebnis einer manuellen Installation erstellt wurde.
  • Schreiben Sie die gesamte Kickstart-Datei manuell von „the scratch“
    • Wichtiger Hinweis : Das Bearbeiten einer bereits vorhandenen Datei mit den anderen Methoden ist in der Regel schneller, weshalb diese Methode auch nicht zu empfehlen ist.

Ferner ist zu beachten, dass viele sehr individuelle Konfigurationswünsche, wie z.B. LVM-Konfigurationen bzw, aufwändige Partitionierungen meist nur manuell in einer Kickstart-Datei konfiguriert werden können! Nich alles lässt sich mittels automatisierter GUIs abbilden!

Erzeugung und Berabeitung

In folgendem Beipiel wollen wir uns die manuelle Erstellung und Bearbeitung einer Kickstart-Datei einer zuvor ertellen Installation etwas genauer ansehen.

Der empfohlene Ansatz zur Erstellung von Kickstart-Dateien ist die Verwendung der Datei, die bei einer manuellen Installation von CentOS 8 erstellt wurde. Nach Abschluss einer Installation werden alle während der Installation getroffenen Entscheidungen in einer Kickstart-Datei mit dem Namen anaconda-ks.cfg gespeichert, die sich im Verzeichnis /root/ auf dem installierten System befindet. Diese Datei können wir nun verwenden, um die Installation auf die gleiche Weise wie zuvor zu reproduzieren. Alternativ können wir diese Datei kopieren, alle erforderlichen Änderungen vornehmen und die resultierende Konfigurationsdatei für weitere Installationen anschließend verwenden.

  • Vorgehensweise:
    1. Wir installieren ein CentOS 8-System mit den gewünschten grundsätzlichen Standardkonfigurationsoptionen, wie z.B. hier beschrieben.
    2. Neben dem Passwort für den Benutzer root legen wir auch unser Admin-User-Konto an.
    3. Nach erfolgter installation starten wir das System neu.
    4. Dann melden wir uns an dem System an.
    5. Abschließend kopieren wir die Datei /root/anaconda-ks.cfg auf unseren Installationshost(Repo-Server in das Verzeichnis ../kickstart/ks_centos_8_x86_64_dmz.cfg.

      WICHTIG:
      Die Datei enthält Informationen über Benutzer und Kennwörter!

       # less ../kickstart/ks_centos_8_x86_64_dmz.cfg
      #version=RHEL8
      ignoredisk --only-use=vda
      autopart --type=lvm
      # Partition clearing information
      clearpart --all --initlabel --drives=vda
      # Use graphical install
      graphical
      repo --name="AppStream" --baseurl=http://10.0.0.57/centos/8/BaseOS/x86_64/os/../../../AppStream/x86_64/os/
      # Use network installation
      url --url="http://10.0.0.57/centos/8/BaseOS/x86_64/os/"
      # Keyboard layouts
      keyboard --vckeymap=de-nodeadkeys --xlayouts='de (nodeadkeys)'
      # System language
      lang en_US.UTF-8
      
      # Network information
      network  --bootproto=dhcp --device=ens3 --ipv6=auto --activate
      network  --hostname=vml000058.dmz.nausch.org
      # Root password
      rootpw --iscrypted $6$Z46HtZ/aLHbA19p$WVsutOEqe0m0e97lgEreKUzfkAEFzFSR0Hj8RFN8MHqWjPqk7PkJeQ9mIcTGtdutFnFVdFzFSR0KhrdGwUdAn01
      # X Window System configuration information
      xconfig  --startxonboot
      # Run the Setup Agent on first boot
      firstboot --enable
      # System services
      services --enabled="chronyd"
      # System timezone
      timezone Europe/Berlin --isUtc --ntpservers=vml000027.dmz.nausch.org
      user --name=django --password=$6$2.fGKBeQa18GE6XwDMXG6$QX/j.TfZXk0bBuoJ8GE6XMXRZYz/4pEE6PuwkubaDmteRAAerLVKK69EF30d1K/f1d/sUEqbF9FJBulc/ --iscrypted --gecos="Bastard Operator from Hell"
      
      %packages
      @^graphical-server-environment
      kexec-tools
      
      %end
      
      %addon com_redhat_kdump --enable --reserve-mb='auto'
      
      %end
      
      %anaconda
      pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
      pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
      pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
      %end
    6. Dort können wir die Datei unseren Wünschen nach entsprechend noch final anpassen.
    7. anschließend passen wir dann noch die Konfigurationszeile unseres PXE-Bootmenüs passend an und vermerken dort sowohl ks (Host und Pfad der Kickstartdatei) als auch die Option ksdevice (Netzwerkgerät über die die Kickstart-Datei geladen werden kann). Bsp.:
      ... 
      LABEL 3
         MENU LABEL ^3) Installation von CentOS 8 (64 Bit)
         KERNEL images/centos/8/x86_64/vmlinuz
         APPEND ks=http://10.0.0.57/kickstart/ks_centos_8_x86_64_dmz.cfg initrd=images/centos/8/x86_64/initrd.img ksdevice=ens3 ip=dhcp --hostname=vml007357.dmz.nausch.org method=http://10.0.0.57/centos/8/BaseOS/x86_64/os/ SERVERNAME=
      ... 

HINWEIS::

Viele vertiefenden Hinweise und Tips zum Syntax in einer Kickstart-Datei finden sich im übrigen in der originalen CentOS-Dokumentation im Kapitel Kickstart script file format reference sowie in der Kickstart commands and options reference!.

Überprüfung

Nach umfangreichen Änderungen enpfiehlt es sich, die gemachten Änderungen an der Kickstartdatei entsprechend zu validieren. Hierzu verwenden wir das Programm ksvalidator aus dem RPM pykickstart. Zunächst installieren wir uns dieses Paket.

 # dnf install pykickstart -y

Zum Syntax-Check unserer Kickstartdatei rufen wir dann das Programm gefolgt mit dem Pafd und Dateinamen unserer Kickstart-Datei auf, wie z.B. im folgenden Beispiel:

 # ksvalidator /srv/kickstart/ks_centos_8_x86_64_dmz.cfg 

Passt der Syntax wir nichts zurück gegeben. Hat sich aber ein Syntaxfehler eingeschlichen wird uns ausgegeben, wo der Fehler liegt, wir im folgenden Beispiel - hier wurde statt keyboard das Wort falsch geschrieben: keiboard:.

 # ksvalidator /srv/kickstart/ks_centos_8_x86_64_dmz.cfg 
The following problem occurred on line 12 of the kickstart file:

Unknown command: keiboard

Das Validierungstool selbst kann natürlich nicht garantieren, dass die Installation später auch wirklich erfolgreich sein wird! Es stellt nur sicher, dass die Syntax korrekt ist und dass die Datei keine veralteten Optionen enthält. Es wird dabei nicht versucht, die Abschnitte %pre, %post und %packages der Kickstart-Datei zu validieren!

Damit unsere Installationen künftig weitgehend automatisiert ablaufen können, werden wir auf ein kickstart-file erstellen und dies später von unserem Webserver, der auch die Auslieferung der Installations-RPMs vornimmt, ausliefern lassen.

Die Konfigurationsdatei für die automatisierte Installation werden wir, wie im berits skizziert auf Basis einer bestehenden Installation weiter ausbauen.

Zunächst werden wir im Document-Root des WEB-Servers unseres Repo-Servers ein Verzeichnis für die Kickstart-Dateien anlegen, in dem wir später die Dateien anlegen werden.

 # mkdir -p/ /srv/kickstart

Dann kopieren wir die vorhanden Kickstart-Datei in das Zielverzeichnis.

 # cp /root/anaconda-ks.cfg /srv/kickstart/ks_centos_8_x86_64_dmz.cfg

Um später vor unliebsamen Überraschungen gefeit zu sein, passen wir die Userrechte der Kickstart-Datei an, so dass der Benutzer apache des Webservers diese auch lesen und somit ausliefern kann!

 # chown apache:apache /srv/kickstart/ks_centos_8_x86_64_dmz.cfg

Abschliessend bearbeiten wir unsere Konfigurationsdatei und vermerken bei Bedarf Hinweise zu den einzelnen Optionen. Eine ausführliche Beschreibung der einzelnen Optionen finden wir im CentOS 8 Documentation - Kickstart script file format reference.

 # vim /srv/kickstart/ks_centos_8_x86_64_dmz.cfg
/srv/kickstart/ks_centos_8_x86_64_dmz.cfg
# Django 2020-06-12 Kickstart-Datei zum automatischen Betanken von DMZ-Maschinen (64 Bit)
# Version=CentOS 8 (RHEL 8)
 
# Tastaturlayout definieren
keyboard --vckeymap=de-nodeadkeys --xlayouts='de (nodeadkeys)'
 
# Systemsprache setzen
lang en_US.UTF-8
 
# Definition der Netzwerkeinstellungen
network  --bootproto=static --device=ens3 --gateway=10.0.0.17 --ip=10.0.0.254 --nameserver=10.0.0.27 --netmask=255.255.255.0 --ipv6=auto --activate
network  --hostname=vml000254.dmz.nausch.org
 
# Zeitzone setzen
timezone Europe/Berlin --isUtc --ntpservers=time.dmz.nausch.org
services --enabled="chronyd"
 
# Netzwerkinstallation aus dem eigenen Repository mit den aktuellen Paketen
url --url="http://10.0.0.57/centos/8/BaseOS/x86_64/os/"
repo --name="AppStream" --baseurl=http://10.0.0.57/centos/8/BaseOS/x86_64/os/../../../AppStream/x86_64/os/
 
# Root-Passwort verschlüsselt vorgeben
rootpw --iscrypted $6$qKYVPTB/XbETdalD$9KDd5a0O0gIOLyylavv3y3YOkzrQJqAoPrqbLrxGS94/G1Nude5DLLNlsgVyeDXO9l3vaxYqdZfuckGnQbUME0
 
# Default-Benutzerkonto anlegen
user --name=django --password=$6$9eYDL2WNf3YXU/VK$ZWa2Ddj1n6GG.Hb8bnNZ/A2MTenEdmfd.jB0qlqyVnLtj55lG/Wn0hdLpvboWWm49oXDEvIXq8bzOx4.LXfq0. --iscrypted --gecos="Bastard Operator from Hell"
 
# vorhandene Partitionen löschen
ignoredisk --only-use=vda
clearpart --all --initlabel --drives=vda
# autopart --type=lvm
 
# GUI für Installation verwenden
graphical
 
# Kein X Window System konfigurieren, da dieses nicht installiert wird
skipx
 
# Reboot nach der Installation ausführen
reboot
 
# Paketauswahl definieren (Minimalinstallation mit zusätzlichen Paketen
%packages
@^minimal-environment
vim
bash-completion
bind-utils
wget
telnet
net-tools
lsof
%end
 
%addon com_redhat_kdump --disable --reserve-mb='auto'
 
%end
 
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

Bei der oben genannten Beispiels-Installation geben wir unter anderem folgende Einstellungen vor:

  • Systemsprache : Englisch
  • Tastaturlayout : deutsch
  • Netzwerk : IP-Adresse temporär fest definieren und zugehörigen Hostnamen setzen.
  • Installationsquelle : Unser eigener Repository-Server http://10.0.0.57//centos/8/BaseOS/x86_64/os/../../../AppStream/x86_64/os/ verwenden.
  • Zeitzone : Europe/Berlin und UTC nutzen sowie den Zeitserver time.dmz.nausch.org nutzen - chronyd zum Zeitabgleich als Daemon verwenden.
  • Root-Passwort : verschlüsselt hinterlegt
  • User : Admin-User-Konto anlegen und Passwort (verschlüsselt) setzen.
  • Bootloader : installieren
  • Deamon : kdump disablen
  • Paketauswahl : minimal und ausgewählte Pakete zusätzlich installieren.
  • Neustart : Nach der Installation des Systems einen Reboot ausführen.

Damit nun beim Laden der Menüdatei bei PXE-Boot das richtige Kickstartfile geladen werden kann, erweitern wir nun die Menü-Datei unseres PXE-Bootservers.

 # vim /var/lib/tftpboot/pxelinux.cfg/dmz-64

Dort tragen wir beim betreffenden LABEL die Option ks ein.

LABEL 3
   MENU LABEL ^3) Installation von CentOS 8 (64 Bit)
   KERNEL images/centos/8/x86_64/vmlinuz
   APPEND ks=http://10.0.0.57/kickstart/ks_centos_8_x86_64_dmz.cfg initrd=images/centos/8/x86_64/initrd.img ksdevice=ens3 ip=dhcp --hostname=vml000250.dmz.nausch.org method=http://10.0.0.57/centos/8/BaseOS/x86_64/os/ SERVERNAME=

Anschliessend können wir unseren ersten virtuellen CentOS 8 Host mit entsprechender Konfigurationsunterstützung an Hand unserer Kickstart-Datei aufsetzen.

Bild: Bildschirmhardcopy des PXE Bootmenüs

Sobald wir uns im Konfigurationsmodus unserer Installation befinden, sehen wir, dass die gewünschten Optionen, die wir über die Kickstart-Datei definiert hatten, bereits gesetzt sind.

Bild: Bildschirmhardcopy der Installationskonfiguration

Nun brauchen wir nur noch die Hostspezifische Aufteilung der Festplatten vornehmen!

Bild: Bildschirmhardcopy der Installationskonfiguration

Zur eigentlichen Installation klicken wir nur noch auf die Schaltfläche [ Begin Installation ] rechts unten im GUI-Fenster.

Bild: Bildschirmhardcopy der Installation

Auch hier sehen wir,. dass das Root-Paswort und auch der Admin-User-Account bereits definiert wurden. Am Ende der Installation macht unser neuer CentOS 8 Host automatisch einen Neustart und wir können uns anschließend an unserem System anmelden.

Bild: Bildschirmhardcopy der fertig Installierten CentOS 8 Maschine

FIXME do gehds weida!


1)
Preboot eXecution Environment
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/pxe_c8/pxe_2.1591972154.txt.gz
  • Zuletzt geändert: 12.06.2020 14:29.
  • von django