Afin de pouvoir automatiser l’installation de RHEL (Redhat Entreprise Linux) et de ses dérivés, nous pouvons écrire des fichiers kickstart qui permettent de dérouler une installation sans interaction utilisateur. Il existe plusieurs façon de spécifier ce fameux fichier de réponse, soit en modifiant directement le fichier ISO, soit en le spécifiant dans le lancement de l’installation.
Spécification du fichier kickstart lors de l’installation
Intégration du kickstart dans l’ISO
Dans un premier temps, nous allons monter l’image ISO de l’installation de la distribution RHEL 9.1 sur le point de montage “/mnt” de notre environnement de travail. L’option ‑o permet d’indiquer qu’il faut traiter l’image ISO comme s’il était un périphérique de stockage physique
mount -o loop Rhel-9.1.iso /mnt/
Bash root commandOn créé ensuite notre répertoire de travail dans lequel on ajoutera et modifierons nos fichiers.
mkdir redhat-ks
Bash root commandOn utilise maintenant la commande rsync afin de pouvoir copier les données de notre ISO dans notre dossier de travail. Attention, si vous utilisez la commande cp, elle provoquera une erreur lors de l’initialisation des repository dans notre installation automatique
rsync -av /mnt/. redhat-ks/
Bash root commandOn ajoute dans le dossier d’installation notre fichier kickstart qui va contenir toutes les instructions. Celui permet une installation minimale sans création d’utilisateur et la permission de connexion en SSH directement en root.
vim redhat-ks/ks.cfg
Bash root command# Generated by Anaconda 34.25.1.14
# Generated by pykickstart v3.32
#version=RHEL9
# Use graphical install
graphical
repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
# Keyboard layouts
keyboard --xlayouts='fr (oss)'
# System language
lang fr_FR.UTF-8
# Use CDROM installation media
cdrom
%packages
@^minimal-environment
@guest-agents
@standard
%end
# Run the Setup Agent on first boot
firstboot --enable
# Generated using Blivet version 3.4.0
ignoredisk --only-use=nvme0n1
autopart
# Partition clearing information
clearpart --none --initlabel
# System timezone
timezone Europe/Paris --utc
# Network
network --bootproto=dhcp
# Root password
rootpw --iscrypted --allow-ssh $6$.TTcviwympgQg/5I$/Fu00U1UQKIG7FMzV8c69r2FZ9ZupO7jeIm.yoBNpnx43gc50jFtI0Wmg32594EU7nb/44Q3Gh430d2SwQqyj/
# Repos
%post
mount -o loop /dev/sr0 /mnt/
mkdir /RPMs
cp -R /mnt/AppStream/ /RPMs/
cp -R /mnt/BaseOS/ /RPMs/
echo "[AppStream]" >> /etc/yum.repos.d/AppStream.repo
echo "name = AppStream" >> /etc/yum.repos.d/AppStream.repo
echo "baseurl = file:///RPMs/AppStream" >> /etc/yum.repos.d/AppStream.repo
echo "enabled = 1" >> /etc/yum.repos.d/AppStream.repo
echo "gpgcheck = 0" >> /etc/yum.repos.d/AppStream.repo
echo "[BaseOS]" >> /etc/yum.repos.d/BaseOS.repo
echo "name = BaseOS" >> /etc/yum.repos.d/BaseOS.repo
echo "baseurl = file:///RPMs/BaseOS" >> /etc/yum.repos.d/BaseOS.repo
echo "enabled = 1" >> /etc/yum.repos.d/BaseOS.repo
echo "gpgcheck = 0" >> /etc/yum.repos.d/BaseOS.repo
%end
On modifie le fichier isolinux.cfg dans lequel on va modifier le bloc suivant avec les paramètres qui permettent de lui indiquer ou se trouve notre fichier ks.cfg (kickstart) ainsi que l’emplacement du référentiel d’installation de la distribution, qui est dans notre cas, le cdrom.
vim redhat-ks/isolinux/isolinux.cfg
Bash root commandlabel linux
menu label ^Install Red Hat Enterprise Linux 9.1
kernel vmlinuz
append initrd=initrd.img inst.ks=cdrom:/ks.cfg inst.repo=cdrom
On se rend dans répertoire de travail qui contient tous nos fichiers ajoutés et modifiés
cd redhat-ks
Bash root commandOn génère notre nouvel ISO amorçable qui va maintenant contenir notre fichier kickstart (ks.cfg) ainsi que la modification de notre fichier isolinux.cfg
genisoimage -U -r -v -T -J -joliet-long -V "RHEL-9.1" -volset "RHEL-9.1" -A "RHEL-9.1" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -o ../redhat-ks.iso .
Bash root command