Voici le deuxième article de la formation Ansible. Dans mon précédent article, je vous ai présenté Ansible, un outil de gestion de configuration pour votre parc de machines. À mon humble avis de formateur, le meilleur moyen pour assimiler une nouvelle technologie consiste à mettre les mains dans le cambouis et de 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 ne sont pas aussi simples, é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 la technologie de virtualisation KVM (Kernel-based Virtual Machine).
- 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 et de VirtualBox.
- On utilise un hyperviseur performant 100 % Open Source et qui JusteMarche(tm).
- On travaille sur des « vraies » VM et non pas sur des conteneurs qui émulent des VM.
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’à quatre 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
- Allez sur la page du projet : https://rockylinux.org.
- Suivez le lien Download.
- Repérez la section Default Images – Rocky Linux 9.
- Téléchargez l’ISO
Minimal
(un peu moins de 2 Go).
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
dd
en tant queroot
pour écrire le fichier ISO sur la clé.
# dd status=progress if=Rocky-9.4-x86_64-minimal.iso of=/dev/sdX
Démarrer l’installation
- Insérez le support d’installation dans votre PC.
- Ne branchez pas encore le SSD externe !
- 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 Entrée.
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 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 Fait et je supprime les partitions existantes du SSD externe.
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
testlab
ousandbox
. - Confirmez en cliquant sur Appliquer, puis sur Fait.
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.
- 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.
N’oubliez pas que votre installation s’est effectuée sur un disque externe. Il vous faudra donc appuyer sur Échap, F9, F12 ou n’importe quelle autre touche pour afficher le menu de démarrage de votre BIOS/UEFI.
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.
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) :
# dnf install -y epel-release
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 :
# dnf install -y git ansible
Récupérez les fichiers de mon dépôt Git rocky-9-ansible
sur GitLab :
# git clone https://gitlab.com/kikinovak/rocky-9-ansible
Placez-vous dans le répertoire qui contient l’installateur :
# cd rocky-9-ansible/installer/ema/ # ls ansible.cfg homelab.yml
Lancez l’installateur. Il vous demandera de fournir un mot de passe pour votre utilisateur. Si vous confirmez simplement par Entrée, il choisira le mot de passe par défaut ema123
:
# ./homelab.yml Choose a password for user ema [ema123]: ***********
À 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 et la configuration de l’hyperviseur KVM
- 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 bonne centaine :
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 que vous venez de définir :
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 :
$ vagrant box list There are no installed boxes! Use `vagrant box add` to add some.
Récupérez la box d’Alpine Linux 3.19 en prenant soin de choisir celle qui est compatible avec l’hyperviseur KVM (libvirt
) :
$ 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: 3 ==> box: Adding box 'generic/alpine319' (v4.3.12) for provider: libvirt (amd64) ... box: Calculating and comparing box checksum... ==> box: Successfully added box 'generic/alpine319' (v4.3.12) for 'libvirt (amd64)'!
Récupérez les ateliers pratiques de la formation depuis mon dépôt GitLab :
$ git clone https://gitlab.com/kikinovak/formation-ansible
Pour tester le bon fonctionnement de Vagrant et de KVM, on va lancer un premier cluster de quatre machines virtuelles Alpine Linux :
$ cd formation-ansible/test-00/ $ vagrant up Bringing machine 'alpine-01' up with 'libvirt' provider... Bringing machine 'alpine-02' up with 'libvirt' provider... Bringing machine 'alpine-03' up with 'libvirt' provider... Bringing machine 'alpine-04' up with 'libvirt' provider...
Patientez une petite minute et appréciez le résultat dans le gestionnaire de machines virtuelles (Virtual Machine Manager) :
Vérifiez si vous pouvez envoyer un ping
à chacun de ces hôtes :
$ ping -c 1 -q 10.23.45.10 ... 1 packets transmitted, 1 received, 0% packet loss, time 0ms $ ping -c 1 -q 10.23.45.20 ... 1 packets transmitted, 1 received, 0% packet loss, time 0ms $ ping -c 1 -q 10.23.45.30 ... 1 packets transmitted, 1 received, 0% packet loss, time 0ms $ ping -c 1 -q 10.23.45.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: Removing domain... ==> alpine-04: Deleting the machine folder ==> alpine-03: Removing domain... ==> alpine-03: Deleting the machine folder ==> alpine-02: Removing domain... ==> alpine-02: Deleting the machine folder ==> alpine-01: Removing domain... ==> alpine-01: Deleting the machine folder
Lire la suite : Installation
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
4 commentaires
Llen · 17 septembre 2024 à 11 h 24 min
Merci pour ce lab. Puis-je le modifier pour l’utiliser avec mes BTS dans mon labo ? Je citerai mes sources bien entendu. Toujours beaucoup de respect pour le travail des autres.
kikinovak · 17 septembre 2024 à 12 h 28 min
Oui bien sûr. Faites-vous plaisir.
An'h Onÿm · 4 octobre 2024 à 9 h 09 min
Merci pour cette formation et les explications toujours limpides.
J’ai une question concernant l’utilisation de Vagrant: pourquoi faites-vous confiance aux boxes « generic/* »? Est-ce parce qu’il s’agit d’un lab (les VM sont rapidement déployées puis détruites), ou avez-vous des raisons de faire confiance à l’auteur de ces boxes (c’est une vraie question: en ce qui me concerne, j’ai toujours du mal à faire confiance aux boxes/conteneurs tout prêts s’ils ne viennent pas d’un éditeur connu/officiel)?
kikinovak · 4 octobre 2024 à 12 h 20 min
Même si l’auteur des boxes
generic
(de loin les plus populaires) était malveillant (ce qui me paraît extrêmement peu probable), une VM reste un environnement isolé. Bonne chance pour sortir de là et semer la pagaille dans l’hyperviseur.