RedHat Installation avec Kickstart

Afin de pou­voir auto­ma­ti­ser l’installation de RHEL (Redhat Entre­prise Linux) et de ses déri­vés, nous pou­vons écrire des fichiers kicks­tart qui per­mettent de dérou­ler une ins­tal­la­tion sans inter­ac­tion uti­li­sa­teur. Il existe plu­sieurs façon de spé­ci­fier ce fameux fichier de réponse, soit en modi­fiant direc­te­ment le fichier ISO, soit en le spé­ci­fiant dans le lan­ce­ment de l’installation.

Spécification du fichier kickstart lors de l’installation

Intégration du kickstart dans l’ISO

Dans un pre­mier temps, nous allons mon­ter l’i­mage ISO de l’ins­tal­la­tion de la dis­tri­bu­tion RHEL 9.1 sur le point de mon­tage “/mnt” de notre envi­ron­ne­ment de tra­vail. L’op­tion ‑o per­met d’in­di­quer qu’il faut trai­ter l’i­mage ISO comme s’il était un péri­phé­rique de sto­ckage phy­sique

mount -o loop Rhel-9.1.iso /mnt/
Bash root com­mand

On créé ensuite notre réper­toire de tra­vail dans lequel on ajou­te­ra et modi­fie­rons nos fichiers.

mkdir redhat-ks
Bash root com­mand

On uti­lise main­te­nant la com­mande rsync afin de pou­voir copier les don­nées de notre ISO dans notre dos­sier de tra­vail. Atten­tion, si vous uti­li­sez la com­mande cp, elle pro­vo­que­ra une erreur lors de l’i­ni­tia­li­sa­tion des repo­si­to­ry dans notre ins­tal­la­tion auto­ma­tique

rsync -av /mnt/. redhat-ks/
Bash root com­mand

On ajoute dans le dos­sier d’ins­tal­la­tion notre fichier kicks­tart qui va conte­nir toutes les ins­truc­tions. Celui per­met une ins­tal­la­tion mini­male sans créa­tion d’u­ti­li­sa­teur et la per­mis­sion de connexion en SSH direc­te­ment en root.

vim redhat-ks/ks.cfg
Bash root com­mand
File content
# 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 modi­fie le fichier isolinux.cfg dans lequel on va modi­fier le bloc sui­vant avec les para­mètres qui per­mettent de lui indi­quer ou se trouve notre fichier ks.cfg (kicks­tart) ain­si que l’emplacement du réfé­ren­tiel d’ins­tal­la­tion de la dis­tri­bu­tion, qui est dans notre cas, le cdrom.

vim redhat-ks/isolinux/isolinux.cfg
Bash root com­mand
File content
label 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éper­toire de tra­vail qui contient tous nos fichiers ajou­tés et modi­fiés

cd redhat-ks
Bash root com­mand

On génère notre nou­vel ISO amor­çable qui va main­te­nant conte­nir notre fichier kicks­tart (ks.cfg) ain­si que la modi­fi­ca­tion 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 com­mand