Aller au contenu
English
medium

dsoxlab : jouer et valider les labs des formations

11 min de lecture

dsoxlab est la ligne de commande qui fait tourner les labs des formations de ce site. Elle prépare un environnement jetable, vous confie une mission, puis vérifie l'état réel du système pour dire si la compétence est acquise et calculer un score. Elle s'installe en une commande, et le lab de démonstration livré avec elle ne demande ni machine virtuelle, ni conteneur, ni Docker.

Ce guide vous fait jouer un lab complet de bout en bout, puis brancher les catalogues des formations. Il s'adresse à toute personne qui suit un parcours du site et veut prouver ce qu'elle sait faire, pas seulement le lire.

  • Installer la CLI dsoxlab et vérifier que votre poste est prêt.
  • Jouer un lab complet sans provisionner la moindre machine.
  • Comprendre la boucle cours, mission, indice, validation, et le calcul du score.
  • Brancher les catalogues de labs Linux, Ansible, Terraform et Kubernetes.
  • Diagnostiquer les deux erreurs qui reviennent le plus souvent au démarrage.

Il en faut peu, et c'est voulu : Python 3.11 ou plus récent, et l'un des deux installeurs d'outils Python, uv ou pipx. Rien à cloner, rien à compiler. Les labs qui réclament des machines virtuelles ont des prérequis supplémentaires, traités plus bas, mais aucun n'est nécessaire pour commencer.

dsoxlab est un moteur, pas un cours. Il lit un catalogue déclaratif : un fichier meta.yml à la racine dit ce que le catalogue offre, et un lab.yaml par lab dit ce que ce lab réclame. Le moteur provisionne ce qui est demandé, ouvre la session, puis exécute des tests.

Ces tests sont sa raison d'être. Ils lisent l'état du système, jamais les commandes tapées. Un lab qui exige un service actif vérifie que ce service tourne, peu importe le chemin emprunté pour y arriver. Cette règle a une conséquence agréable : toute façon de réussir compte, y compris celle que l'auteur du lab n'avait pas prévue.

En revanche, dsoxlab ne porte aucun contenu pédagogique propre. Les guides vivent sur ce site, les labs dans des dépôts compagnons, et le moteur ne sait rien de Linux, d'Ansible ou de Kubernetes en particulier.

Une seule commande, et rien n'est posé dans votre système en dehors de l'outil lui-même :

Fenêtre de terminal
uv tool install dsoxlab # ou : pipx install dsoxlab

Vérifiez ensuite que votre poste a ce qu'il faut. La commande doctor sépare ce qui est requis de ce qui est seulement informatif, ce qui évite de courir après un composant dont vous n'avez aucun besoin :

Fenêtre de terminal
dsoxlab doctor
Requis pour ce dépôt
┃ Composant ┃ Statut ┃ Détail
│ Python │ ✔ OK │ 3.14.2
│ pytest │ ✔ OK │ embarqué avec dsoxlab (celui qu'utilise « check »)
│ ShellRuntime │ ✔ OK │ toujours disponible
│ git │ ✔ OK │ git version 2.43.0
│ Labs détectés │ ✔ OK │ 1 lab(s) dans ~/.local/share/dsoxlab/demo

Le tableau informatif qui suit celui-ci liste Docker, KVM et Incus. Aucun ne bloque quoi que ce soit tant que vous ne jouez pas un lab qui le réclame.

La commande demo installe un catalogue d'un seul lab, dont le sujet est dsoxlab lui-même. Il tourne en runtime shell : ni machine virtuelle, ni conteneur, donc il fonctionne partout où la CLI fonctionne.

Fenêtre de terminal
dsoxlab demo
cd ~/.local/share/dsoxlab/demo
dsoxlab list-labs

Le tableau affiché porte une ligne par lab, avec sa section, son identifiant, son type, son runtime, sa durée et son score :

SectionIDTitreTypeRuntimeDuréeScore
demopremiers-pasPremiers paslabshell5mvide

La colonne Score reste vide tant que le lab n'a pas été validé. C'est elle qui vous dira, plus tard, où vous en êtes sur un catalogue de soixante labs, et lesquels restent à rejouer.

La boucle d'un lab : cours, mission, indice, validation

Section intitulée « La boucle d'un lab : cours, mission, indice, validation »

Quatre commandes suffisent, et elles se suivent toujours dans le même ordre.

Le cours donne la matière. Sur les catalogues des formations, il renvoie vers la leçon correspondante de ce site :

Fenêtre de terminal
dsoxlab course premiers-pas

La mission dit ce qu'il faut produire, et surtout ce qui sera vérifié :

Fenêtre de terminal
dsoxlab challenge premiers-pas

Le lab de démonstration réclame trois fichiers dans reponses/, et sa mission annonce noir sur blanc sa règle de correction : « Les fichiers, et rien d'autre. Ni votre historique, ni les commandes tapées. Toute façon de les créer compte. »

L'indice est disponible à tout moment, et son coût est annoncé avant d'être consommé. Sur ce lab, il retire 20 points sur 100 :

Fenêtre de terminal
dsoxlab hint premiers-pas

La validation exécute les tests, affiche le détail de chacun et enregistre le résultat :

Fenêtre de terminal
dsoxlab check premiers-pas

Le panneau de fin résume les trois chiffres qui comptent. Voici celui obtenu en jouant ce lab avec un indice pris :

Ligne du panneauValeur obtenue
Tests3 / 3
Hints1 utilisé, pénalité de 20 points
Score80 / 100 pts

Le barème est donc lisible : la réussite vaut les points, l'indice les réduit, et dsoxlab scores garde l'historique complet, y compris les tentatives ratées.

Voici l'erreur qui coûte le plus de temps, et elle ne se devine pas. dsoxlab run ne se contente pas d'afficher des instructions : il prépare un répertoire de travail isolé, challenge/work/, et vous y place.

Fenêtre de terminal
dsoxlab run premiers-pas
✔ Lab premiers-pas prêt. Vous êtes dans challenge/work/, votre répertoire de
travail isolé.

Les tests lisent des chemins relatifs à ce répertoire. Si vous créez vos fichiers ailleurs, par exemple directement dans challenge/, ils ne les trouvent pas, le score tombe à zéro, et le message vous invite à créer un fichier que vous venez pourtant de créer :

E Crée le fichier, par exemple : mkdir -p reponses && echo <le mot> > reponses/indice.txt
E assert False
E + where False = exists()

La règle tient en une phrase : passez toujours par dsoxlab run avant de travailler, et restez là où il vous dépose. Tapez exit pour quitter la session sans rien enregistrer.

Le lab de démonstration ne sert qu'à comprendre la mécanique. Les vrais labs vivent dans des catalogues, un par formation, que la CLI sait installer et tenir à jour :

Fenêtre de terminal
dsoxlab catalog list
dsoxlab catalog add linux
dsoxlab catalog use linux

Trois catalogues sont connus par leur identifiant en version 0.1.87 :

IdentifiantDescription
linuxAdministration Linux, RHCSA et LFCS
ansibleAnsible, du premier playbook aux collections
terraformTerraform et l'infrastructure as code

Le catalogue Kubernetes ne figure pas encore dans ce registre. Il s'installe par l'URL de son dépôt, que catalog add accepte aussi bien qu'un identifiant :

Fenêtre de terminal
dsoxlab catalog add https://github.com/stephrobert/kubernetes-dsoxlab-training

Une fois un catalogue actif, dsoxlab next recommande le lab suivant et dsoxlab progress affiche l'avancement par bloc. C'est le point de vue qui manque le plus quand on suit une formation longue : savoir ce qui reste à prouver.

Certaines compétences ne se prouvent pas dans un conteneur, parce que le noyau est partagé avec l'hôte. Un profil AppArmor, une montée de version kubeadm, un kubelet cassé ou une restauration d'etcd exigent de vraies machines. Ces labs déclarent alors un runtime vm, et deux commandes encadrent leur cycle de vie :

Fenêtre de terminal
dsoxlab provision # crée l'infrastructure du lab
dsoxlab destroy # la détruit, machines hors état comprises

La commande doctor vous dira si le fournisseur attendu, KVM ou Incus, est présent. Détruisez toujours l'infrastructure après coup : ces machines consomment mémoire et disque bien après la fin du lab.

Les deux premières lignes couvrent l'essentiel des blocages rencontrés au démarrage. La troisième est plus rare, mais son message n'oriente pas vers sa cause, ce qui la rend coûteuse.

SymptômeCauseSolution
Les tests réclament un fichier qui existe déjàFichiers créés hors du répertoire de travail du labLancer dsoxlab run <id> et travailler là où il dépose
Aucun catalogue installéLa CLI est installée, mais aucun catalogue n'est branchédsoxlab catalog add <id> puis dsoxlab catalog use <id>
Un lab reste bloqué au provisionnementFournisseur KVM ou Incus absent ou arrêtédsoxlab doctor, puis installer le fournisseur attendu

En cas de doute, dsoxlab support produit un rapport de diagnostic anonymisé, à coller dans une issue du dépôt du catalogue concerné. Le journal complet est de toute façon écrit dans ~/.local/state/dsoxlab/dsoxlab.log.

  • dsoxlab est un moteur de labs, sans contenu propre : les guides sont sur ce site, les labs dans des dépôts compagnons.
  • Les tests lisent l'état du système, jamais les commandes tapées : toute façon de réussir compte.
  • Le lab de démonstration ne demande aucune infrastructure et fait parcourir toute la boucle en cinq minutes.
  • dsoxlab run place dans un répertoire de travail isolé, où les tests lisent des chemins relatifs : c'est le piège le plus coûteux.
  • Un indice coûte des points, et son prix est annoncé avant d'être consommé.
  • Les catalogues linux, ansible et terraform s'installent par leur identifiant, Kubernetes par l'URL de son dépôt en version 0.1.87.
  • Un lab en runtime vm se détruit après usage avec dsoxlab destroy.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn