Un labo pour Ansible
À mon humble avis de formateur, le meilleur moyen pour assimiler une nouvelle technologie consiste à mettre les mains dans le cambouis et à jouer avec. Pour ce faire, il nous faut tout d'abord un laboratoire sous forme d'environnement de test.
C'est là où les choses se compliquent un peu. Dans mes cours sur Git ou sur Docker, il suffit d'installer VirtualBox sur votre machine sous Windows ou sous Linux, avec une simple machine virtuelle sous Linux pour tous les ateliers pratiques. Avec une technologie comme Ansible, les choses sont un petit peu plus compliquées, étant donné que nous avons besoin d'un réseau de machines virtuelles capables de communiquer entre elles.
Il existe toute une série de solutions pour obtenir un tel environnement de test, et j'en ai essayé quelques-unes. Je ne vais pas faire l'inventaire exhaustif de toutes les possibilités. Voici la configuration que j'ai retenue pour cette formation :
- 
Un système Linux installé sur un disque SSD externe relié à votre PC avec un adaptateur USB. 
- 
Un hyperviseur basé sur VirtualBox. 
- 
La surcouche Vagrant qui permet de mettre en place des réseaux de machines virtuelles « jetables » en deux minutes chrono. 
Avantages de cette solution :
- 
Vous travaillez sur votre PC sans toucher au système qui y est installé. 
- 
On s'acquitte des idiosyncrasies aléatoires de Windows. 
- 
On travaille sur des « vraies » VM et non pas sur des conteneurs qui émulent des VM. 
Et si j'ai un Mac ?
Vous vous demandez peut-être pourquoi je n'ai pas mentionné les gens qui possèdent un Mac. Les machines récentes de la marque Apple permettent certes d'installer Linux, mais cette procédure nous obligerait à sauter à travers des cerceaux en feu. Dans nos cours à l'École des Mines, on a l'habitude de prêter des PC portables aux rares étudiants qui possèdent un Mac.
Le matériel
En termes de PC, n'importe quelle machine raisonnablement récente fait l'affaire. Pour vous donner une idée, j'ai pu réaliser tous les ateliers pratiques de la formation sur un vieux Dell Optiplex avec un processeur Intel Core i5 et 8 Go de RAM. Sachant qu'on installe un hyperviseur et qu'on fait tourner jusqu'à cinq machines virtuelles en même temps.
Voici le disque SSD externe avec adaptateur USB que j'utilise dans l'exemple :
Le but du jeu, c'est d'installer Rocky Linux 9 sur ce disque branché à votre machine. Cette manière de procéder gardera votre système principal (Windows, Debian, Ubuntu, Arch, etc.) intact.
Téléchargement
- 
Rendez-vous sur la page du projet. 
- 
Suivez le lien Téléchargement en haut à droite de la page. 
- 
Gardez l'architecture AMD/Intel (x86_64) par défaut. 
- 
Repérez la section Images par défaut. 
- 
Cliquez sur l'onglet Rocky Linux 9. 
- 
Téléchargez l'ISO Minimal (environ 2 Go). 
Et pourquoi pas la version 10 ?
Au moment où j'écris ces lignes, Rocky Linux 10 est déjà disponible. Si je
ne l'ai pas choisie, c'est avant tout pour des raisons de compatibilité
matérielle. Red Hat Enterprise Linux 10 est compatible avec les processeurs
x86_64-v3. Or, la plupart des postes de travail que l'on trouve dans les
salles de formation sont des configurations modestes équipées de
processeurs de la famille x86_64-v2. 
Le clone RHEL libre AlmaLinux propose certes une version alternative et non officielle adaptée à ces processeurs, mais je n'ai pas voulu vous embrouiller dès le départ. Quoi qu'il en soit, gardez en tête le fait que la version 9 de Rocky Linux est supportée jusqu'en mai 2032.
Confectionner la clé USB
Sous Microsoft Windows, il existe une multitude de « solutions » pour écrire une image ISO sur une clé USB, qui se distinguent toutes par le fait qu'elles ne fonctionnent pas. Une seule application s'acquitte correctement de cette tâche : le logiciel libre Rufus.
- 
Insérez une clé USB formatée. 
- 
Lancez Rufus. 
- 
Vérifiez si votre clé USB s'affiche bien dans le champ Périphérique. 
- 
Sélectionnez le fichier ISO. 
- 
Cliquez sur Démarrer. 
Sous Linux, l'image ISO est hybride et peut s'écrire directement sur une clé USB :
- 
Insérez une clé USB (formatée ou non, peu importe). 
- 
Identifiez le fichier de périphérique /dev/sdXà l'aide de la commandelsblk.
- 
Utilisez la commande dden tant querootpour écrire le fichier ISO sur la clé.
Rocky Linux 9.4 ? 9.5 ? 9.6 ?
Ne vous inquiétez pas si vous n'utilisez pas le tout dernier ISO de Rocky Linux 9.x. La mise à jour initiale de votre système installé mettra les pendules à l'heure.
Démarrer l'installation
SSD externe
Ne branchez pas encore le SSD externe !
- 
Insérez le support d'installation dans votre PC. 
- 
Démarrez sur la clé en mode UEFI ou Legacy, peu importe. 
- 
Mettez l'option Install Rocky Linux 9 en surbrillance. 
- 
Démarrez en appuyant sur Enter. 
Tester ou installer ?
La différence entre Install Rocky Linux 9.x et Test this media & install Rocky Linux 9.x, c'est que l'option par défaut vérifie l'intégrité du support d'installation.
Dans l'écran de bienvenue, sélectionnez la langue (Français) et la localisation (Français > France) :
La fenêtre principale de l'installateur Anaconda s'affiche :
Partitionnement du SSD externe
Cette étape est un peu délicate et mérite toute votre attention. Pour commencer, nous allons identifier le disque correspondant à notre système installé, celui auquel on ne veut surtout pas toucher. Dans l'installateur, cliquez sur Destination de l'installation (Installation Destination) et regardez ce qui s'affiche :
- 
Ici, je note bien que ATA SATA3 60GB SSD correspond au disque de mon système installé. 
- 
Je branche le disque SSD externe et j'attends quelques secondes. 
- 
Je clique sur Rafraîchir en bas à droite de la fenêtre. 
- 
Dans la fenêtre subséquente je clique sur Réanalyser les disques. 
- 
Si tout se passe bien, je vois apparaître mon disque SSD externe. 
- 
Sur ma machine, c'est le disque JMicron Tech avec une capacité de 223,57 Gio. 
- 
Je coche ce disque pour indiquer à l'installateur qu'il faut l'utiliser. 
- 
Je décoche mon disque système pour indiquer à l'installateur qu'il ne faut pas (!) y toucher. 
- 
Je coche l'option Je voudrais libérer plus d'espace qui me permet de vider le disque SSD externe. 
- 
Je garde l'option Automatique dans la Configuration du stockage. 
- 
Je clique sur Terminé et je supprime les partitions existantes du SSD externe. 
Décochez le disque système !
N'oubliez pas de décocher le disque système, faute de quoi risquez de vous mettre deux coups de douze dans le pied en écrasant votre installation existante.
Choix des paquets
Gardez l'option Installation Minimale :
Désactivation de Kdump
Kdump est un mécanisme de capture lors du plantage d'un noyau. Il peut être désactivé :
Date et heure
Configurez le fuseau horaire (par exemple Europe/Paris) :
Réseau et nom d'hôte
- 
Le cas échéant, vérifiez l'obtention d'une adresse IP dans le réseau local. 
- 
Choisissez un nom d'hôte simple comme testlabousandbox.
- 
Confirmez en cliquant sur Appliquer, puis sur Terminé. 
Et si j'utilise le Wi-Fi ?
Si vous utilisez une carte réseau sans fil, jetez un œil à la section Configuration du réseau dans l'installateur de cette page de documentation.
Paramètres utilisateur
- 
Définissez le mot de passe root.
- 
Décochez l'option Verrouiller le compte Root. 
- 
Cochez l'option Permettre les connexions SSH avec mot de passe. 
Et l'utilisateur initial ?
Ne définissez pas encore l'utilisateur initial du système. On fera ça un peu plus loin.
Lancer l'installation
Si tout se passe bien, la fenêtre principale d'Anaconda doit ressembler à ceci à peu de choses près :
- 
Cliquez sur Commencer l'installation. 
- 
Patientez quelques minutes pendant l'installation du système minimal. 
- 
Au terme de l'installation, cliquez sur Redémarrer le système. 
Démarrer sur le SSD externe
N'oubliez pas que votre installation s'est effectuée sur un disque externe. Il vous faudra donc appuyer sur Esc, F9, F12 ou n'importe quelle autre touche pour afficher le menu de démarrage de votre BIOS/UEFI.
Pas de réseau en Wi-Fi ?
Si vous avez installé Rocky Linux sur un ordinateur portable sans connexion filaire et que vous vous demandez comment vous connecter à Internet avec votre système minimal, voici la solution.
Mise en place du labo Ansible
Pour l'instant, nous ne disposons que d'un système Linux minimal avec guère plus qu'un noyau, un shell Bash et une poignée d'outils en ligne de commande. De là à installer une station de travail graphique avec un hyperviseur et toutes les applications nécessaires, il y a pas mal de choses à faire.
Un labo Ansible grâce à... Ansible
La bonne nouvelle, c'est que j'ai fait ce travail pour vous, en utilisant Ansible. Vous n'aurez donc qu'à installer les outils prérequis et lancer un script d'installation qui se chargera de tout de manière automagique.
Connectez-vous en tant que root à votre système minimal et activez le dépôt
EPEL (Extra Packages for Enterprise Linux) :
Red Hat vs. Ansible
Paradoxalement, Red Hat Enterprise Linux ainsi que les clones comme Rocky
Linux ne fournissent pas une installation complète d'Ansible dans les
dépôts officiels, alors même qu'Ansible est développé par Red Hat. Il faut
donc activer le dépôt communautaire EPEL pour récupérer le paquet
ansible.
Installez Git et Ansible :
Récupérez les fichiers de mon dépôt Git labo-ansible sur GitLab :
Placez-vous dans le répertoire nouvellement créé :
Récupérez les rôles Ansible nécessaires pour l'exécution de l'installateur :
Lancez le script install.yml :
À partir de là, l'installateur gère tout automatiquement :
- 
la configuration du shell Bash 
- 
la configuration des dépôts de paquets officiels et tiers 
- 
l'installation d'une panoplie complète d'outils en ligne de commande 
- 
l'installation d'un système graphique 
- 
l'installation d'un bureau KDE minimal 
- 
l'installation de VirtualBox 
- 
l'installation et la configuration de Vagrant 
Servez-vous un café pendant que les étapes de l'installation défilent sur votre écran. Il y en a une petite centaine :
Un installateur avec Ansible
Notez ici que j'ai utilisé Ansible de manière peu courante. Pour ceux qui
connaissent déjà un peu : j'ai transformé un playbook en script
exécutable qui fonctionne à la manière d'un SETUP.EXE sous Windows. Pas
très orthodoxe certes, mais très pratique.
Prise en main et premier test
Au terme de l'installation, redémarrez et connectez-vous en tant qu'utilisateur
ema avec le mot de passe ema123 :
Le labo Ansible se présente sous forme d'un bureau KDE minimal avec la panoplie d'outils et d'applications nécessaires sous le capot :
Pour commencer, on va tester le bon fonctionnement des briques logicielles essentielles à notre travail. Ouvrez un terminal et affichez la liste des box Vagrant dont vous disposez. Pour l'instant il n'y en a aucune :
Récupérez la box d'Alpine Linux 3.19 en prenant soin de choisir celle qui est
compatible avec l'hyperviseur VirtualBox (virtualbox) :
$ vagrant box add generic/alpine319
==> box: Loading metadata for box 'generic/alpine319'
    box: URL: https://vagrantcloud.com/api/v2/vagrant/generic/alpine319
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.
1) docker
2) hyperv
3) libvirt
4) parallels
5) qemu
6) virtualbox
7) vmware_desktop
Enter your choice: 6
==> box: Adding box 'generic/alpine319' (v4.3.12) for provider: virtualbox
    ...
    box: Calculating and comparing box checksum...
==> box: Successfully added box 'generic/alpine319' (v4.3.12) for 'virtualbox'!
Utilisez un VPN
Il se peut que la connexion « rame » parce que vous êtes trop nombreux à vous connecter au cloud Vagrant avec la même adresse IP publique. Dans ce cas, la meilleure solution consiste à utiliser ProtonVPN.
Récupérez les ateliers pratiques de la formation depuis mon dépôt GitLab :
Pour tester le bon fonctionnement de Vagrant et de VirtualBox, on va lancer un premier cluster de quatre machines virtuelles Alpine Linux :
$ cd formation-ansible/test-01/
$ vagrant up
Bringing machine 'alpine-01' up with 'virtualbox' provider...
Bringing machine 'alpine-02' up with 'virtualbox' provider...
Bringing machine 'alpine-03' up with 'virtualbox' provider...
Bringing machine 'alpine-04' up with 'virtualbox' provider...
Patientez deux minutes et appréciez le résultat :
Vérifiez si vous pouvez envoyer un ping à chacun de ces hôtes :
$ ping -c 1 -q 192.168.56.10
...
1 packets transmitted, 1 received, 0% packet loss, time 0ms
$ ping -c 1 -q 192.168.56.20
...
1 packets transmitted, 1 received, 0% packet loss, time 0ms
$ ping -c 1 -q 192.168.56.30
...
1 packets transmitted, 1 received, 0% packet loss, time 0ms
$ ping -c 1 -q 192.168.56.40
...
1 packets transmitted, 1 received, 0% packet loss, time 0ms
Une fois que tout fonctionne, faites un peu de ménage :
$ vagrant destroy -f
==> alpine-04: Forcing shutdown of VM...
==> alpine-04: Destroying VM and associated drives...
==> alpine-03: Forcing shutdown of VM...
==> alpine-03: Destroying VM and associated drives...
==> alpine-02: Forcing shutdown of VM...
==> alpine-02: Destroying VM and associated drives...
==> alpine-01: Forcing shutdown of VM...
==> alpine-01: Destroying VM and associated drives...
Une box pour chaque distribution
Récupérez les box Vagrant des quatre principales distributions que vous risquez de rencontrer dans un contexte professionnel :
- 
Rocky Linux (clone de Red Hat Enterprise Linux) 
- 
OpenSUSE Leap (mouture libre de SUSE Linux Enterprise Server et Desktop) 
- 
Ubuntu (dérivée de Debian avec un support LTS) 
$ vagrant box add bento/rockylinux-9
$ vagrant box add bento/debian-12
$ vagrant box add bento/opensuse-leap-15
$ vagrant box add bento/ubuntu-22.04
Choisir le bon hyperviseur
Chacune de ces box est fournie pour toute une panoplie
d'hyperviseurs : VirtualBox, HyperV, libvirt, QEMU, VMWare, etc.
Veillez à bien sélectionner la version pour virtualbox.
Placez-vous dans le répertoire du deuxième test :
Lancez le cluster de VMs de ce deuxième test :
Là aussi, patientez quelques minutes et appréciez le résultat :
Si tout s'est bien passé, faites un brin de ménage dans vos VMs :
$ vagrant destroy -f
==> ubuntu: Forcing shutdown of VM...
==> ubuntu: Destroying VM and associated drives...
==> debian: Forcing shutdown of VM...
==> debian: Destroying VM and associated drives...
==> suse: Forcing shutdown of VM...
==> suse: Destroying VM and associated drives...
==> rocky: Forcing shutdown of VM...
==> rocky: Destroying VM and associated drives...


















