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.
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.
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 |
Le serveur PXE est une condition préalable qu'il ait déjà été construit.
** ・ Procédure côté serveur PXE **
** - Procédure sur la machine pour l'installation automatique **
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.
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
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
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.
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_
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
#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
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 |
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.
centos
.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
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
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
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
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
##################################################################
#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
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.
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é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