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.
Installationsscript für CentOS Installationen
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.
Erstellen von Kickstart-Dateien
Kickstart-Dateien kann mit einer der folgenden Methoden erstellen:
- Verwenden des RHEL Kickstart-Online-Konfigurationswerkzeuges
- Voraussetzungen:
- Man hat ein Red Hat-Kundenportal-Konto und ein aktives Red Hat-Abonnement.
- Vorgehensweise:
- Öffnen der Informationsseite zum Kickstart-Generator-Labor unter https://access.redhat.com/labsinfo/kickstartconfig
- Menüpunkt Go to Application links neben der Überschrift anwählen und warten bis die nächste Seite geladen ist.
- Im Dropdown-Menü den Punkt Red Hat Enterprise Linux 8 auswählen und erneut warten bis die Seite aktualisiert wird.
- Nun das zu installierende System anhand der Felder im Formular beschreiben.
- Die links auf der linken Seite des Formulars helfen um schnell zwischen den Abschnitten des Formulars zu navigieren.
- Zum Download der generierte Kickstart-Datei auf die rote Schaltfläche Download oben auf der Seite klicken.
- 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!
Bsp. 1: bestehende Kickstart-Datei
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:
- Wir installieren ein CentOS 8-System mit den gewünschten grundsätzlichen Standardkonfigurationsoptionen, wie z.B. hier beschrieben.
- Neben dem Passwort für den Benutzer root legen wir auch unser Admin-User-Konto an.
- Nach erfolgter installation starten wir das System neu.
- Dann melden wir uns an dem System an.
- 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
- Dort können wir die Datei unseren Wünschen nach entsprechend noch final anpassen.
- 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 Optionksdevice
(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!
Bsp. 2: erste Teilautomation
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.
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.
Nun brauchen wir nur noch die Hostspezifische Aufteilung der Festplatten vornehmen!
Zur eigentlichen Installation klicken wir nur noch auf die Schaltfläche [ Begin Installation ] rechts unten im GUI-Fenster.
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.
do gehds weida!