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 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 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 Linux Mint Debian Edition 7 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 Download > Other versions > LMDE 7 en haut à droite de la page.
-
Cliquez sur le bouton Download, choisissez un miroir et téléchargez l'ISO de Linux Mint Debian Edition 7 (3 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
dden tant querootpour écrire le fichier ISO sur la clé.
Ne vous tirez pas dans le pied !
La commande dd invoquée en tant que root écrit directement sur le
disque fourni en argument. Ne vous trompez surtout pas de fichier de
périphérique sous peine de détruire votre système installé.
Démarrer le système Live
-
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.
-
Confirmez l'option Start LMDE par défaut pour démarrer le système Live.
Identifier les disques
Ouvrez un terminal et invoquez la commande lsblk pour afficher les
disques :
Dans l'état actuel des choses, j'ai deux disques :
-
un disque
/dev/sdade 60 Go que j'identifie comme le SSD interne de ma machine. -
un disque
/dev/sdbde 16 Go que je reconnais comme ma clé USB d'installation.
À présent je branche mon disque SSD externe et je réitère la commande
lsblk :
Le SSD externe apparaît ici comme /dev/sdc.
Je ne m'occupe pas plus que ça des éventuelles partitions /dev/sdc1 ou
/dev/sdc2 de ce disque. L'installateur de Linux Mint se chargera de
repartitionner automatiquement l'intégralité de ce disque.
Installer Linux Mint
-
Cliquez sur l'icône Install Linux Mint pour lancer le programme d'installation.
-
Choisissez la langue : French - France
-
Choisissez le fuseau horaire : Europe/Paris
-
Choisissez la disposition du clavier : French/French
-
Définissez un utilisateur provisoire
install(Install). -
Choisissez un nom pour la machine :
sandbox,homelab, etc.
Pourquoi définir un utilisateur provisoire ?
Une fois que nous aurons installé notre système, nous allons mettre en
place un profil par défaut pour l'utilisateur initial. Ce profil par défaut
n'est pas encore installé. La solution la plus simple qui nous évitera de
sauter à travers des cerceaux en feu consiste à définir un utilisateur
provisoire install.
La prochaine étape est très délicate et mérite toute votre attention.
Sélectionnez le disque correspondant à votre SSD externe dans le menu
déroulant. Dans mon cas de figure, c'est le disque /dev/sdc :
Une fois que vous avez confirmé la suppression des données de ce disque, l'installateur vous somme de choisir la destination pour le chargeur de démarrage GRUB. Là aussi, il faudra être vigilant et opter pour le SSD externe :
L'installateur vous affiche un résumé des opérations auxquelles il va procéder. C'est l'occasion de vérifier une dernière fois l'ensemble des paramètres de l'installation :
Une fois que vous cliquez sur Installer, le programme d'installation se charge de partitionner et de formater le SSD externe avant de transférer le système Linux Mint sur ce disque :
-
Au terme de l'installation, cliquez sur Redémarrer.
-
Débranchez la clé USB d'installation une fois que le système Live s'est arrêté.
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.
Connectez-vous à votre session en tant qu'utilisateur install :
Le bureau de Linux Mint s'affiche dans sa configuration par défaut :
Mise à jour initiale
Avant d'aller plus loin, ce n'est pas une mauvaise idée d'effectuer la mise à jour initiale.
-
Vérifiez si vous êtes bien connecté à Internet.
-
Dans le menu des applications, ouvrez Administration > Sources de logiciels.
-
Renseignez votre mot de passe.
-
Choisissez un miroir français pour la source Principal.
-
Faites de même pour la source Base.
-
Cliquez sur le bouton pour mettre à jour le cache d'APT.
-
Fermez la fenêtre.
Ouvrez un terminal et mettez à jour l'intégralité du système :
Redémarrez au terme de cette opération.
Mise en place du labo Ansible
Pour l'instant nous disposons d'un poste de travail Linux Mint dans sa configuration par défaut. De là à installer un labo pour Ansible, il y a pas mal de choses à faire :
-
installer l'hyperviseur VirtualBox
-
installer le Extension Pack pour VirtualBox
-
installer la surcouche Vagrant
-
peaufiner l'environnement
-
etc.
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.
Ouvrez un terminal et activez le compte root. Fournissez d'abord le mot de
passe de l'utilisateur install pour utiliser sudo, puis définissez et
confirmez le mot de passe pour root :
$ sudo passwd root
[sudo] Mot de passe de install : *********
Nouveau mot de passe : ***********
Retapez le nouveau mot de passe : ***********
passwd : mot de passe mis à jour avec succès
Installez Git et Ansible :
Nous allons remplacer GNOME Terminal par Xfce Terminal :
Pourquoi remplacer le terminal ?
Depuis la publication de GNOME 3.0 en 2011, les développeurs de l'environnement de bureau GNOME s'inspirent visiblement de Marie Kondo pour l'ergonomie des applications, quitte à supprimer certaines fonctionnalités essentielles. Heureusement pour nous, le terminal Xfce s'intègre très bien dans le bureau de Linux Mint.
Fermez GNOME Terminal, lancez Xfce Terminal et récupérez l'installateur du labo Ansible :
Lancez l'installateur :
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.
Maintenant que les profils sont installés, nous pouvons définir notre utilisateur :
# adduser ema
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for ema
Enter the new value, or press ENTER for the default
Full Name []: EMA
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
Ajoutez cet utilisateur aux groupes système sudo et vboxusers :
Redémarrez.
Prise en main et premier test
Connectez-vous en tant qu'utilisateur ema :
Le labo Ansible se présente sous forme d'un bureau minimal avec la panoplie d'outils et d'applications nécessaires sous le capot :
Ouvrez un terminal et supprimez l'utilisateur provisoire install :
Éditez le fichier ~/.bash_aliases et ajoutez la stance suivante à la fin du
fichier :
# Vagrant
VAGRANT_DEFAULT_PROVIDER=virtualbox
export VAGRANT_DEFAULT_PROVIDER
source $(find /opt/vagrant -name completion.sh)
Prenez en compte cette configuration :
On va tester le bon fonctionnement des briques logicielles essentielles à notre travail. Pour commencer, 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. L'application est intégrée au labo Ansible dans Applications > Administration.
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...
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce site ? Offrez un café au rédacteur en cliquant sur la tasse.




















