Installation automatique CentOS

De Wiki doc

Tout comme l'installeur de Debian, celui de CentOS et de ses dérivés (appelé Anaconda) permet l'automatisation des étapes d'installation. Kickstart est tout de même bien plus propre que Preseed selon moi (vous en jugerez par vous même à la lecture de celui-ci).

Concepts

Afin de réaliser cette automatisation, Nous allons utiliser la méthode Kickstart, qui comme Preseed, est un simple fichier texte. Il contient donc les réponses aux questions posées par l'installeur afin que ces dernières ne soient pas redemandées lors de la mise en place du système.

Je décrirai la méthode à effectuée via le cédérom d'installation ainsi que via un amorçage PXE.

Préparation

Contenu du fichier Kickstart

À l'issue d'une installation standard via le cédérom, Anaconda, génère un fichier Kickstart nommé anaconda-ks.cfg dans le /root du système fraîchement créé. Il suffit donc de récupérer ce fichier pour refaire la même installation automatiquement. Je trouve le concept génial car si vous choisissez de faire un partitionnement complexe par exemple, vous pourrez simplement le déployer sur un nombre de machine conséquent ou simplement sauvegarder votre configuration pour une future installation. De plus, avec ce fichier, vous êtes certain que l'installation automatique répond à vos besoins plutôt que de copier/coller mon fichier ci-dessous. Là au moins, vous savez le résultat qu'il produit, sans surprises.

Voici les éléments qui me sont utiles pour une installation basique d'un Linux CentOS sans interface graphique:

Création du répertoire de travail sur le serveur WEB

mkdir /srv/tftp/scripts/kickstart

Création du fichier Kickstart

vim /srv/tftp/scripts/kickstart/kickstart.cfg

<source lang="bash">

  1. Version=CentOS7
  1. Hashage des mots de passes dans /etc/shadow

auth --enableshadow --passalgo=sha512

  1. Utiliser le Cédérom pour l'installation
  2. cdrom
  3. Utiliser un dépôt sur le réseau

url --url="http://192.168.183.254/images/centos7/"

  1. Installer plutôt que de mettre à jour

install

  1. Lancer l'installeur au démarrage

firstboot --enable ignoredisk --only-use=sda

  1. Mappage clavier

keyboard fr-latin9

  1. Langage de la console

lang fr_FR.UTF-8

  1. Informations réseau

network --bootproto=dhcp --device=ens33 --ipv6=auto --activate network --hostname=localhost.localdomain

  1. Mot de passe root

rootpw --iscrypted $6$/hFmDFvl$UPX0S.K9jG6M17jJ0sN10t3F4sDu35lLHAqCZImgKeJ/vUbo7ZR2FpRc0dtMl/QU2xg2Cwbkt8178h.vdGTHP/

  1. Fuseau horaire

timezone Europe/Paris --isUtc --nontp user --name=yohan --password $6$aXGRXtMP$6O/DVNVy19HOtAM8b0EkXpaiSV91SmS0VOq/eYWnxUJ4D/ltvwG/kiV.ebNOrwcliFtmJo8/8U.YkzxsBk5Zt/ --iscrypted --gecos="Yohan Charbi"

  1. Chargeur d'amorçage

bootloader --location=mbr --boot-drive=sda autopart --type=lvm

  1. Nettoyage des informations de la partition
  2. clearpart --none --initlabel

clearpart --all --initlabel

%packages @core %end

  1. Éteindre la machine après l'installation

poweroff </source>

Mise à disposition

Pour cette partie il est nécessaire d'avoir en votre possession un support d'installation téléchargeable ici.

Vous pouvez utiliser la commande suivante pour avoir le média que j'ai utilisé pour cette documentation

wget http://fr.mirror.babylon.network/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso -P /tmp/

Via le cédérom

  • Pour le récupérer depuis le réseau. Au démarrage de l'installeur, au niveau du menu, appuyez sur <source lang="bash" inline><tab></source> et ajoutez l'option suivante: <source lang="bash" inline>ks=http://192.168.181.11/scripts/kickstart/kickstart.cfg</source> avant de valider l'entrée pour commencer l'installation.
  • Pour une indépendance du réseau, via une clé USB, il faut:
    • Mettre le fichier kickstart.cfg sur une clé USB
    • Brancher la clé (ou le CD) d'installation et la clé contenant le fichier Kickstart
    • Démarrer une première fois normalement sur l'installeur et faire <source lang="bash" inline><ctrl>+<alt>+<F2></source> pour entrer dans un shell bash et identifier le nom de la clé Kickstart avec un <source lang="bash" inline>lsblk</source>
    • Redémarrer et utiliser <source lang="bash" inline><tab></source> dans le menu pour ajouter l'option suivante: <source lang="bash" inline>ks=hd:sdc:/kickstart.cfg</source> (sdc étant le nom de la première partition de ma clé - gnome-disks ne s’embarrasse pas avec les sdc1,2...) et valider l'entrée pour installer CentOS avec vos paramètres pré-définis

Via PXE

Je part du principe que votre serveur PXE est déjà fonctionnel.

ATTENTION

Avec cette méthode, la machine à installer doit avoir au minimum 1536mo de RAM.

Montage du cédérom d'installation de CentOS pour en extraire les outils nécessaires au bon fonctionnement de l'installeur

mount /tmp/CentOS-7-x86_64-Minimal-1708.iso /mnt

Création des répertoires de travail

mkdir -p /srv/tftp/images/centos7 /srv/tftp/noyaux/centos7/pxeboot

Copie du noyau et de l'initrd

cp /mnt/images/pxeboot/vmlinuz /mnt/images/pxeboot/initrd.img /srv/tftp/noyaux/centos7/pxeboot/

Ajouter l'entrée correspondante dans le menu PXE

vim /srv/tftp/pxelinux.cfg/default

<source lang="bash"> LABEL Installation_CentOS_auto MENU LABEL Installer CentOS 7 auto KERNEL http://192.168.183.254/noyaux/centos7/pxeboot/vmlinuz quiet APPEND vga=normal initrd=http://192.168.183.254/noyaux/centos7/pxeboot/initrd.img ks=http://192.168.183.254/scripts/kickstart/kickstart.cfg </source> Copie des éléments de l'installeur

cp -ra /mnt/LiveOS/ /mnt/.treeinfo /mnt/repodata/ /mnt/Packages/ /srv/tftp/images/centos7/

Explication des données copiées:

  • /mnt/LiveOS/: Copie de l'image squashfs de l'installeur
  • /mnt/.treeinfo: Copie du fichier d'information sur la distribution
  • /mnt/repodata/: Copie des informations sur le dépôt
  • /mnt/Packages/: Copie du dépôt du cédérom

Sources