Pratiquer
Labs Ansible
Automatiser sans casser : des playbooks idempotents, des rôles réutilisables, des secrets qui ne fuient pas, et des tests qui le prouvent.
Revenir aux 404 labsComment jouer un lab
- 113 labs
- 82 heures de pratique
- 88 sur machine virtuelle
Ce que vous y pratiquez playbooks et modulesinventairesrôlesVaultMoleculecollectionsexecution environments
La CLI d'abord, avec uv ou pipx : aucun droit d'administration, Python 3.11 suffit. uv tool install dsoxlab # ou : pipx install dsoxlab Installer DSOXLab
Ajouter ce catalogue dsoxlab catalog add https://github.com/stephrobert/ansible-training attestation à produire
Préparer l'environnement
1
-
Lab guidé 25m · débutant · machines virtuelles
Préparer les managed nodes Ansible
Converger les 5 prérequis d'un managed node (Python 3, SSH, sudo NOPASSWD, chrony, SELinux) via un playbook de bootstrap idempotent.
dsoxlab start bootstrap-prepare-managed-nodesRHCE Guide compagnon
Découvrir Ansible
4
-
Lab guidé 25m · débutant · machines virtuelles
Déclaratif vs impératif : pourquoi Ansible ne dérive pas
Comparer un script Bash qui dérive à chaque run et un playbook qui converge, puis prouver l'idempotence par le changed=0 du second passage.
dsoxlab start decouvrir-declaratif-vs-imperatifRHCE Guide compagnon
-
Lab guidé 20m · débutant · terminal
Installation d'Ansible : vérifier son poste de contrôle
Identifier sa méthode d'installation, vérifier les 8 binaires du PATH, les modules accessibles via ansible-doc et les collections du dépôt.
dsoxlab start decouvrir-installation-ansibleRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
ansible.cfg : précédence et options critiques
Écrire un ansible.cfg projet, vérifier la config active avec ansible-config dump, surcharger par variable d'environnement et activer un callback.
dsoxlab start decouvrir-configuration-ansibleRHCE Guide compagnon
-
Lab guidé 20m · débutant · terminal
CLI Ansible : les 8 commandes du quotidien
Enchaîner ad-hoc, ansible-doc, ansible-config, ansible-inventory, ansible-galaxy, ansible-vault et ansible-lint sur le lab.
dsoxlab start decouvrir-prise-en-main-cliRHCE Guide compagnon
Premiers pas
2
-
Lab guidé 30m · débutant · machines virtuelles
Premier playbook : installer nginx sur les webservers
Écrire un playbook de 5 tâches (dnf, systemd, firewalld), lire le PLAY RECAP, capturer une sortie avec register et vérifier l'idempotence.
dsoxlab start premiers-pas-premier-playbookRHCE Guide compagnon
-
Lab guidé 45m · débutant · machines virtuelles
Premiers pas avec ansible-vault
Chiffrer un fichier de secrets avec ansible-vault, le consommer via vars_files et protéger la sortie avec no_log et un .vault_password en 0600.
dsoxlab start premiers-pas-ansible-vaultRHCE Guide compagnon
Écrire du code Ansible
28
-
Lab guidé 40m · intermédiaire · machines virtuelles
Plays et tasks : anatomie et ordre d'exécution
Structurer un play avec pre_tasks, tasks, post_tasks et handlers, puis prouver l'ordre d'exécution réel par des fichiers marqueurs horodatés.
dsoxlab start ecrire-code-plays-et-tasksRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Handlers : le pattern restart-on-config-change
Notifier plusieurs handlers, les découpler avec listen, forcer meta: flush_handlers et combiner validate pour ne jamais appliquer une config invalide.
dsoxlab start ecrire-code-handlersRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Tags : cibler ou ignorer un sous-ensemble de tâches
Poser des tags, cibler avec --tags et exclure avec --skip-tags, inspecter le plan via --list-tasks et exploiter les tags spéciaux always et never.
dsoxlab start ecrire-code-tagsRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Check mode et diff : dry-run et visualisation
Lancer un playbook en --check --diff, repérer les modules non compatibles, forcer check_mode: false et diagnostiquer un faux positif changed.
dsoxlab start ecrire-code-checkmode-diffRHCE Guide compagnon
-
Lab guidé 40m · débutant · machines virtuelles
Variables : déclaration et portées
Déclarer des variables via vars et vars_files, les surcharger avec --extra-vars et diagnostiquer une valeur inattendue liée au typage YAML.
dsoxlab start ecrire-code-variables-baseRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Types collections : listes, dicts, structures imbriquées
Déclarer listes et listes de dicts en YAML, boucler dessus avec loop_control: label, filtrer par when et accéder aux champs imbriqués.
dsoxlab start ecrire-code-types-collectionsRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Facts et magic vars : ansible_facts, hostvars
Lire les facts système, exploiter inventory_hostname, groups et hostvars, puis réduire le coût de collecte avec gather_subset.
dsoxlab start ecrire-code-facts-magic-varsRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Custom facts : facts.d et ansible_local
Déposer un custom fact INI puis un script exécutable retournant du JSON dans /etc/ansible/facts.d, et les lire via ansible_local.
dsoxlab start ecrire-code-custom-factsRHCE Guide compagnon
-
Lab guidé 55m · avancé · machines virtuelles
Précédence des variables : les 22 niveaux
Superposer la même variable à plusieurs niveaux pour démontrer lequel gagne, du role defaults jusqu'à --extra-vars.
dsoxlab start ecrire-code-precedence-variablesRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
register et set_fact : capturer et créer des variables
Capturer la sortie d'un module avec register, la réutiliser dans when et loop, créer un fact au runtime et le persister avec cacheable: true.
dsoxlab start ecrire-code-register-set-factRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
Parallélisme : forks, serial, throttle, strategy
Distinguer forks de serial, jouer un rolling update en serial: 1, comparer les stratégies linear et free et limiter une tâche avec throttle.
dsoxlab start ecrire-code-parallelisme-strategiesRHCE Guide compagnon
-
Lab guidé 45m · avancé · machines virtuelles
Async et poll : tâches longues sans bloquer SSH
Détacher une tâche longue en async + poll: 0, récupérer son résultat via async_status, faire du polling actif et diagnostiquer un job orphelin.
dsoxlab start ecrire-code-async-pollRHCE Guide compagnon
-
Lab guidé 45m · avancé · machines virtuelles
Délégation : delegate_to, run_once, local_action
Rediriger une tâche vers un autre hôte, ne l'exécuter qu'une fois dans un play multi-hôtes et cibler le control node avec local_action.
dsoxlab start ecrire-code-delegationRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Lookups : récupérer des données externes
Lire un fichier, une variable d'environnement ou la sortie d'une commande côté control node, générer un mot de passe et distinguer lookup de query.
dsoxlab start ecrire-code-lookupsRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Jinja2 : interpolation, logique et whitespace
Interpoler des variables, boucler et conditionner dans un template, puis supprimer les sauts de ligne parasites par le whitespace control.
dsoxlab start ecrire-code-jinja2-baseRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Filtres Jinja2 essentiels : default, combine, selectattr
Gérer les variables absentes avec default, manipuler des listes, filtrer une liste de dicts avec selectattr et map, fusionner des dicts avec combine.
dsoxlab start ecrire-code-filtres-jinja-essentielsRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Conditions when : opérateurs et tests Jinja
Conditionner une tâche sur un fact, combiner plusieurs conditions, tester la définition d'une variable et diagnostiquer un when qui matche faux.
dsoxlab start ecrire-code-conditions-whenRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Boucles loop : itérer sur listes et dicts
Boucler sur une liste et une liste de dicts, rendre la sortie lisible avec loop_control: label, itérer sur un dict via dict2items.
dsoxlab start ecrire-code-boucles-loopRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Boucles legacy with_* : migrer vers loop
Reconnaître with_items, with_dict et with_subelements, les migrer vers loop plus filtres Jinja2 et automatiser avec ansible-lint --fix.
dsoxlab start ecrire-code-boucles-with-deprecatedRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
block, rescue, always : try/catch/finally
Grouper des tâches dans un block, capturer l'erreur avec rescue pour rollback, garantir le nettoyage avec always et lire ansible_failed_task.
dsoxlab start ecrire-code-block-rescue-alwaysRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
failed_when et changed_when : redéfinir succès et changement
Neutraliser le changed des commandes lecture-seule, définir changed_when sur la sortie et accepter certains codes retour comme succès.
dsoxlab start ecrire-code-failed-when-changed-whenRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
ignore_errors : usage légitime vs anti-pattern
Mesurer l'effet d'ignore_errors sur le PLAY RECAP, identifier ses rares cas légitimes et lui préférer failed_when ou block/rescue.
dsoxlab start ecrire-code-ignore-errorsRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
any_errors_fatal : arrêter le play à la première erreur
Activer any_errors_fatal sur un play multi-hôtes, le comparer au défaut et à max_fail_percentage, et le combiner avec serial.
dsoxlab start ecrire-code-any-errors-fatalRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
Filtres Jinja2 avancés : regex, b64, password_hash
Extraire avec regex_search, encoder en base64, hacher un mot de passe en sha512, interroger un JSON avec json_query et manipuler des CIDR.
dsoxlab start ecrire-code-filtres-jinja-avancesRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Tests Jinja2 : is defined, is mapping, is sequence
Tester la définition et le type d'une variable, matcher une regex avec is match et is search, et combiner ces tests dans when et {% if %}.
dsoxlab start ecrire-code-tests-jinjaRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Module template : validate, backup, whitespace
Générer une config depuis un template Jinja2, rejeter une syntaxe invalide avec validate, sauvegarder l'ancienne et poser mode, owner et group.
dsoxlab start ecrire-code-module-templateRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
lineinfile vs template : quand utiliser quoi
Arbitrer entre lineinfile, blockinfile et template, les combiner (base plus overrides) et diagnostiquer un lineinfile qui empile faute de regexp.
dsoxlab start ecrire-code-lineinfile-vs-templateRHCE Guide compagnon
-
Lab guidé 45m · avancé · machines virtuelles
Import vs include : statique ou dynamique
Choisir entre import_* parsé au démarrage et include_* résolu au runtime, et observer comment tags et when changent de comportement selon le cas.
dsoxlab start ecrire-code-import-includeRHCE Guide compagnon
Modules de fichiers
7
-
Lab guidé 35m · débutant · machines virtuelles
Module copy : transférer fichiers et contenu inline
Transférer un fichier avec src: ou écrire un contenu inline avec content:, en maîtrisant mode, owner, backup et validate.
dsoxlab start modules-fichiers-copyRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
Module file : états, permissions et liens symboliques
Gérer l'état d'un fichier ou d'un répertoire (directory, absent, link, hard, touch), les permissions récursives et les liens symboliques.
dsoxlab start modules-fichiers-fileRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
Module blockinfile : bloc multi-lignes idempotent
Insérer et maintenir un bloc multi-lignes dans un fichier existant avec markers personnalisés, insertafter/insertbefore et idempotence.
dsoxlab start modules-fichiers-blockinfileRHCE Guide compagnon
-
Lab guidé 25m · débutant · machines virtuelles
Module lineinfile : modifier une ligne dans un fichier
Ajouter, remplacer par regexp ou supprimer une ligne d'un fichier de configuration, avec backrefs et validation de syntaxe avant écriture.
dsoxlab start modules-fichiers-lineinfileRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Module replace : remplacer un motif dans un fichier
Substituer un motif regex dans tout un fichier, borner la zone avec before/after et préserver une partie via groupes de capture.
dsoxlab start modules-fichiers-replaceRHCE Guide compagnon
-
Lab guidé 35m · débutant · machines virtuelles
Module fetch : rapatrier des fichiers des managed nodes
Collecter logs et configurations des managed nodes vers le control node, en arborescence par hôte ou en mode flat avec inventory_hostname.
dsoxlab start modules-fichiers-fetchRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
Modules archive et unarchive : compresser et extraire
Créer une archive tar.gz sur le managed node et extraire des tarballs locaux, distants ou déjà présents, de façon idempotente avec creates.
dsoxlab start modules-fichiers-archive-unarchiveRHCE Guide compagnon
Modules de paquets
3
-
Lab guidé 30m · débutant · machines virtuelles
Module package : installation agnostique multi-distro
Installer et désinstaller des paquets sans dépendre du gestionnaire de la distribution, en pesant state: present contre state: latest.
dsoxlab start modules-paquets-packageRHCE Guide compagnon
-
Lab guidé 45m · avancé · machines virtuelles
Module dnf : enablerepo, security, exclude, autoremove
Activer un repo à la volée, patcher uniquement les CVE, exclure le kernel d'un upgrade massif et nettoyer les dépendances orphelines.
dsoxlab start modules-paquets-dnf-optionsRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Module yum_repository : déclarer un dépôt RPM
Déclarer un dépôt yum/dnf avec gpgcheck, importer sa clé GPG via rpm_key et désactiver un dépôt sans le supprimer.
dsoxlab start modules-paquets-yum-repositoryRHCE Guide compagnon
Modules de services
2
-
Lab guidé 35m · débutant · machines virtuelles
Module systemd_service : gérer les services systemd
Démarrer, activer, recharger et masquer des services, déposer un unit file custom avec daemon_reload et notifier un service depuis un handler.
dsoxlab start modules-services-systemdRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
Module cron : planifier des jobs idempotents
Planifier des jobs cron idempotents via crontab user ou /etc/cron.d, avec variables d'environnement et désactivation propre.
dsoxlab start modules-services-cronRHCE Guide compagnon
Modules d'utilisateurs
4
-
Lab guidé 35m · débutant · machines virtuelles
Module user : créer, modifier et supprimer des comptes
Créer des comptes avec home, shell et groupes secondaires, hasher un mot de passe, forcer un UID et supprimer un compte avec son home.
dsoxlab start modules-utilisateurs-userRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
Module group : gérer les groupes Linux
Créer des groupes avec GID forcé, distinguer groupe système et groupe utilisateur, et créer le groupe avant les utilisateurs qui le référencent.
dsoxlab start modules-utilisateurs-groupRHCE Guide compagnon
-
Lab guidé 35m · débutant · machines virtuelles
Module authorized_key : clés SSH des utilisateurs
Provisionner des clés SSH publiques, forcer une liste exclusive, restreindre une clé avec key_options et traiter plusieurs users avec subelements.
dsoxlab start modules-utilisateurs-authorized-keyRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
Module sudoers : gérer les droits sudo sans risque
Créer des règles dans /etc/sudoers.d/ avec validation visudo, limiter les commandes autorisées et gérer nopassword sur un groupe.
dsoxlab start modules-utilisateurs-sudoersRHCE Guide compagnon
Modules RHEL
7
-
Lab guidé 30m · débutant · machines virtuelles
Module firewalld : gérer le pare-feu RHEL
Autoriser services prédéfinis et ports custom par zone, avec le piège permanent + immediate et la recharge du pare-feu.
dsoxlab start modules-rhel-firewalldRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Module sysctl : paramètres kernel persistés
Modifier des paramètres kernel (ip_forward, tcp_syncookies, swappiness) avec application immédiate et persistance via /etc/sysctl.d/.
dsoxlab start modules-rhel-sysctlRHCE Guide compagnon
-
Lab guidé 55m · avancé · machines virtuelles
Module selinux : modes, booléens et contextes
Passer SELinux en enforcing, modifier un booléen avec persistance et poser un contexte custom avec sefcontext puis restorecon.
dsoxlab start modules-rhel-selinuxRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Module mount : gérer fstab et les montages
Gérer les 5 états de mount, monter un loop device, poser des options noatime/nodev/nosuid et faire survivre un montage au reboot.
dsoxlab start modules-rhel-mountRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Module parted : créer une partition disque
Créer des partitions alignées en MBR ou GPT de façon idempotente, poser des flags (lvm, boot, esp) et inspecter la table existante.
dsoxlab start modules-rhel-partedRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Module filesystem : créer un système de fichiers
Formater des partitions en ext4 et xfs, choisir le bon fstype selon l'usage et forcer une recréation avec force: true.
dsoxlab start modules-rhel-filesystemRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
LVM : chaîner lvg, lvol, filesystem et mount
Construire un PV, un VG et un LV sur un disque secondaire, le formater, le monter via fstab et l'étendre à chaud avec resizefs.
dsoxlab start modules-rhel-lvm-storageRHCE Guide compagnon
Modules réseau
2
-
Lab guidé 35m · débutant · machines virtuelles
Module get_url : télécharger un fichier HTTP/HTTPS
Télécharger un fichier sur le managed node de façon idempotente, vérifier son intégrité par checksum sha256 et authentifier la requête.
dsoxlab start modules-reseau-get-urlRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
Module uri : appels API REST
Appeler une API REST en GET/POST avec body JSON, accepter plusieurs status_code et boucler un healthcheck avec until/retries.
dsoxlab start modules-reseau-uriRHCE Guide compagnon
Modules de diagnostic
4
-
Lab guidé 30m · débutant · machines virtuelles
Module stat : inspecter fichiers et dossiers
Vérifier existence, type, taille, mode et checksum d'un fichier sans le modifier, pour piloter une logique conditionnelle.
dsoxlab start modules-diagnostic-statRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
Module find : recherche multi-fichiers
Rechercher des fichiers par glob, regex, âge, taille et type, puis enchaîner loop et file pour un cleanup ciblé et idempotent.
dsoxlab start modules-diagnostic-findRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Modules assert et fail : validation défensive
Valider les prérequis en début de play, personnaliser fail_msg et success_msg, et échouer explicitement sur une branche d'erreur.
dsoxlab start modules-diagnostic-assert-failRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Modules wait_for et pause : synchronisation
Attendre l'ouverture ou la fermeture d'un port TCP, l'apparition d'un fichier ou d'une regex, et marquer une pause simple ou interactive.
dsoxlab start modules-diagnostic-wait-for-pauseRHCE Guide compagnon
Inventaires
4
-
Lab guidé 40m · débutant · machines virtuelles
Écrire un inventaire statique de zéro : groupes, enfants et variables de groupe
Rédiger un inventaire statique Ansible à la main : déclarer des groupes d'hôtes, un groupe parent avec enfants, et des variables de groupe, puis prouver l'inventaire résolu avec ansible-inventory et ansible -m ping.
dsoxlab start inventaires-statiquesRHCE Guide compagnon
-
Lab guidé 30m · débutant · machines virtuelles
group_vars et host_vars : structurer les variables
Répartir les variables d'inventaire entre all, groupe et host, puis vérifier la valeur résolue avec ansible-inventory --host.
dsoxlab start inventaires-group-vars-host-varsRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Patterns d'hôtes : wildcards et opérateurs :, &, !
Cibler exactement les hôtes voulus avec --limit et les opérateurs union, intersection et exclusion, sans toucher au playbook.
dsoxlab start inventaires-patterns-hotesRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Inventaire dynamique KVM avec community.libvirt
Découvrir automatiquement les VMs libvirt via le plugin d'inventaire, créer des groupes Jinja et keyed_groups, sans inventaire manuel.
dsoxlab start inventaires-dynamique-kvmRHCE Guide compagnon
Rôles
7
-
Lab guidé 45m · débutant · machines virtuelles
Créer son premier rôle avec ansible-galaxy role init
Générer la structure d'un rôle webserver, remplir tasks, defaults, handlers et meta, puis l'appeler depuis un playbook avec roles:.
dsoxlab start roles-creer-premier-roleRHCE Guide compagnon
-
Lab guidé 35m · intermédiaire · machines virtuelles
Variables d'un rôle : defaults/ vs vars/ et précédence
Répartir les variables entre defaults/ (surchargeables) et vars/ (internes), les brancher aux tâches et à un template Jinja2, puis vérifier la précédence.
dsoxlab start roles-variables-defaults-varsRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · machines virtuelles
Handlers et meta d'un rôle : notify et galaxy_info
Écrire plusieurs handlers (service et non-service), les déclencher avec notify, arbitrer restarted vs reloaded, puis compléter meta/main.yml pour Galaxy.
dsoxlab start roles-handlers-metaRHCE Guide compagnon
-
Lab guidé 50m · intermédiaire · machines virtuelles
argument_specs : valider les variables d'entrée d'un rôle
Écrire meta/argument_specs.yml pour typer, contraindre et documenter les variables d'entrée, puis observer le rejet automatique d'une entrée invalide.
dsoxlab start roles-argument-specsRHCE Guide compagnon
-
Lab guidé 50m · intermédiaire · machines virtuelles
Consommer un rôle : roles:, import_role, include_role
Appeler un même rôle des trois façons possibles et choisir entre statique et dynamique, notamment quand un when: entre en jeu.
dsoxlab start roles-consommer-roleRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Dépendances entre rôles via meta/main.yml
Chaîner des rôles avec dependencies:, leur passer des variables, maîtriser l'ordre d'exécution et éviter le piège du diamant avec allow_duplicates.
dsoxlab start roles-dependenciesRHCE Guide compagnon
-
Lab guidé 1h · avancé · machines virtuelles
Rôles système RHEL : converger la synchronisation horaire avec timesync
Consommer un rôle éditeur de linux-system-roles : piloter chronyd sur db1.lab par les variables de timesync, sans écrire chrony.conf à la main.
dsoxlab start roles-system-rolesRHCE Guide compagnon
Tests avec Molecule
4
-
Lab guidé 45m · avancé · terminal
Molecule : anatomie d'un scénario de test
Lire un scénario molecule/default/ : molecule.yml, converge.yml, verify.yml, driver, plateformes, verifier, puis dérouler le cycle complet.
dsoxlab start molecule-introduction -
Lab guidé 35m · intermédiaire · terminal
Molecule : enrichir un scénario au-delà du minimum
Ajouter prepare.yml et requirements.yml, personnaliser les instances via host_vars, définir une test_sequence avec idempotence, activer profile_tasks.
dsoxlab start molecule-installation-config -
Lab guidé 45m · avancé · terminal
Molecule : développer un rôle users par les tests
Écrire verify.yml et argument_specs.yml avant la moindre tâche, puis itérer converge jusqu'au vert et refactorer sans casser les tests.
dsoxlab start molecule-tdd-cycle -
Lab guidé 45m · avancé · terminal
Molecule : tester un rôle sur plusieurs distributions
Étendre la matrice Molecule à trois distributions, charger vars/<os_family>.yml et absorber les écarts de paquets et de chemins avec le module package.
dsoxlab start molecule-scenarios-multi-distro
Tests Python et lint
3
-
Lab guidé 40m · avancé · terminal
Molecule + testinfra : assertions Python sur un rôle
Basculer le verifier sur testinfra, écrire des assertions avec la fixture host, paramétrer les cas avec parametrize, et arbitrer face à verify.yml.
dsoxlab start tests-testinfra -
Lab guidé 40m · avancé · terminal
tox : tester un rôle sur plusieurs versions d'ansible-core
Écrire un tox.ini qui épingle une version d'ansible-core par environnement et lance molecule test sur toute la matrice en une commande.
dsoxlab start tests-tox-multiversion -
Lab guidé 40m · avancé · terminal
ansible-lint profil production avec pre-commit
Configurer .ansible-lint en profil production et un .yamllint strict, puis les câbler dans pre-commit avec un hook anti-fuite de secrets.
dsoxlab start tests-ansible-lint-production
Intégration continue
2
-
Lab guidé 40m · avancé · terminal
GitHub Actions : workflow CI pour un rôle
Écrire un workflow lint + molecule avec une matrice distros x versions d'ansible-core, cache pip, permissions minimales et persist-credentials désactivé.
dsoxlab start ci-github-actions -
Lab guidé 40m · avancé · terminal
GitLab CI : pipeline parallel:matrix pour un rôle
Écrire un .gitlab-ci.yml en stages lint, test et release, décliner la matrice avec parallel:matrix et réserver la publication Galaxy aux tags Git via rules:.
dsoxlab start ci-gitlab
Galaxy et publication
4
-
Lab guidé 20m · débutant · terminal
CLI ansible-galaxy : init, install, list, build, publish
Initialiser un rôle et une collection, installer depuis Galaxy ou Git, lister l'existant, builder un tarball et publier avec un token API.
dsoxlab start galaxy-ansible-galaxy-cliRHCE Guide compagnon
-
Lab guidé 30m · intermédiaire · terminal
Installer rôles et collections depuis Galaxy ou Git
Écrire un requirements.yml mêlant rôles Galaxy, sources Git et collections, épingler chaque version et vendoriser un rôle pour un projet reproductible.
dsoxlab start galaxy-installer-rolesRHCE Guide compagnon
-
Lab guidé 40m · avancé · terminal
Auditer un rôle Galaxy avant de l'adopter
Noter un rôle tiers sur six axes (mainteneur, qualité, sécurité, tests), repérer les anti-patterns et trancher : adopter, forker ou refuser.
dsoxlab start galaxy-auditer-role-existant -
Lab guidé 35m · avancé · terminal
Versionner et publier un rôle : semver, tags Git, Galaxy
Appliquer le semver à un rôle, tenir un CHANGELOG.md, poser un tag Git annoté et automatiser la publication Galaxy depuis la CI.
dsoxlab start galaxy-versionner-publier
Ansible Vault
7
-
Lab guidé 35m · débutant · machines virtuelles
Ansible Vault : chiffrer un premier fichier de secrets
Chiffrer un fichier YAML avec ansible-vault, le consulter, l'éditer, le consommer dans un playbook, puis le rekey et le déchiffrer.
dsoxlab start vault-introductionRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
encrypt_string ou chiffrement du fichier entier
Chiffrer une valeur isolée avec encrypt_string, la mêler à des variables en clair via le tag !vault, et arbitrer entre inline et fichier complet.
dsoxlab start vault-chiffrer-fichier-variableRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
Vault-ids multiples : isoler dev, staging et prod
Chiffrer chaque environnement avec un vault-id étiqueté, déchiffrer plusieurs vault-ids dans un même run et organiser les group_vars par environnement.
dsoxlab start vault-id-multiplesRHCE Guide compagnon
-
Lab guidé 50m · intermédiaire · machines virtuelles
Playbooks mixtes : main.yml et vault.yml par groupe
Séparer variables publiques et secrets dans chaque group_vars, adopter la convention vault_*, et vérifier qu'Ansible fusionne les deux fichiers sans effort.
dsoxlab start vault-playbooks-mixtesRHCE Guide compagnon
-
Lab guidé 50m · intermédiaire · machines virtuelles
Vault dans un rôle : defaults en clair, vars chiffré
Exposer dans defaults/main.yml des variables publiques qui pointent vers des vault_* d'un vars/main.yml chiffré, et les surcharger depuis le playbook.
dsoxlab start vault-dans-rolesRHCE Guide compagnon
-
Lab guidé 50m · avancé · terminal
Récupérer des secrets depuis HashiCorp Vault ou OpenBao
Démarrer un Vault local, y stocker un secret, le lire depuis Ansible avec community.hashi_vault, et comparer les auth token, AppRole et JWT.
dsoxlab start vault-integration-hashicorpRHCE Guide compagnon
-
Lab guidé 40m · intermédiaire · terminal
Récupérer des secrets depuis Passbolt
Démarrer un Passbolt CE local, l'authentifier par clé OpenPGP, lire un secret depuis Ansible et comparer le modèle Passbolt à HashiCorp Vault.
dsoxlab start vault-integration-passboltRHCE Guide compagnon
Execution Environments
5
-
Lab guidé 40m · intermédiaire · terminal
Premier playbook dans un Execution Environment
Tirer une image EE avec Podman, la déclarer par défaut dans ansible-navigator.yml, y lancer un playbook et comparer avec un ansible-playbook classique.
dsoxlab start ee-hello -
Lab guidé 30m · intermédiaire · terminal
Inspecter un Execution Environment et choisir le bon
Lister le contenu d'un EE avec ansible-navigator, comparer community-ansible-dev-tools, awx-ee et community-ee-minimal, puis choisir selon le cas d'usage.
dsoxlab start ee-inspection -
Lab guidé 55m · avancé · terminal
Construire un EE sur mesure avec ansible-builder v3
Écrire un execution-environment.yml v3, épingler ansible-core et les dépendances, builder avec Podman, tester l'image et la pousser sur un registre.
dsoxlab start ee-builder-custom -
Lab guidé 55m · avancé · terminal
Pipeline CI/CD pour Execution Environments
Builder un EE en CI, le scanner avec Trivy en mode bloquant, le signer avec cosign keyless et le publier, actions épinglées par SHA et permissions minimales.
dsoxlab start ee-ci-pipeline -
Lab guidé 40m · avancé · terminal
Déboguer un Execution Environment cassé
Diagnostiquer un EE qui build sans erreur mais reste vide : version de schéma oubliée, collection ou version PyPI inexistante, puis corriger et vérifier.
dsoxlab start ee-debug
Dépannage
3
-
Lab guidé 40m · intermédiaire · machines virtuelles
Niveaux de verbosité et callback plugins
Choisir le niveau -v adapté au symptôme, activer profile_tasks et la sortie YAML (callback_result_format), et constater ce qu'un no_log manquant laisse fuiter.
dsoxlab start troubleshooting-verbositeRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
Débogueur interactif : debugger: on_failed
Activer le débogueur sur échec, inspecter task, task_vars et result dans le REPL, corriger les arguments à chaud puis rejouer la tâche avec redo.
dsoxlab start troubleshooting-debuggerRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
Réparer l'idempotence cassée et optimiser les performances
Rendre idempotent un shell avec creates ou changed_when, mesurer un baseline avec profile_tasks, puis activer pipelining, forks et ControlPersist.
dsoxlab start troubleshooting-idempotence-perfsRHCE Guide compagnon
Collections
6
-
Lab guidé 50m · avancé · machines virtuelles
Explorer les collections Ansible : FQCN et structure
Lister et inspecter les collections installées, lire un galaxy.yml, parcourir la structure plugins/roles/playbooks et retrouver un module par son FQCN.
dsoxlab start collections-decouvrirRHCE Guide compagnon
-
Lab guidé 45m · avancé · machines virtuelles
Automation content navigator : découvrir un module dans une collection et l'utiliser
Utiliser ansible-navigator pour trouver un module dans une collection installée, l'appliquer pour produire un état kernel vérifiable sur db1.lab, puis valider un inventaire avec ansible-navigator inventory.
dsoxlab start collections-navigatorRHCE Guide compagnon
-
Lab guidé 45m · intermédiaire · machines virtuelles
requirements.yml multi-sources et signatures GPG
Déclarer quatre sources dans un requirements.yml, épingler chaque version, vérifier l'intégrité et cibler plusieurs serveurs Galaxy.
dsoxlab start collections-requirementsRHCE Guide compagnon
-
Lab guidé 55m · avancé · terminal
Construire sa propre collection avec un module Python custom
Initialiser une collection, renseigner galaxy.yml et meta/runtime.yml, y ajouter un rôle et un module Python documenté, puis builder le tarball.
dsoxlab start collections-creer-custom -
Lab guidé 45m · avancé · terminal
Matrice CI pour une collection : ansible-core x Python
Croiser les versions d'ansible-core et de Python dans une matrice, lancer ansible-test sanity et units en conteneur, épingler les actions par SHA.
dsoxlab start collections-ci-tests -
Lab guidé 1h · avancé · machines virtuelles
Migrer un rôle standalone vers une collection
Déplacer un rôle et son module custom dans une collection, configurer plugin_routing.redirect, et vérifier que l'ancien nom marche avec un warning.
dsoxlab start collections-migration-role
Pratiques avancées
2
-
Lab guidé 25m · débutant · terminal
Versionner ses playbooks avec Git
Initialiser un dépôt Git pour ses playbooks, les suivre et les committer, puis les pousser vers un dépôt bare local : le geste exact attendu à l'EX294, sans forge à monter.
dsoxlab start pratiques-versionner-gitRHCE Guide compagnon
-
Lab guidé 50m · avancé · machines virtuelles
ansible-pull : pattern GitOps et Edge
Lancer ansible-pull contre un dépôt Git, le planifier par cron ou timer systemd, l'amorcer via cloud-init, puis arbitrer push ou pull selon le cas d'usage.
dsoxlab start pratiques-ansible-pull-gitops
Examen RHCE EX294
2
-
Capstone 4h · avancé · machines virtuelles
Examen blanc RHCE EX294 : 18 tâches en 4 heures
Traiter sous chrono 18 tâches couvrant inventaires, variables, vault, fichiers, paquets, services, rôles, gestion d'erreur, déploiement par vagues, délégation, tags, tâches planifiées et facts personnalisés, chacune validée par pytest.
dsoxlab start rhce-mock-ex294RHCE Guide compagnon
-
Capstone 4h · avancé · machines virtuelles
Examen blanc RHCE EX294 #2
Un second examen blanc EX294 complet et chronométré : les 19 mêmes catégories que le mock #1, mais toutes les valeurs concrètes changent (pile Apache/valkey, autres utilisateurs, autre découpage LVM, autres ports, autre booléen SELinux, autre horaire de cron, autre collection). Rien ne se recopie de mémoire. Chaque tâche est prouvée par pytest.
dsoxlab start rhce-mock-ex294-2RHCE Guide compagnon