Aller au contenu

Un labo pour Ansible

Labo

À 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 ?

MacOS

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 :

Disque SSD externe

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).

Linux Mint Debian Edition

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 commande lsblk.

  • Utilisez la commande dd en tant que root pour écrire le fichier ISO sur la clé.

# dd status=progress if=lmde-7-cinnamon-64bit.iso of=/dev/sdX

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.

Labo Ansible

Identifier les disques

Ouvrez un terminal et invoquez la commande lsblk pour afficher les disques :

Labo Ansible

Dans l'état actuel des choses, j'ai deux disques :

  • un disque /dev/sda de 60 Go que j'identifie comme le SSD interne de ma machine.

  • un disque /dev/sdb de 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 :

Labo Ansible

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.

Labo Ansible

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 :

Labo Ansible

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 :

Labo Ansible

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 :

Labo Ansible

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 :

Labo Ansible

  • 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 :

Labo Ansible

Le bureau de Linux Mint s'affiche dans sa configuration par défaut :

Labo Ansible

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.

Labo Ansible

Ouvrez un terminal et mettez à jour l'intégralité du système :

$ sudo apt upgrade -y

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 :

$ sudo apt install --no-install-recommends git ansible

Nous allons remplacer GNOME Terminal par Xfce Terminal :

$ sudo apt install xfce4-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 :

$ su -
# git clone https://gitlab.com/kikinovak/labo-ansible.git

Lancez l'installateur :

# cd labo-ansible/
# ansible-galaxy install -r requirements.yml
# ./install.yml

Labo Ansible

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 :

# usermod -aG sudo,vboxusers ema

Redémarrez.

Prise en main et premier test

Connectez-vous en tant qu'utilisateur ema :

Labo Ansible

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 :

Labo Ansible

Ouvrez un terminal et supprimez l'utilisateur provisoire install :

$ sudo userdel -r 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 :

$ source ~/.bash_aliases

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 :

$ 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 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 :

$ git clone https://gitlab.com/kikinovak/formation-ansible

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 :

Labo Ansible

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 :

$ 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 :

$ cd ~/formation-ansible/test-02

Lancez le cluster de VMs de ce deuxième test :

$ vagrant up

Là aussi, patientez quelques minutes et appréciez le résultat :

Labo Ansible

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.