
Cette section transforme la théorie de Découvrir en pratique. En une à deux heures, vous montez un lab Ansible reproductible (1 control node + 3 managed nodes sur KVM/libvirt), écrivez votre premier inventaire, distribuez vos clés SSH, lancez des commandes ad-hoc, écrivez votre premier playbook et apprenez à décoder les erreurs typiques. À la fin, vous avez un environnement de travail fonctionnel pour toute la suite du parcours RHCE EX294 — chaque commande est exécutée sur des VMs réelles, jamais en théorie.
Aller droit au but
Section intitulée « Aller droit au but »Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Provisionner 4 VMs AlmaLinux 10 sur KVM/libvirt avec
virt-install+ cloud-init en quelques minutes ; - Préparer les managed nodes (compte sudoers, clé SSH, Python 3, firewall, NTP) — la base technique attendue par la RHCE ;
- Écrire votre tout premier inventaire en INI puis en YAML, et le valider avec
ansible-inventory --graph; - Connecter Ansible à votre lab via SSH par clé, sans saisir de mot de passe à chaque commande ;
- Lancer des commandes ad-hoc (
ansible all -m ping,ansible web -m service -a "...") sur les patterns d’hôtes ; - Écrire votre premier playbook idempotent : installer nginx, ouvrir le port 80, démarrer le service, vérifier
changed=0au second run ; - Décoder les 10 erreurs fréquentes (
Permission denied (publickey),MODULE FAILURE, indentation YAML,Failed to connect…).
Prérequis
Section intitulée « Prérequis »Avant d’attaquer cette section, vous devez avoir :
- Lu et compris la section Découvrir Ansible (idempotence, push SSH, ansible.cfg) ;
- Installé
ansible-coresur votre poste de contrôle (cf. Installer Ansible) ; - Une distribution Linux récente (Fedora 42+, Ubuntu 24.04+) avec KVM/libvirt opérationnel et virt-install disponible ;
- Au moins 8 Go de RAM libre et 40 Go d’espace disque pour héberger 4 VMs AlmaLinux ;
- Une paire de clés SSH (Ed25519 recommandé). Si ce n’est pas fait, suivez d’abord Créer et gérer des clés SSH.
Mon retour d’expérience — pour ceux qui veulent comprendre
Section intitulée « Mon retour d’expérience — pour ceux qui veulent comprendre »Si l’une des cartes en haut de page vous a déjà orienté, vous êtes parti sur le bon pied. La suite de cette page s’adresse à ceux qui veulent comprendre la philosophie de cette section : pourquoi je pousse le lab KVM/libvirt plutôt que Docker, pourquoi l’inventaire INI avant YAML, et pourquoi ansible all -m ping est le rite de passage obligatoire.
J’ai animé plusieurs formations Ansible où la moitié de la première journée se passait à dépatouiller des labs cassés : Vagrant qui plante, Docker SSH qui refuse les clés, VMs cloud qui timeout. Tout ce temps perdu n’apprend pas Ansible — il enseigne juste que l’outil de virtualisation choisi était mauvais. Le lab KVM/libvirt que je propose ici est testé, reproductible, et tient en 5 minutes — vous attaquez le vrai sujet (Ansible) immédiatement.
Le parcours en 7 étapes
Section intitulée « Le parcours en 7 étapes »Le parcours est séquentiel : chaque page suppose acquis ce qui précède. Comptez environ 30 minutes par page la première fois, moins lors des révisions.
La topologie cible du lab
Section intitulée « La topologie cible du lab »Le lab utilisé tout au long de cette section et de la suite du parcours est la topologie RHCE de référence :
| Hôte | IP | Rôle | Ressources |
|---|---|---|---|
control-node.lab | 10.10.20.10 | Poste Ansible (push SSH) | 2 GiB RAM / 2 vCPU / 20 GiB disque |
web1.lab | 10.10.20.21 | Serveur web (groupe webservers) | 1 GiB RAM / 1 vCPU / 10 GiB disque |
web2.lab | 10.10.20.22 | Serveur web (groupe webservers) | 1 GiB RAM / 1 vCPU / 10 GiB disque |
db1.lab | 10.10.20.31 | Base de données (groupe dbservers) | 1.5 GiB RAM / 1 vCPU / 15 GiB disque |
Les 4 VMs sont sur un réseau libvirt isolé lab-ansible en 10.10.20.0/24, avec NAT sortant et baux DHCP statiques (les MACs sont fixées dans le réseau libvirt pour garantir des IPs stables sans toucher à NetworkManager).
Ce que je défends pour vos premiers pas
Section intitulée « Ce que je défends pour vos premiers pas »Cinq positions tranchées que cette section assume :
- Lab KVM/libvirt natif, pas Docker, pas Vagrant, pas multipass. KVM est le plus proche d’un environnement de production RHEL — même réseau libvirt, même cloud-init, même init systemd. Vous apprenez l’outil avec lequel vous travaillerez vraiment, pas un succédané.
- Inventaire INI avant YAML. L’INI est plus simple, lisible en deux secondes, suffit pour 90 % des cas. Le YAML viendra naturellement quand vous aurez besoin de variables structurées. Démarrer en YAML pour « faire propre » est un piège qui ralentit.
- Tester le ping AVANT le premier playbook.
ansible all -m ansible.builtin.pingvérifie la chaîne SSH + Python + sudo. Si le ping échoue, votre playbook échouera aussi — autant le diagnostiquer maintenant avec une seule commande qu’au milieu d’un playbook de 30 lignes. - Idempotence vérifiée à chaque run. Un playbook se relance deux fois :
changed=Nau premier,changed=0au second. Si vous voyezchanged=Nau second run, votre playbook a un bug —command:sanscreates:, ou module mal utilisé. make provisionversionné dans Git. Le lab doit pouvoir être détruit et recréé en 5 minutes. Aucun setup manuel non documenté : tout dansMakefile+cloud-init.yaml. Sinon vous perdez votre lab le jour où vous changez de poste, et avec lui 3 mois de mémoire musculaire.
Ce que je vous interdis
Section intitulée « Ce que je vous interdis »Cinq erreurs typiques de démarrage — chacune coûteuse en temps perdu :
- Lire la doc sans monter le lab. Lire un playbook ne le fait pas tourner. Vous devez écrire 50 playbooks ratés pour comprendre Ansible, pas en lire 50 sur le web.
ansible -m shell -a 'dnf install -y nginx'comme premier réflexe.shell:rejoue à chaque exécution. Toujours chercher le module dédié :ansible.builtin.dnfest idempotent par construction.- Ignorer le PLAY RECAP. Les colonnes
ok,changed,failed,unreachable,skippedracontent tout ce qui s’est passé. Lire le RECAP est non négociable — sinon vous croyez que ça marche alors que des hôtes ont été silencieusement skippés. - Continuer après un
Permission denied.Permission denied (publickey)auping= chaîne cassée. Réparer avant d’avancer, sinon chaque playbook suivant vous coûtera 30 minutes de debug. La page Debug couvre les 10 erreurs typiques avec leur fix. - Sauter le quiz de fin de section. 25 questions vérifient le lab, l’inventaire, les ad-hoc et le premier playbook. Si vous séchez sur 5/25, retournez sur les pages concernées avant d’attaquer Écrire du code — sinon vous accumulez la dette technique cognitive.
Êtes-vous prêt à passer à l’écriture de code
Section intitulée « Êtes-vous prêt à passer à l’écriture de code »Vous pouvez basculer sur la section Écrire du code Ansible (variables, facts, conditions, boucles, templates Jinja2) quand vous savez :
- Provisionner votre lab de zéro en moins de 10 minutes (
make provision) ; - Lancer
ansible all -m pinget obtenir 4pongsans saisir de mot de passe ; - Écrire un playbook idempotent qui installe + configure + démarre un service ;
- Lire un PLAY RECAP et expliquer chaque colonne (
ok,changed,failed,unreachable,skipped) ; - Décoder une erreur SSH ou Python sans Google.
Le quiz Premiers pas ci-dessous (25 questions) vérifie ces capacités.
Quiz de la section
Section intitulée « Quiz de la section »Prochaines étapes
Section intitulée « Prochaines étapes »Une fois le quiz validé, vous attaquez l’écriture systématique de code Ansible : variables, facts, conditions, boucles, handlers, templates Jinja2. C’est la couche la plus volumineuse du parcours, mais aussi celle qui occupe la plus grosse part de la RHCE EX294.