
Cette page rassemble les outils d'entraînement à la RHCE EX294 du site. Vous y trouverez le quiz interactif (653 questions catégorisées par sujet RHCE), des exercices commentés par objectif officiel, et le mock examen complet (lab rhce/mock-ex294, 19 tâches en 4h chrono). À utiliser après avoir parcouru les sections de cours et avant de réserver l'examen Red Hat.
L'EX294 ne peut pas se réviser uniquement par lecture, c'est un examen performance-based qui demande de l'écriture sous pression. Vous devez avoir tapé du YAML jusqu'à ce que ansible.builtin.copy mode: "0644" become: true sorte de vos doigts sans réfléchir. Cette page vous aide à mesurer où vous en êtes.
Ce que cette page contient
Section intitulée « Ce que cette page contient »- un quiz interactif (653 questions) organisé par sujet ;
- des exercices commentés alignés sur les objectifs officiels ;
- le mock examen complet (lab
rhce/mock-ex294), 19 tâches, 4h chrono ; - une grille d'auto-évaluation pour savoir si vous êtes prêt.
Prérequis
Section intitulée « Prérequis »Avant de tenter ces exercices, vous devez avoir terminé le parcours :
- Découvrir + Premiers pas
- Écrire du code (les ~30 pages)
- Modules, Inventaires, Rôles
- Vault, Execution Environments, Collections
- Troubleshooting
Sans ces bases, les exercices vont vous frustrer plus que vous former.
Quiz interactif, 653 questions
Section intitulée « Quiz interactif, 653 questions »Le quiz Ansible du site contient 653 questions réparties sur 10 banques thématiques alignées sur le programme officiel EX294 :
| Banque | Questions |
|---|---|
| Découvrir (architecture, ansible.cfg, idempotence) | 54 |
| Premiers pas | 25 |
| Écrire du code (variables, conditions, boucles, templates, custom facts, import/include) | 121 |
| Modules (fichiers, paquets, services, RHEL, réseau, diagnostic) | 74 |
| Inventaires | 79 |
| Rôles | 80 |
| Vault & Secrets | 69 |
| Execution Environments (ansible-navigator, builder) | 50 |
| Troubleshooting | 50 |
| Collections (FQCN, requirements, init, CI, migration) | 51 |
Chaque question affiche son niveau (debutant / intermediaire / avance / expert) et son lien direct vers la page de cours qui couvre le sujet. Le tirage ne sert jamais la banque entière : le moteur de quiz alloue un budget fixe par niveau (12 questions en débutant, 20 en intermédiaire, 30 en avancé, 40 en expert) qu'il répartit entre les banques ayant des questions de ce niveau. Une banque sans question du niveau demandé est ignorée, donc un tirage « expert » ne vous resservira pas une question de découverte.
Les deux liens ci-dessous ouvrent la même banque de questions. Le second est simplement étiqueté RHCE, ce qui est utile pour retrouver votre historique de passages quand vous alternez révision Ansible générale et préparation examen.
Mock examen complet, Lab 100
Section intitulée « Mock examen complet, Lab 100 »Le lab rhce/mock-ex294 (labs/rhce/mock-ex294/) reproduit l'examen EX294 réel : 19 tâches indépendantes, 4 heures chrono, validation par une suite pytest. Les tâches les plus piégeuses portent plusieurs tests, parce qu'une tâche RHCE se rate rarement en bloc : un port ouvert mais non permanent, un booléen SELinux qui retombe au reboot, un montage sans entrée fstab, un NOPASSWD plus large que demandé. À chaque fois l'état est juste à l'instant T et faux après redémarrage.
Le point le plus déstabilisant du lab est son setup.yaml : il défait volontairement le résultat attendu avant de vous rendre la main. Vous ne partez donc pas d'une machine neuve mais d'un système partiellement configuré de travers, exactement comme en salle d'examen.
Les 19 tâches du mock
Section intitulée « Les 19 tâches du mock »Cette liste sert de grille de dépouillement. Après chaque passage, cochez ce qui est passé et notez la catégorie des échecs : c'est le regroupement par catégorie, pas le score brut, qui vous dit quelle section de cours reprendre. Les tâches 13 à 19 sont celles qui font basculer un candidat, parce qu'elles ne se vérifient pas en relisant son YAML mais en interrogeant la machine (PLAY RECAP, crontab -l -u appuser, ansible-galaxy collection list).
- Inventaire statique,
hosts.ymlavec 2 groupes (webservers,dbservers) etansible_python_interpreter - Variables hiérarchiques,
group_vars/ethost_vars/, vérification de la précédence - Ansible Vault,
vault.ymlchiffré paransible-vault encryptpuis consommé dans un playbook - Modules fichiers,
copy:ettemplate:avecmode: "0640"etowner: app - Modules paquets,
dnfpournginx,mariadb-server,python3-libselinux - Services,
systemdpournginxetmariadb(started + enabled) - Utilisateurs,
appuser(UID 2001) +appgroup(GID 2001) + sudo NOPASSWD limité àsystemctl - SELinux, booléen permanent
httpd_can_network_connect - Firewalld,
permanent: true, immediate: truesur http/https/mysql - Stockage, LV
lv_datade 300 Mo, fs xfs, monté sur/mnt/dataavec entréefstab - Rôle complet,
app_deploycombinant 2 modules, 1 handler et 1 template - Conditions et boucles, 5 fichiers
/tmp/file1à/tmp/file5au contenu dépendant de la parité - Gestion d'erreur, rattraper un échec réel (
rescued=1,ignored=0), en consigner la trace, poursuivre - Déploiement par vagues, traiter les webservers un à la fois avec stabilisation entre les vagues
- Délégation, écrire un journal unique sur
db1.labdepuis un play qui cible les webservers - Tâches planifiées, rapport quotidien à 04h05 dans la crontab d'
appuser - Tags, tâches sélectionnables par
--tags, un tag systématique et une purge hors de portée - Facts personnalisés, publier
lab100dans/etc/ansible/facts.det prouver qu'il remonte - Content Collections, installer une collection épinglée via
requirements.yml, prouver qu'elle est résolvable, utiliser un de ses modules
Barème d'auto-évaluation
Section intitulée « Barème d'auto-évaluation »Le barème ci-dessous raisonne en tâches validées, pas en tests pytest : une même tâche peut échouer sur deux tests pour une seule cause (le booléen SELinux posé mais non persistant, par exemple). Comptez donc une tâche comme ratée dès qu'un de ses tests est rouge, et lisez la ligne correspondante. Le temps compte autant que le score : réussir 19 tâches en 4h05 signifie que vous échouerez à l'examen réel, qui coupe la session à 4h.
| Score mock | Verdict |
|---|---|
| 19/19 en moins de 3h30 | Prêt pour l'examen réel |
| 17-18/19 en moins de 4h | Réviser les catégories ratées avant de tenter |
| 14-16/19 ou plus de 4h | Refaire le mock dans 1 semaine après révision ciblée |
| moins de 14/19 | Reprendre les sections de cours correspondantes |
Recommandation : refaire 2 fois le mock à 1 semaine d'intervalle. La première fois pour identifier les faiblesses, la deuxième pour valider les corrections sous pression chrono. L'écart entre les deux passages est plus informatif que le score absolu : une progression faible signale un problème de méthode (vous cherchez la syntaxe au lieu de la connaître), pas un manque de révision.
Exercices ciblés par objectif EX294
Section intitulée « Exercices ciblés par objectif EX294 »Les exercices suivants sont regroupés par grand objectif du programme officiel Red Hat. La numérotation est celle de ce site et démarre à 2 : l'objectif 1, les tâches attendues d'un RHCSA, est un prérequis de la certification et se révise dans la section Linux, pas ici. Chaque tableau donne le sujet, le lab dédié dans le dépôt ansible-training, et la page de cours à relire en cas d'échec.
Lisez ces tableaux dans l'ordre inverse de votre confort : commencez par les objectifs où le quiz vous a le plus fait perdre de points. Un exercice réussi du premier coup ne vous apprend rien de neuf à ce stade.
Objectif 2, Comprendre les composants core
Section intitulée « Objectif 2, Comprendre les composants core »Cet objectif est celui qu'on croit acquis et qui coûte des points en salle. Le jury ne teste pas votre capacité à réciter la liste des fichiers de configuration, mais votre réflexe de poser un ansible.cfg dans le répertoire du projet avant d'écrire la moindre tâche. Le deuxième exercice porte sur la précédence : ANSIBLE_CONFIG écrase tout le reste, et c'est la cause classique d'un playbook qui se comporte différemment selon le terminal utilisé.
| Exercice | Lab | Page de cours |
|---|---|---|
Configurer ansible.cfg projet avec callbacks | Lab 03a | Configuration Ansible |
Vérifier la précédence ANSIBLE_CONFIG | Lab 03a | Idem |
Objectif 3, Ad-hoc commands
Section intitulée « Objectif 3, Ad-hoc commands »Les commandes ad-hoc ne rapportent pas de points directement, elles vous font gagner du temps. Pendant l'examen, elles servent à vérifier l'état d'une machine sans écrire de playbook : un paquet installé, un service actif, un fact remonté. Le second exercice, setup -a 'filter=ansible_local', est celui à maîtriser en priorité, car c'est la seule façon rapide de prouver qu'un fact personnalisé déposé dans /etc/ansible/facts.d est bien collecté.
| Exercice | Lab | Page de cours |
|---|---|---|
ansible all -m ping | Lab 03 | Commandes ad-hoc |
setup -a 'filter=ansible_local' | Lab 14a | Custom facts |
Objectif 4, Inventaires
Section intitulée « Objectif 4, Inventaires »L'inventaire est la première tâche du mock et la plus coûteuse à rater : toutes les tâches suivantes ciblent des groupes que vous avez définis ici. Une erreur de groupe ne se voit pas, elle se traduit par des tâches qui s'exécutent partout ou nulle part. L'exercice sur l'inventaire dynamique sort du strict périmètre de l'examen, mais il fait comprendre pourquoi group_vars/ est indexé sur le nom de groupe et non sur le fichier d'inventaire.
| Exercice | Lab | Page de cours |
|---|---|---|
| Inventaire YAML 2 groupes + group_vars | Lab 55 | Inventaires |
| Inventaire dynamique (KVM plugin) | Lab 57 | Idem |
Objectif 5, Parallélisme
Section intitulée « Objectif 5, Parallélisme »Un seul exercice ici, mais il couvre deux réglages qu'on confond souvent. forks fixe le nombre de connexions simultanées ouvertes par le nœud de contrôle, c'est un paramètre de performance. serial découpe le play en vagues d'hôtes traitées l'une après l'autre, c'est un paramètre de disponibilité. La tâche 14 du mock attend le second, pas le premier.
| Exercice | Lab | Page de cours |
|---|---|---|
forks=20, serial: 2 rolling update | Lab 09 | Parallélisme |
Objectif 6, ansible-navigator et environnements d'exécution
Section intitulée « Objectif 6, ansible-navigator et environnements d'exécution »ansible-navigator est l'outil que Red Hat pousse depuis RHEL 8, et l'examen s'attend à ce que vous sachiez lancer un playbook dans un environnement d'exécution conteneurisé. Le premier exercice vous fait exécuter un playbook avec l'image creator-ee ; le second vous fait inspecter un environnement pour répondre à la seule question qui compte en examen : quelles collections sont réellement embarquées dedans. Un playbook correct qui échoue parce que la collection manque dans l'image reste un playbook raté.
| Exercice | Lab | Page de cours |
|---|---|---|
ansible-navigator run avec creator-ee | Lab 84 | Modes interactifs |
| Inspecter un EE | Lab 85 | Inspecter un EE |
Objectif 7, Plays et playbooks
Section intitulée « Objectif 7, Plays et playbooks »C'est le bloc le plus lourd du programme, et les quatre exercices sont classés par difficulté croissante. Les deux derniers sont ceux qui départagent : block/rescue/always est attendu à la tâche 13 du mock avec un compteur rescued=1 et ignored=0, ce qui interdit de tricher avec ignore_errors: true. Quant à import_tasks contre include_tasks, retenez que le premier est résolu avant l'exécution, ce qui le rend incompatible avec une boucle ou une variable calculée à la volée.
| Exercice | Lab | Page de cours |
|---|---|---|
| Premier playbook nginx idempotent | Lab 04 | Premier playbook |
block/rescue/always | Lab 23 | Blocks |
Conditions when: + boucles loop: | Labs 19-21 | Contrôle de flux |
import_tasks vs include_tasks | Lab 30a | Import vs Include |
Objectif 8, Modules RHCSA via Ansible
Section intitulée « Objectif 8, Modules RHCSA via Ansible »Ces exercices reprennent des tâches d'administration que vous savez déjà faire à la main, ce qui est précisément le piège : l'examen ne vous demande pas le résultat, il vous demande le résultat persistant et idempotent. Un port ouvert avec firewall-cmd sans --permanent, un booléen SELinux positionné sans persistent: true, un montage sans entrée fstab : dans les trois cas la machine est conforme jusqu'au prochain redémarrage, et la suite pytest du mock teste explicitement cette persistance.
| Exercice | Lab | Page de cours |
|---|---|---|
| User + group + sudoers | Labs 40-43 | Module user · group · sudoers |
| Firewalld + SELinux | Labs 44-45 | Module firewalld · SELinux |
| LVM + XFS + mount | Lab 48 | Idem |
Objectif 9, Templates et Vault
Section intitulée « Objectif 9, Templates et Vault »Les templates Jinja2 et Ansible Vault tombent presque toujours ensemble, parce que l'examen vous fait générer un fichier de configuration contenant un mot de passe. Les filtres default() et combine() du premier exercice évitent le playbook qui plante sur une variable non définie, cas fréquent quand le correcteur relance votre code avec un inventaire légèrement différent. Le troisième exercice, les vault-id multiples, est le seul qui demande un vrai entraînement au clavier : la syntaxe --vault-id prod@prompt ne s'improvise pas sous chrono.
| Exercice | Lab | Page de cours |
|---|---|---|
Template Jinja2 avec default() + combine() | Lab 19 | Filtres Jinja2 |
Vault encrypt_string | Lab 78 | Chiffrer fichier ou variable |
| Multi vault-id | Lab 79 | Vault-id multiples |
Objectif 10, Rôles et collections
Section intitulée « Objectif 10, Rôles et collections »Le rôle est la structure que l'examen sanctionne le plus mécaniquement : un handler mal déclaré, un defaults/main.yml absent, et la tâche tombe. Entraînez-vous à créer l'arborescence complète sans réfléchir, ansible-galaxy role init fait le gros du travail. Sur les collections, la tâche 19 du mock exige une version épinglée dans requirements.yml et la preuve que la collection est résolvable via ansible-galaxy collection list, pas seulement téléchargée. Le dernier exercice combine les deux sujets précédents : un vars/main.yml chiffré à l'intérieur d'un rôle, avec la difficulté que vars/ écrase defaults/ dans la précédence.
| Exercice | Lab | Page de cours |
|---|---|---|
| Créer un rôle complet (defaults + handlers + meta) | Lab 58 | Créer un premier rôle |
requirements.yml multi-sources | Lab 94 | requirements.yml |
Vault dans un rôle (defaults + vars/main.yml chiffré) | Lab 81 | Vault dans les rôles |
Stratégie de révision recommandée
Section intitulée « Stratégie de révision recommandée »Cette progression en six temps tient en trois semaines si vous disposez de quelques heures par jour. Son principe : le quiz mesure la connaissance, les labs construisent le réflexe, le mock valide la tenue sous chrono. Sauter une étape produit le profil classique du candidat recalé, celui qui sait répondre à toutes les questions et n'arrive pas à écrire un rôle complet en vingt minutes.
-
Quiz par sujet, pour chaque banque (Découvrir, Premiers pas, Écrire du code...) : viser 70 % minimum au niveau avancé. Si
<70 %, retourner sur les pages de cours. -
Exercices ciblés, refaire les labs où vous avez raté des questions du quiz. Le lab vous oblige à écrire du code sous contrainte d'idempotence.
-
Mock 1, premier passage du lab
rhce/mock-ex294. Score attendu : 13-16/19. Identifier les faiblesses. -
Révision ciblée, relire les sections où vous avez perdu des points au mock 1.
-
Mock 2, second passage du lab
rhce/mock-ex294, 1 semaine plus tard, en chrono strict 4h. Score attendu : 19/19 en moins de 3h30. -
Réservation examen, si Mock 2 atteint 18/19 en moins de 4h, vous pouvez réserver. Sinon, ajouter une semaine de révision avant Mock 3.
Quand vous êtes vraiment prêt
Section intitulée « Quand vous êtes vraiment prêt »Cette liste ne mesure pas vos connaissances mais votre automatisme. Chaque point est formulé en « sans relire la doc » ou « sans hésitation » parce que l'EX294 ne sanctionne pas l'ignorance, il sanctionne la lenteur : quatre heures pour une vingtaine de tâches laissent environ douze minutes par tâche, écriture, exécution et vérification comprises. Cochez honnêtement, un point sur lequel vous hésitez vous coûtera trois fois ce budget le jour J.
Critères non négociables avant de réserver l'examen :
- Vous écrivez un playbook idempotent sans relire la doc à chaque module.
- Vous structurez un rôle (
defaults / vars / tasks / handlers / meta / templates) sans hésitation. - Vous chiffrez et utilisez un Ansible Vault (
encrypt_string, vault-id multi-environnements). - Vous lancez
ansible-navigator run --eei creator-eesans relire la commande. - Vous résolvez un
changed=Nau second run en quelques minutes. - Vous avez réussi le mock à 19/19 en moins de 3h30, deux fois consécutivement.
- Vous avez 70 % minimum sur chaque banque du quiz interactif niveau avancé.
Si un seul de ces points hésite, ajoutez une semaine de révision.
Pendant l'examen, les rappels critiques
Section intitulée « Pendant l'examen, les rappels critiques »Ces huit rappels ne sont pas les notions les plus difficiles du programme, ce sont celles qui font perdre des points alors que le raisonnement était juste. Le cas du mode: le montre bien : sur ansible-core 2.20, mode: 644 sans zéro initial et sans guillemets donne un fichier en 1204, sticky bit compris, parce que le nombre est lu en décimal ; mode: 0644 passe encore, le zéro initial déclenchant l'interprétation octale du parseur YAML. Quoter systématiquement, mode: "0644", supprime la question. Relisez cette liste juste avant l'examen, puis rendez la feuille : elle sert à recharger la mémoire de travail, pas à réviser.
ansible.cfg: la variableANSIBLE_CONFIGgagne sur tout, puis le fichier du répertoire courant, puis~/.ansible.cfg, puis/etc/ansible/ansible.cfg.- FQCN systématique :
ansible.builtin.copy, jamaiscopy. mode:toujours quoté :mode: "0644".firewalld:permanent: true, immediate: true.python3-libselinuxcôté cible si SELinux est enenforcing.changed_when: falsesur toute commande de lecture.- Vérifier l'idempotence : le second run doit afficher
changed=0. ansible-doc <module>est autorisé pendant l'examen, etansible-doc -l | grep <mot>retrouve un FQCN oublié.
Voir l'aide-mémoire complet pour la liste exhaustive.
À retenir
Section intitulée « À retenir »- Quiz interactif : 653 questions, 10 banques alignées sur les objectifs RHCE 2026.
- Mock examen (lab
rhce/mock-ex294) : 19 tâches en 4h chrono, à passer 2 fois. - 70 % minimum sur chaque banque du quiz au niveau avancé avant de réserver.
- Mock 2 à 18/19 en moins de 4h = signal prêt pour l'examen réel.
ansible-docest autorisé pendant l'examen, pratiquer sa navigation rapide.- Performance-based : la vitesse compte autant que la justesse.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Doc pendant l'examen : quand un exercice bloque sur un paramètre oublié, la bonne réaction est de le retrouver en trente secondes.
- Préparer l'EX374 : la certification qui prend la suite pour qui vise le développement de contenu Ansible.
- Versionner ses playbooks avec Git : l'examen attend aussi le geste Git, rarement travaillé pendant les révisions.