Oracle Linux 8 – Installation via kickstart

Oracle Linux 8 – Installation via kickstart

1 mars 2021 0 Par Mairien Anthony

Installation automatique d’une Oracle Linux via un fichier kickstart.

Après avoir fait un article sur l’installation automatisée d’un Windows Server 2019 via fichier autounattend.xml, c’est au tour du côté GNU/Linux avec une Oracle Linux 8 et son fichier kickstart !

Comme d’habitude, nous allons expliquer un peu tout ça…

I) Oracle Linux, pourquoi ?

Et bien pour pas grand chose en réalité ! Je pensais partir sur une Debian car j’ai toujours été plutôt #TeamDebian, mais avec la débacle sur CentOS qui est encore assez récente, j’ai eut vent de cette distribution que je ne connaissais pas, et donc je me suis dit autant partir sur celle-ci, comme ça je fais d’une pierre deux coups: je découvre Oracle Linux et j’apprends aussi la création de fichiers kickstart.

Comment ai-je connu cette distribution ? Et bien, pour ceux qui ne le savent pas, il y a ce très bon article d’Adrien D. sur son site Linuxtricks.fr qui explique plutôt bien la situation.

Pour faire court, beaucoup d’utilisateurs ont décidés de se tourner vers Oracle Linux/Rocky Linux/Autre depuis certains déboires avec CentOS. Je ne vais pas rentrer dans les détails ici, ce n’est pas le but.

Toujours est-il qu’Oracle Linux n’est donc ni plus ni moins qu’une CentOS Like, c’est-à-dire un clone complet de RHEL, le tout maintenu par l’équipe de chez Oracle. Cette distribution qui n’était pas aussi connue qu’une CentOS à l’époque a pourtant près de 15 ans !

II) Et le fichier kickstart, c’est quoi au juste ?

Un fichier kickstart est donc un fichier texte contenant divers mots-clés permettant de réaliser une installation automatique. Ici, pas de fichier XML à rallonge, que du lisible !

On rattache donc ce fichier à notre machine et au moment de l’installation, celle-ci se fait de manière automatique. Pour informations, « kickstart » est l’utilitaire de chez Red Hat, bien qu’utilisable sur d’autres distributions, on notera tout de même l’utilitaire « preseed » chez Debian ou encore « autoyast » chez Suse.

Maintenant que l’on en sait un peu plus, allons-y !

III) Aperçu d’un fichier kickstart d’une Oracle Linux

Pour ce lab, j’utiliserais comme à mon habitude VMware Workstation et je crééerai une VM Oracle Linux en version 8, avec :

  • Une IP fixe en 192.168.1.50/24 ;
  • Un disque de 50Go ;
  • 4Go de RAM ;
  • 2 processeurs virtuels ;

Rien de très extravagant donc, mais étant donné que dans ce même fichier nous allons déjà setup l’IP ainsi que configurer le partitionnement, ce sont des informations à savoir.

Pour la création du fichier, on utilisera donc un simple éditeur de texte, pour ma part ce sera VSCodium. Comme nom de fichier, nommez-le simplement kickstart et le tour est joué !

Pour débuter la création du script, nous avons deux façons de procéder :

  • Soit installer premièrement une Oracle Linux 8 manuellement, puis récupérer un « template » de fichier kickstart créé et situé dans /root/anaconda-ks.cfg ;
  • Soit le créer manuellement, ligne par ligne ;

Voici un aperçu de ce fichier kickstart créé automatiquement par l’utilitaire Anaconda, qui est donc l’installateur système chez RedHat, histoire de voir un peu à quoi nous avons faire. J’ai donc d’abord installé mon Oracle à la main, et voici ce qu’Anaconda m’a donné ensuite :

Je vais le commenter de manière très rapide, mais ce qu’on peut retenir jusqu’ici :

  • L’installation se fait de manière graphique, via les dépôts du CD-Rom ;
  • On installe le groupe de paquets graphical-server-environment, ainsi que les kexec-tools ;
  • On choisi la langue du clavier et la langue du système ;
  • On passe le réseau en DHCP, sur l’interface ens160, et on renseigne ensuite un nom d’hôte ;
  • On utilise le seul disque disponible, nvme0n1 et on fait un partitionnement automatique ;
  • On choisi la timezone ;
  • On spécifie le mot de passe root (il apparaît en chiffré bien-entendu) ;
  • On active Kdump ;
  • On spécifie les policies concernant les mots de passe pour root, pour les utilisateurs, et pour l’utilitaire de chiffrement luks ;

Et tout est correct ! C’est bel et bien l’installation manuelle que j’avais faite précédemment, histoire de démarrer l’engin une première fois pour voir de quoi il en retourne. Comme vous pouvez le voir, il n’y a donc rien de très compliqué, et le fichier tient sur une trentaine de lignes environ.

Bien-entendu ici c’est une installation « à la va vite », juste pour vous montrer à quoi ressemble un fichier kickstart. Maintenant, nous allons passer à sa création à la main qui sera un poil plus peaufinée 😉

IV) Création de son propre fichier

Quand nous rédigeons donc notre fichier, la première étape est d’intégrer la notion de sections. Il en existe quatre, et il faut simplement bien faire attention à les créer dans l’ordre, faute de quoi votre script échouera :

  • La section commandes ;
  • La section %packages, concernant l’installation d’un paquet individuel ou groupes de paquets ;
  • La section %pre, concernant les tâches à effectuer avant l’installation de l’OS ;
  • La section %post, concernant les tâches à effectuer une fois l’OS installé ;

Rien d’extravagant ici. A noter que les deux dernières sections sont facultatives, et que pour ces deux dernières ainsi que la section %packages celles-ci doivent se terminer par une instruction %end, pour bien marquer le début et fin de chaque bloc, par exemple :

%packages
@^graphical-server-environment
kexec-tools

%end

Maintenant que vous savez cela, que vous avez mon fichier kickstart auto-généré plus haut dessus, vous devriez y voir un peu plus clair.

Maintenant concernant la documentation où se trouve les différents termes que l’on peut utiliser, je vous renvois tout naturellement vers celle de Red Hat, même si Oracle en possède une aussi :

https://access.redhat.com/documentation/fr-fr/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax

Cette documentation est en français, et comme (presque?) toujours chez RedHat, d’une excellente qualité.

A partir de là, on se base donc sur notre premier fichier kickstart, on recherche certains termes dans la documentation, et puis on réfléchis 😁

*Petite note, concernant la section %addon celle-ci date de RHLE 7, et elle permet comme son nom l’indique d’agrandir les possibilités de kickstart. Cependant, je n’ai pas trouvé grandes infos à son sujet… si ce n’est que si l’on souhaite activer Kdump par exemple, il faudra l’utiliser.

**Seconde note concernant la partie %anaconda, celle-ci permet de configurer anaconda lui-même d’une certaine manière, mais selon la documentation pour l’instant la seule commande utilisable est pwpolicy.

Après plusieurs minutes, voir plusieurs heures dépendant forcément de vos besoins, voici à quoi l’on peut arriver. Ce kickstart va donc réaliser un partitionnement automatique sur notre disque NVME de 50Go, assigner une IP fixe, un serveur DNS, un nom d’hôte, puis il va aussi installer le groupe de paquets Minimal server, qui se veut donc très minimal. Ensuite, il ajoutera le repo’ EPEL de chez Fedora, il acceptera les EULA et c’est à peu près tout ! Un redémarrage automatique y est renseigné, avec en prime l’installation en Command Lines, donc pas d’interface graphique lors de son installation.

A noter qu’il existait aussi un logiciel graphique pour réaliser plus simplement ce genre de fichier, mais la syntaxe ayant évolué, Red Hat ne préconise plus son utilisation. Il s’appelait Kickstart Configurator.

V) Démarrage via kickstart

C’est bien beau, mais comment fait-on pour démarrer dessus maintenant ?

Et bien ici, nous avons plusieurs choix, mais retenons les deux plus utilisés :

  • Pour le faire de la manière la plus automatique possible, il convient de créer un volume nommé OEMDRV avec le fichier kickstart à l’intérieur, de cette manière dès le démarrage l’installation se lancera ;
  • Soit démarrer de manière normalement, puis appuyer sur la touche Tab et rajouter la ligne suivante : ks=ftp://192.168.1.60/ks.cfg ;

Pour la première à option, contrairement à chez Windows, pour le coup on ne peut pas simplement mettre notre fichier kickstart en tant que Floppy Disk et hop, le tour est joué… c’est un poil plus complexe, qui plus est sous VMware Workstation/VirtualBox et consorts.

Concernant la seconde option, certes elle demande 5 à 10s à l’utilisateur pour lancer le processus, mais après l’installation est bien automatique. Il faut aussi simplement stocker notre fichier kickstart sur un serveur HTTP/FTP pour que notre VM puisse aller récupérer le fichier. D’ailleurs, il faut aussi que la dite VM ait une carte réseau qui puisse contacter un serveur DHCP, car dès le boot, celle-ci n’a forcément pas d’IP.

J’avais donc essayé au départ la première option, mais pour certaines raisons que j’ignore elle n’a pas daigné fonctionner, et semble-t-il elle n’est que très peu utilisée. Concernant la documentation, rien de très très explicatif…

Qu’à cela ne tienne, installons-donc rapidement un serveur FTP en IP fixe et envoyons-lui notre fichier kickstart :

Parfait, on démarre donc notre VM puis un petit coup de tab pour lui dire d’aller chercher le dit fichier :

L’installation se lance d’elle-même, et en mode « command line », c’est-à-dire sans utiliser d’interface graphique. Ce n’est pas grand chose, mais ça permet de gagner en performances et puis surtout l’interface graphique est inutile ici vu que tout est automatique :

Et enfin, au bout de plusieurs minutes, tout est bon !

Sur cette capture d’écran on peut donc voir que le nom d’hôte a bien été pris en compte, le mot de passe root de même, et que le dépôt a bien été rajouté ! C’est donc un sans faute !

Comme d’habitude, j’espère vous avoir appris quelques bricoles, et je vous souhaite une bonne journée/bonne soirée !

P.S: Le fichier de config est disponible sur mon Github, libre à vous de vous en servir ! https://github.com/IT-Anthony/kickstart-oracle-8

N'hésitez pas à soutenir le blog, chaque article demande un certain travail de recherche, rédaction ainsi que la réalisation de divers tests !