Netzwerkinstallation CentOS 8 mit Kickstart.

Einführung

Früher habe ich einen Artikel über die Netzwerkinstallation mit Ubuntus "automatischer Installationsfunktion" veröffentlicht, aber da dies eine große Sache ist, werde ich über "Kickstart" sprechen, das häufig in RHEL-Systemen verwendet wird.

Weitere Informationen zur Netzwerkinstallation mit der Funktion "Automatische Installation" von Ubuntu Server 20.04 finden Sie im folgenden Artikel.

Darüber hinaus ist dieser Artikel eine Fortsetzung des folgenden Artikels. Bitte gehen Sie nach dem Erstellen des PXE-Servers in den folgenden Artikel.

Was ist Kickstart?

Dies ist eine Netzwerkinstallationsmethode, die häufig im RHEL-System verwendet wird.

Ich denke, dass die Funktion seit der Einführung von "Fedora Core" implementiert wurde, daher denke ich, dass sie seit mehr als 15 Jahren weltweit verwendet wird.

Das Red Hat-Handbuch beschreibt auch das Format und die Einstellungen im Detail, also Netzwerke anderer Betriebssysteme Ich denke, es ist einfacher zu erreichen als zu installieren.

Verfassung

Ich habe in VirtualBox eine virtuelle Maschine mit der folgenden Konfiguration erstellt.

Informationen zum Erstellen eines PXE-Servers finden Sie im verlinkten Artikel.

Unten ist der Vorgang auf der PXE-Serverseite der Vorgang auf "CentOS8" auf "VirtualBox".

Die Speichergröße beträgt gemäß [CentOS 8.2.2004 Release Notes] mindestens 2 GB (https://wiki.centos.org/action/show/Manuals/ReleaseNotes/CentOS8.2004?action=show&redirect=Manuals%2FReleaseNotes%2FCentOSLinux8). Da es notwendig ist, wird es 2 GB sein.

** - Maschinenkonfiguration für die automatische Installation **

Verfassung Art
CPU 1 vCPU
Speichergröße 2048 MB
Lager 16.00 GB
Netzwerk 1 Nur-Host-Adapter
Netzwerk 2 NAT

** ・ Struktur des PXE-Serververzeichnisses **

Verzeichnis Pfad
TFTP-Verzeichnis /tftpboot
HTTP-Verzeichnis /pxeboot

** ・ Adressstruktur **

Ziel Adresse
PXE-Server 192.168.56.105
Maschinen, die einer automatischen Installation unterliegen 192.168.56.131

Bauablauf

Der PXE-Server ist eine Voraussetzung dafür, dass er bereits erstellt wurde.

** ・ serverseitige PXE-Prozedur **

  1. CentOS 8.2.2004 ISO-Dateimount
  2. Kopie des Kernel-Images von CentOS 8.2.2004
  3. Erstellen Sie eine TFTP-Startkonfigurationsdatei
  4. Erstellen Sie ein Verzeichnis für die automatische Installation
  5. Erstellen Sie eine Anaconda-Datei für Kickstart

** - Verfahren an der Maschine für die automatische Installation **

  1. Einstellungen der Maschine, die automatisch installiert werden soll
  2. Automatische Installation

Installation von Kickstart

"Kickstart" wird gemäß den in der "Anaconda" -Datei beschriebenen Einstellungen eingerichtet.

Wenn die anaconda-Datei vom Typ RHEL ist, werden die Einstellungen zum Zeitpunkt der Erstinstallation unter / root beschrieben. Lesen Sie daher die Datei / root / anaconda-ks.cfg und stellen Sie sie auf Kickstart ein. Ich werde eine Datei erstellen.

CentOS 8.2.2004 ISO-Dateimount

Dieses Mal müssen Sie das ISO-Image nicht direkt auf den Installationszielserver übertragen, wie z. B. Ubuntu Server-Installation, also ISO mit "PXE-Server" Nur montieren.

Laden Sie "CentOS 8.2.2004" von CentOS-Site herunter und laden Sie die ISO-Datei (CentOS-8.2) von "Gerät" -> "Optisches Laufwerk" von "PXE-Server" herunter. Wählen Sie .2004-x86_64-dvd1.iso).

Erstellen Sie ein Verzeichnis mit dem Mount-Ziel "/ pxeboot / repo / CentOS / 8 / cdrom", damit Sie es später mit "Kickstart" angeben können.

Erstellen eines Verzeichnisses für die ISO-Image-Bereitstellung


sudo mkdir -p /pxeboot/repo/CentOS/8/cdrom

Kopie des CentOS 8.2.2004-Kernel-Images

Hängen Sie die gerade geladene ISO-Datei ein und erhalten Sie das Kernel-Image "CentOS 8.2.2004".

Erstellen Sie ein Kernel-Image-Speicherverzeichnis


sudo mkdir /tftpboot/CentOS

ISO-Image-Mount


sudo mount /dev/sr0 /pxeboot/repo/CentOS/8/cdrom

Kernel-Image-Kopie


sudo cp /pxeboot/repo/CentOS/8/cdrom/images/pxeboot/{vmlinuz,initrd.img} /tftpboot/CentOS

Informationen zur TFTP-Startkonfigurationsdatei

Wie bereits erwähnt, wird der Name der Startkonfigurationsdatei festgelegt, die beim Booten von PXE erfasst werden soll. Die Regeln lauten wie folgt.

Wenn Sie beispielsweise eine MAC-Adressdatei speichern, können Sie die Startkonfigurationsdatei für jeden Host korrigieren, sodass Sie eine für jeden Host spezifische Definition angeben können.

Abhängig davon, wie Sie die Einstellungen in die Startkonfigurationsdatei schreiben, können Sie den Benutzer auch die Betriebssystemdatei oder das Betriebssystemabbild auswählen lassen, die beim Start gelesen werden sollen, sodass Sie mehrere Startdefinitionen in "Standard" eingeben und auswählen können.

Erstellen einer TFTP-Startkonfigurationsdatei

Dieses Mal wird die Kickstart-Installationsdefinition in der MAC-Adressdatei des zu installierenden Computers beschrieben.

Der Name der Schnittstelle und die MAC-Adresse basieren auf den folgenden Annahmen. Lesen Sie diese daher entsprechend Ihrer Umgebung.

Schnittstelle MAC-Adresse
enp0s3 08:00:27:1d:57:34

Da es dieses Mal mit "VirtualBox" erstellt wurde, ist die Schnittstelle "enp0s3", aber der Name der Schnittstelle ändert sich je nach Umgebung. Überprüfen Sie daher den Namen der Schnittstelle, indem Sie ihn im Voraus installieren.

/tftpboot/pxelinux.cfg/01-08-00-27-1d-57-34


sudo cat << _EOF_ | sudo tee /tftpboot/pxelinux.cfg/01-08-00-27-1d-57-34
default kickstart
label kickstart
  kernel CentOS/vmlinuz
  initrd CentOS/initrd.img
  append ks=http://192.168.56.105/pxeboot/vmhost.cfg load initrd=CentOS/initrd.img devfs=nomount ksdevice=enp0s3
_EOF_

Informationen zum Festlegen der Anaconda-Datei

Die "Anaconda-Datei" ist in mehrere Abschnitte unterteilt, und jeder Abschnitt hat seine festgelegten Einstellungen.

Wie oben erwähnt, wird die zum Zeitpunkt der Installation verwendete "Anaconda-Datei" in "/ root" des RHEL-Systemcomputers abgelegt, sodass Sie sehen können, welche Art von Installation durchgeführt wurde.

Beispiel einer Anaconda-Datei, wenn eine DVD installiert ist (extrahieren)

Beispiel für eine Anaconda-Datei


#version=RHEL8
ignoredisk --only-use=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
# Use graphical install
graphical
# Use CDROM installation media
cdrom
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang ja_JP.UTF-8

# Network information
network  --bootproto=static --device=enp0s3 --ip=192.168.56.105 --netmask=255.255.255.0 --ipv6=auto --activate
network  --bootproto=dhcp --device=enp0s8 --ipv6=auto --activate
network  --hostname=vmpxe01
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream
# Root password
rootpw --iscrypted $6$GT/YYwgPk.wHIkLs$StfR0tXBveOrReUe95oqGuIdqxBCBgtZaPF2lZYWT/ciPVyvYwt9Jwc4lFQ0jC1LvYy6iBS6.zezUm69I2iST1
# Run the Setup Agent on first boot
firstboot --enable
# Do not configure the X Window System
skipx
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Tokyo --isUtc
user --name=centos --password=$6$Z9TXdeskUsRw0rwJ$4p.CPUlkJ.yzkN9i8iJVd1mItlkMgQzVUFPg0YcPh0nsghV5wD7El9wkukt5Cni/iDEdWc49KnIcoNeTHi5QU1 --iscrypted --gecos="vmware"

%packages
@^minimal-environment

%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

Über den Abschnitt der Anaconda-Dateien

Es gibt mehrere Abschnitte, aber mit Ausnahme der Grundeinstellungen müssen sie mit "% [Abschnittsname]" beginnen und mit "% end" enden.

Obwohl es sich um einen Skriptabschnitt handelt, der bei der Installation mit "Kickstart" häufig verwendet wird, werden "Pre" und "Pre-Install" grundsätzlich in Situationen verarbeitet, in denen das Betriebssystem nicht vollständig installiert ist. Muss nicht verwendet werden.

Wenn Sie nach der Installation des Betriebssystems etwas unternehmen möchten, können Sie es daher in der Skriptsitzung "post" schreiben.

Sektion Sektionコマンド Verwenden
Grundlegende Konfiguration Keiner ネットワークやディスク設定などのGrundlegende Konfiguration全般
Paketabschnitt %packages Beschreiben Sie das zu installierende Paket
Abschnitt Add-Ons %addon [addon_name] Einstellen der vom Add-On bereitgestellten Funktionen
Abschnitt mit den Anaconda-Einstellungen %anaconda Aktuelle Einstellungen nur für Kennwortrichtlinien
Pre-Skript-Abschnitt %pre Kickstart-Prozess wird unmittelbar nach dem Lesen der Datei ausgeführt
pre-Skriptabschnitt installieren %pre-install Prozess nach Netzwerkeinstellung ausgeführt
Post-Skript-Abschnitt %post Prozesse, die nach Abschluss der Installation und vor dem ersten Neustart ausgeführt werden

Vorbereitung vor dem Erstellen der Kickstart-Datei

Dieses Mal werde ich eine Anaconda-Datei für "Kickstart" erstellen, vorausgesetzt, dass die folgenden Einstellungen zur obigen Konfiguration hinzugefügt werden.

Die Anaconda-Datei wird unten wie in der TFTP-Startkonfigurationsdatei angegeben erstellt.

Datei Pfad
Anakonda-Datei /pxeboot/vmhost.cfg

Außerdem muss das in der Anaconda-Datei beschriebene Kennwort auch als Hash-Wert beschrieben werden. Generieren Sie den Hash-Wert daher mit der folgenden Methode.

Passwort-Hashing


sudo openssl passwd -6 centos

Wenn Sie eine Kopie der anaconda-Datei von / root erstellt haben, lautet die Berechtigung 0600. Wenn Sie sie mit Kickstart lesen, schlägt sie fehl, da sie nicht gelesen werden kann. Korrigieren Sie sie daher. ..

Ändern Sie die Berechtigungen für Anaconda-Dateien


sudo chmod 644 /pxeboot/vmhost.cfg

Deaktivieren Sie Firewalld und SELinux

Es gibt eine Definition als Grundeinstellung, also deaktivieren Sie sie einfach unten.

Deaktivieren Sie Firewalld und SELinux


selinux --disabled
firewall --disabled

Python 3.8 installieren

Installieren Sie das dnf-Paket und konfigurieren Sie die Verwendung von Python 3.8.

Übrigens kann ich auch pip verwenden.

Python3.8 Installation (Abschnitt Pakete)


python38

Python3.8 Einstellungen (Post-Bereich)


alternatives --set python /usr/bin/python3.8
update-alternatives --install /usr/bin/pip pip /usr/bin/pip3.8 1

Chronikeinstellungen

Es gibt keine Definition zum Festlegen der Chronikadresse, daher würden Sie "sed" im Abschnitt "post" verwenden, um die Datei direkt neu zu schreiben.

Chronikeinstellungen


sed -i -e "s/^pool/#pool/g" \
       -e "/^#pool 2/a \
pool ntp.nict.jp prefer iburst" /etc/chrony.conf

dnf update Das dnf-Update schreibt auch direkt in den Abschnitt post.

dnf_update


dnf -y update

Erstellen einer Kickstart-Datei

Das Folgende ist die Anaconda-Datei, die ich beim Hinzufügen von Kommentaren erstellt habe.

Ich werde es nicht im Detail erklären, aber ich habe einige Parameter für "Kickstart" geändert und hinzugefügt.

Der Trick besteht darin, die Zustimmungsauswahl mit "eula --agreed" wegzulassen, "repo" nicht anzugeben (da das "AppStream" -Repository zum Zeitpunkt der "Kickstart" -Installation angegeben ist) und am Ende neu zu starten. Ist es "Reboot" zu setzen?

Beispiel einer Anaconda-Datei für Kickstart (Auszug)

Beispiel einer Anaconda-Datei für Kickstart


##################################################################
#Grundabschnitt
##################################################################
#version=RHEL8
zerombr
ignoredisk --only-use=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel

#Kickstart-Installation
text
url --url=http://192.168.56.105/pxeboot/repo/CentOS/8/cdrom/
eula --agreed
reboot

# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang ja_JP.UTF-8

# Network information
network  --bootproto=static --device=enp0s3 --ip=192.168.56.131 --netmask=255.255.255.0 --nodefroute --noipv6 --onboot=on --activate
network  --bootproto=dhcp --device=enp0s8 --noipv6 --onboot=on --activate
network  --hostname=vmhost

# Root password
rootpw --iscrypted $6$BQJphupSd1P6pREf$RDUQt69lV0np1OZpZ7I9MmpkYzPV7QMJ.Pz5TOKsXusEF.qmnmrcqOF6D5LXfLTciLLB2QIEyXriDhzyMLluv/
# Run the Setup Agent on first boot
firstboot --disable
# Do not configure the X Window System
skipx
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Tokyo --isUtc
user --name=centos --password=$6$BQJphupSd1P6pREf$RDUQt69lV0np1OZpZ7I9MmpkYzPV7QMJ.Pz5TOKsXusEF.qmnmrcqOF6D5LXfLTciLLB2QIEyXriDhzyMLluv/ --iscrypted --gecos="centos"

#Deaktivieren Sie Firewalld, SELinux
selinux --disabled
firewall --disabled

##################################################################
# %Paketabschnitt
##################################################################
%packages
@^minimal-environment

# Python3.8 Installation
python38

%end

##################################################################
# %Addon-Abschnitt
##################################################################
%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

##################################################################
# %Anakonda Abschnitt
##################################################################
%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

##################################################################
# %Post-Abschnitt (anfängliche Einstellungen müssen nach der Installation vorgenommen werden)
##################################################################
#Die Nachbearbeitung wird protokolliert
%post --log=/root/anaconda-post.log --erroronfail

#NTP-Einstellungen(chronyd)
sed -i -e "s/^pool/#pool/g" \
       -e "/^#pool 2/a \
pool ntp.nict.jp prefer iburst" /etc/chrony.conf

#Python-Einstellungen
alternatives --set python /usr/bin/python3.8
update-alternatives --install /usr/bin/pip pip /usr/bin/pip3.8 1

# dnf update
dnf -y update

%end

Einstellungen für Maschinen, die einer automatischen Installation unterliegen

Grundsätzlich sind keine Einstellungen erforderlich, wenn die automatisch zu installierende Maschine "PXE-gebootet" werden kann.

Wenn das Betriebssystem jedoch bereits auf der Installationsdiskette installiert ist, ändern Sie die Auswahl der Startgeräte verschiedener BIOS so, dass der PXE-Start an erster Stelle steht.

Im Fall von "VirtualBox", wenn der virtuelle Speicher leer ist, gibt es kein Problem, wenn Sie bestätigen, dass "Netzwerk" in der "Startreihenfolge" wie unten gezeigt aktiviert ist.

01_boot.jpg

Automatische Installation

Die Netzwerkinstallation beginnt mit dem Einschalten der Maschine, die automatisch installiert werden soll.

Alles was Sie tun müssen, ist zu warten, also haben Sie etwas Geduld.

Zusammenfassung

In letzter Zeit hat die Anzahl der Cloud-Umgebungen wie AWS zugenommen, sodass die Chancen für die Verwendung von "Kickstart" sinken. Da es sich jedoch um eine Funktion handelt, die beim Erstellen lokaler Server usw. weiterhin verwendet werden kann, woran sollte ich mich als eine der Optionen erinnern? Könnte nützlich sein.

Recommended Posts

Netzwerkinstallation CentOS 8 mit Kickstart.
Installieren Sie MariaDB (CentOS 8)
[CentOS] Installieren Sie Apache-Loggen
Installieren Sie NextCloud unter CentOS 7 mit Alibaba Cloud ECS
Installieren Sie Java mit Ansible
Installieren Sie Golang unter CentOS 8
Installieren Sie OpenJDK 8 mit RPM
Installieren Sie Neo4j 4.1.3 unter centOS
[CentOS7] Installiere aws cli
Installieren Sie Vertica 10.0 unter CentOS 6.10
Verwenden von CentOS mit LXD
Installieren Sie Gradle auf ubuntu16.04
Installieren Sie PostgreSQL 12 auf Centos8
Installieren Sie Python 3 unter CentOS 7
Installieren Sie kuromoji unter CentOS7
Baue Growai mit Centos7
Installieren Sie PostGIS 2.5.5 unter CentOS7
Installieren Sie jpndistrict unter CentOS 7
Installieren Sie Redmine 4.1.1 unter CentOS 7
Smokeping Installation unter CentOS7
Installieren Sie PostgreSQL 13 unter CentOS 7.5
Verstopft mit Express npm Installation
Erstellen Sie mit Centos7 ein Softether-VPN.
Installieren Sie Java 7 mit Homebrew (Fass)
Installieren Sie Oracle JDK 8 mit Ansible
Hinweis: Installieren Sie nginx aus dem offiziellen Repository unter CentOS 8 mit dnf
Installieren Sie OpenFOAM v2006 unter CentOS
Installieren Sie Jenkins auf Dockers CentOS
Installieren Sie Apache unter CentOS auf VirtualBox
Bereiten Sie die Python3-Umgebung mit CentOS7 vor
Installieren Sie Ruby 2.7 unter CentOS 7 (SCL)
Installieren Sie Ruby mit pacman auf MSYS2
Installieren Sie Amazon Corretto JDK mit SDKMAN!
Installieren Sie Java mit Ubuntu 16.04 Docker
Installieren Sie Java und Tomcat mit Ansible
Installieren Sie Ruby 2.5 unter CentOS 7 mit SCL
Ich kann Lombok nicht mit Gradle installieren.
Java Open JDK 8 unter CentOS 7 installieren
Netzwerkeinstellungen für den CentOS8 USB LAN Adapter
mysql2 kann mit der Bundle-Installation nicht installiert werden
WordPress mit Docker Compose unter CentOS 8
So installieren Sie MariaDB 10.4 unter CentOS 8
Installieren Sie Apache 2.4.46 von der Quelle unter CentOS 7
Schritte zum Installieren von devtoolset-6 unter CentOS 7
Installieren Sie Ruby unter Ubuntu 20.04 mit rbenv
Installieren Sie Java 9 unter Windows 10 und CentOS 7
Mit CodeDeploy endet die Installation nicht endlos
Wechseln Sie mit CentOS7-Serie + JDK-9.0.1 + JDK1.8.0 + Alternativen