Réseau installer CentOS 8 avec Kickstart.

introduction

Auparavant, j'avais publié un article sur l'installation réseau en utilisant la «fonction d'installation automatique» d'Ubuntu, mais comme c'est un gros problème, je vais laisser sur «Kickstart», qui est souvent utilisé dans les systèmes RHEL.

Veuillez vous référer à l'article suivant pour l'installation réseau en utilisant la «fonction d'installation automatique» d'Ubuntu Server 20.04.

En outre, cet article est une continuation de l'article suivant. Veuillez aller après la construction du serveur PXE dans l'article suivant.

Qu'est-ce que Kickstart

Il s'agit d'une méthode d'installation réseau souvent utilisée dans le système RHEL.

Je pense que la fonction a été implémentée depuis l'introduction de Fedora Core, donc je pense qu'elle est utilisée dans le monde depuis plus de 15 ans.

Le Red Hat Manual décrit également le format et les paramètres en détail, donc les réseaux d'autres systèmes d'exploitation Je pense que c'est plus facile d'accès que d'installer.

Constitution

J'ai créé une machine virtuelle avec la configuration suivante dans VirtualBox.

Pour Créer un serveur PXE, reportez-vous à l'article lié.

Ci-dessous, l'opération côté serveur PXE est l'opération sur CentOS8 sur VirtualBox.

La taille de la mémoire est d'au moins 2 Go selon CentOS 8.2.2004 Release Notes Puisqu'il est nécessaire, ce sera 2 Go.

** - Configuration de la machine pour une installation automatique **

Constitution Type
CPU 1 vCPU
Taille mémoire 2048 MB
espace de rangement 16.00 GB
Réseau 1 Adaptateur hôte uniquement
Réseau 2 NAT

** ・ Structure du répertoire du serveur PXE **

annuaire chemin
Annuaire TFTP /tftpboot
Répertoire HTTP /pxeboot

** ・ Structure d'adresse **

Cible adresse
Serveur PXE 192.168.56.105
Machines soumises à une installation automatique 192.168.56.131

Flux de construction

Le serveur PXE est une condition préalable qu'il ait déjà été construit.

** ・ Procédure côté serveur PXE **

  1. Montage du fichier ISO CentOS 8.2.2004
  2. Copie de l'image du noyau CentOS 8.2.2004
  3. Créez le fichier de configuration de démarrage TFTP
  4. Créez un répertoire pour l'installation automatique
  5. Créez un fichier anaconda pour Kickstart

** - Procédure sur la machine pour l'installation automatique **

  1. Paramètres de la machine à installer automatiquement
  2. Installation automatique

Installation par Kickstart

Kickstart sera configuré selon les paramètres décrits dans le fichier ʻanaconda`.

Si le fichier ʻanacondaest un système RHEL, les paramètres au moment de l'installation initiale sont décrits sous/ root, donc référez-vous au fichier / root / anaconda-ks.cfg et paramétrez pour Kickstart`. Je vais créer un fichier.

Montage de fichier ISO CentOS 8.2.2004

Cette fois, vous n'avez pas besoin de transférer l'image ISO directement sur le serveur cible d'installation comme Installation du serveur Ubuntu, donc ISO avec serveur PXE Montez-le seulement.

Téléchargez CentOS 8.2.2004 à partir du site CentOS, et téléchargez le fichier ISO (CentOS-8.2) à partir de" Périphérique "->" Lecteur optique "du serveur PXE. Sélectionnez .2004-x86_64-dvd1.iso).

Créez un répertoire avec la destination de montage comme / pxeboot / repo / CentOS / 8 / cdrom afin que vous puissiez le spécifier plus tard avec Kickstart.

Création d'un répertoire pour le montage d'image ISO


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

Copie de l'image du noyau CentOS 8.2.2004

Montez le fichier ISO que vous venez de charger et obtenez l'image du noyau CentOS 8.2.2004.

Créer un répertoire de stockage d'images du noyau


sudo mkdir /tftpboot/CentOS

Monture d'image ISO


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

Copie d'image du noyau


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

À propos du fichier de configuration de démarrage TFTP

Comme je l'ai déjà présenté, le nom du fichier de configuration de démarrage à acquérir lors du démarrage de PXE est décidé, et les règles sont les suivantes.

Par exemple, si vous stockez un fichier avec une adresse MAC, vous pouvez corriger le fichier de configuration de démarrage pour chaque hôte, afin de pouvoir spécifier une définition spécifique à chaque hôte.

De plus, selon la manière dont vous écrivez les paramètres dans le fichier de configuration de démarrage, vous pouvez laisser l'utilisateur sélectionner le fichier du système d'exploitation ou l'image du système d'exploitation à lire au moment du démarrage, vous pouvez donc entrer plusieurs définitions de démarrage dans default et les sélectionner.

Création d'un fichier de configuration de démarrage TFTP

Cette fois, la définition d'installation de Kickstart est décrite dans le fichier d'adresse MAC de la machine à installer.

Le nom de l'interface et l'adresse MAC seront basés sur les hypothèses suivantes, veuillez donc les lire comme il convient en fonction de votre propre environnement.

interface Adresse Mac
enp0s3 08:00:27:1d:57:34

Depuis cette fois, il a été créé avec VirtualBox, l'interface est ʻenp0s3`, mais le nom de l'interface change en fonction de l'environnement, donc veuillez vérifier le nom de l'interface en l'installant à l'avance.

/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_

À propos de la configuration du fichier Anaconda

Le «fichier anaconda» est divisé en plusieurs sections, et chaque section a les paramètres spécifiés.

Comme mentionné ci-dessus, le / root de la machine système RHEL contient le fichier anaconda utilisé au moment de l'installation, vous pouvez donc voir quel type d'installation vous avez effectué.

Exemple de fichier Anaconda lorsque le DVD est installé (extrait)

Exemple de fichier Anaconda


#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

À propos de la section des fichiers Anaconda

Il existe plusieurs sections, mais à l'exception des paramètres de base, elles doivent commencer par % [nom de la section] et se terminer par % end.

De plus, bien qu'il s'agisse d'une section de script qui sera souvent utilisée lors de l'installation avec Kickstart, pre et pre-install sont essentiellement traités dans le cas où le système d'exploitation n'est pas complètement installé. N'a pas besoin d'être utilisé.

Par conséquent, si vous voulez faire quelque chose après l'installation du système d'exploitation, vous pouvez l'écrire dans la session de script post.

section sectionコマンド Utilisation
configuration de base Aucun ネットワークやディスク設定などのconfiguration de base全般
Section package %packages Décrivez le package à installer
Section des modules complémentaires %addon [addon_name] Configuration des fonctions fournies par l'add-on
Section des paramètres d'Anaconda %anaconda Paramètres actuels uniquement pour la politique de mot de passe
section pré-script %pre Processus Kickstart exécuté immédiatement après la lecture du fichier
pre-section de script d'installation %pre-install Processus exécuté après la configuration du réseau
section post-script %post Processus qui sont exécutés une fois l'installation terminée et avant le premier redémarrage

Préparation avant de créer un fichier Kickstart

Cette fois, je vais créer un fichier Anaconda pour Kickstart en supposant que les paramètres suivants seront ajoutés à la configuration ci-dessus.

--Désactivez firewalld et SELinux. --Installez Python 3.8. --Chrony interrogera le serveur NICT. --Mettez à jour le package avec la mise à jour dnf.

Le fichier Anaconda est créé ci-dessous comme spécifié dans le fichier de configuration de démarrage TFTP.

Fichier chemin
fichier anaconda /pxeboot/vmhost.cfg

De plus, le mot de passe décrit dans le fichier ʻanaconda` doit également être décrit comme une valeur de hachage, donc générez une valeur de hachage par la méthode suivante.

Hachage de mot de passe


sudo openssl passwd -6 centos

Si vous avez créé une copie du fichier / root ʻanaconda, la permission est 0600, et quand vous le lisez avec Kickstart`, il échouera car il ne peut pas être lu, donc corrigez-le. ..

Modifier les autorisations pour les fichiers anaconda


sudo chmod 644 /pxeboot/vmhost.cfg

Désactiver firewalld et SELinux

Il existe une définition comme paramètre de base, alors désactivez-la ci-dessous.

Désactiver firewalld et SELinux


selinux --disabled
firewall --disabled

Installer Python 3.8

Installez le package dnf et configurez l'utilisation de Python 3.8.

En passant, je pourrai également utiliser pip.

Python3.8 Installation (section Packages)


python38

Python3.8 Paramètres (section Message)


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

paramètres chrony

Il n'y a pas de définition pour définir l'adresse chrony, donc vous utiliseriez sed dans la section post pour réécrire le fichier directement.

paramètres chrony


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

dnf update La dnf update écrit également directement dans la section post.

dnf_update


dnf -y update

Créer un fichier Kickstart

Ce qui suit est le fichier Anaconda que j'ai créé lors de l'ajout de commentaires.

Je ne vais pas l'expliquer en détail, mais j'ai modifié et ajouté quelques paramètres pour Kickstart.

L'astuce est d'omettre la sélection de consentement avec ʻeula --agreed, de ne pas spécifier repo (car le référentiel ʻAppStream est spécifié au moment de l'installation de Kickstart), et enfin de redémarrer. Est-ce pour définir reboot?

Exemple de fichier Anaconda pour Kickstart (extrait)

Exemple de fichier Anaconda pour Kickstart


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

#Installation Kickstart
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"

#désactiver firewalld, SELinux
selinux --disabled
firewall --disabled

##################################################################
# %section package
##################################################################
%packages
@^minimal-environment

# Python3.8 installation
python38

%end

##################################################################
# %section addon
##################################################################
%addon com_redhat_kdump --disable --reserve-mb='auto'

%end

##################################################################
# %section anaconda
##################################################################
%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

##################################################################
# %section post (réglages initiaux à effectuer après l'installation)
##################################################################
#Le post-traitement est enregistré
%post --log=/root/anaconda-post.log --erroronfail

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

#Paramètres Python
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

Paramètres des machines soumises à une installation automatique

Fondamentalement, aucun paramètre n'est requis si la machine à installer automatiquement peut être «démarrée PXE».

Cependant, si le système d'exploitation est déjà installé sur le disque d'installation, modifiez la sélection de périphérique de démarrage de divers BIOS afin que le démarrage PXE soit le premier.

Dans le cas de «VirtualBox», si le stockage virtuel est vide, il n'y a pas de problème si vous confirmez que «Réseau» est coché dans «l'ordre de démarrage» comme indiqué ci-dessous.

01_boot.jpg

Installation automatique

L'installation réseau commence lorsque l'alimentation de la machine à installer automatiquement est mise sous tension.

Tout ce que vous avez à faire est d'attendre, alors soyez patient.

Résumé

Récemment, le nombre d'environnements cloud tels qu'AWS a augmenté, donc les chances d'utiliser Kickstart diminuent, mais comme il s'agit d'une fonction qui peut encore être utilisée lors de la création de serveurs sur site, etc., que dois-je retenir comme l'une des options? Peut être utile.

Recommended Posts

Réseau installer CentOS 8 avec Kickstart.
Installez MariaDB (CentOS 8)
[CentOS] Installez apache-loggen
Installez NextCloud sur CentOS 7 avec Alibaba Cloud ECS
Installez Java avec Ansible
Installez Golang sur CentOS 8
Installez OpenJDK 8 avec RPM
Installez Neo4j 4.1.3 sur centOS
[CentOS7] Installez aws cli
Installez Vertica 10.0 sur CentOS 6.10
Utilisation de CentOS avec LXD
Installez Gradle sur ubuntu16.04
Installez PostgreSQL 12 sur Centos8
Installez Python 3 sur CentOS 7
Installez kuromoji sur CentOS7
Construisez Growai avec Centos7
Installez PostGIS 2.5.5 sur CentOS7
Installez jpndistrict sur CentOS 7
Installez Redmine 4.1.1 sur CentOS 7
Installation de Smokeping sur CentOS7
Installez PostgreSQL 13 sur CentOS 7.5
Obstrué par l'installation Express npm
Créez un VPN softether avec Centos7.
Installez Java 7 avec Homebrew (cask)
Installez Oracle JDK 8 avec Ansible
Remarque: installez nginx à partir du référentiel officiel sur CentOS 8 avec dnf
Installez OpenFOAM v2006 sur CentOS
Installez Jenkins sur CentOS de Docker
Installez Apache sur CentOS sur VirtualBox
Préparer l'environnement Python3 avec CentOS7
Installez Ruby 2.7 sur CentOS 7 (SCL)
Installez Ruby sur MSYS2 avec pacman
Installez Amazon Corretto JDK avec SDKMAN!
Installer Java avec Docker basé sur Ubuntu 16.04
Installez Java et Tomcat avec Ansible
Installez Ruby 2.5 sur CentOS 7 en utilisant SCL
Je ne peux pas installer lombok avec Gradle.
Installation de Java Open JDK 8 sur CentOS 7
Paramètres réseau pour l'adaptateur LAN USB CentOS8
mysql2 ne s'installe pas avec l'installation du bundle
WordPress avec Docker Compose sur CentOS 8
Comment installer MariaDB 10.4 sur CentOS 8
Installez apache 2.4.46 à partir des sources sur CentOS 7
Étapes pour installer devtoolset-6 sur CentOS 7
Installez ruby sur Ubuntu 20.04 avec rbenv
Installez Java 9 sur Windows 10 et CentOS 7
Avec CodeDeploy, l'installation ne se termine pas indéfiniment
Commutateur avec la série CentOS7 + JDK-9.0.1 + JDK1.8.0 + alternatives