Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Travailler dans un lab dsoxlab : mission, cours, ssh, indices

Par mis à jour le

Améliorer cette page

Logo DSOXLab

Dans un lab dsoxlab, quatre commandes aident à travailler : challenge dit ce qu'il faut produire, course et guide donnent la matière, ssh ouvre une machine du lab, et hint révèle un indice contre des points. Cette leçon s'adresse à qui vient de démarrer un lab et veut savoir où lire quoi. Elle insiste sur le seul geste qui a un prix, l'indice, parce que son coût est enregistré dès qu'on le demande.

  • Lire la mission d'un lab avec dsoxlab challenge.
  • Lire le cours d'un lab section par section avec dsoxlab course.
  • Distinguer course, qui affiche la leçon, de guide, qui donne l'adresse du guide en ligne.
  • Entrer sur une machine du lab avec dsoxlab ssh.
  • Lire le coût d'un indice et calculer ce qu'il retire à la note, sachant que dsoxlab hint le facture sans confirmation.

Il vous faut un lab démarré, comme le décrit la leçon Démarrer un lab, avec la CLI dsoxlab en version 0.8.0 ou plus récente. Les commandes de cette leçon acceptent toutes l'identifiant du lab en argument : une fois un lab actif, il devient facultatif. Sur un lab shell, tapez-les dans la session ouverte par run ou dans un second terminal. Sur un lab vm, dsoxlab n'existe pas sur la machine du lab : utilisez un second terminal sur votre poste.

Où lire la mission et le cours : challenge, course, guide ?

Section intitulée « Où lire la mission et le cours : challenge, course, guide ? »

dsoxlab challenge affiche la mission, c'est-à-dire ce qui sera vérifié ; dsoxlab course affiche la leçon livrée avec le lab ; dsoxlab guide donne l'adresse du guide en ligne. Les trois ne font pas la même chose, et les confondre fait chercher la mission dans le cours ou le cours dans la mission.

Les exemples de cette section utilisent le lab l2-swap-management du catalogue linux.

Fenêtre de terminal
dsoxlab challenge l2-swap-management
dsoxlab course l2-swap-management
dsoxlab guide l2-swap-management

La mission est le texte à lire en premier, parce qu'elle dit quels fichiers ou quels états produire, et donc ce que check mesurera. Le cours est la matière pour y arriver : le scénario du lab, puis son README.

Quand le lab découpe son cours en sections, course en affiche une section à la fois, avec le sommaire au premier passage, et retient où vous vous êtes arrêté. --next et --prev avancent et reculent, --section va à une section nommée, et --all affiche le cours entier d'un coup.

Le guide est une autre chose : dsoxlab guide affiche l'adresse du guide en ligne du lab, tel qu'il est publié sur le site, avec ses images et sa navigation. Il n'ouvre le navigateur que si vous ajoutez --open, parce que l'adresse vient du catalogue et que c'est à vous de décider d'y aller. --print donne le même résultat que le défaut et sert aux scripts. Un lab qui ne déclare aucune adresse répond par une erreur et sort en code 1.

course et challenge passent par un pagineur (un afficheur qui défile page par page) dès que leur sortie dépasse la hauteur du terminal : less -R par défaut, remplaçable par la variable DSOXLAB_PAGER ou PAGER, et q le quitte. Un tube ou une redirection n'est jamais paginé et reçoit le texte entier ; --no-pager affiche tout d'un coup.

Fenêtre de terminal
DSOXLAB_PAGER='bat --plain' dsoxlab course l2-swap-management
dsoxlab challenge l2-swap-management --no-pager
dsoxlab course l2-swap-management > cours.txt

Vous avez compris cette étape quand vous pouvez dire, sans relire, ce que la mission demande de produire. Sur un lab vm, run affiche la mission juste avant d'ouvrir la session SSH. Sur la machine du lab, dsoxlab n'existe pas : pour relire la mission, remontez dans le défilement du terminal, ou tapez dsoxlab challenge dans un second terminal.

Comment entrer sur une machine du lab avec dsoxlab ssh ?

Section intitulée « Comment entrer sur une machine du lab avec dsoxlab ssh ? »

dsoxlab ssh <hôte> ouvre une session SSH interactive sur un hôte déclaré par le catalogue, avec la bonne clé et, s'il y en a un, le bon bastion (la machine d'entrée par laquelle on passe pour atteindre les autres). Vous pouvez donner le nom court (docker) ou le nom complet (docker.lab). Un nom inconnu sort en code 1 en listant les hôtes déclarés. Sur le catalogue containers, après dsoxlab start epreuve-livrer-une-image, les deux hôtes s'appellent docker.lab et docker-client.lab, et la commande donne ceci :

Fenêtre de terminal
dsoxlab ssh docker.lab
ℹ Connexion à docker.lab (10.10.120.11)…

Cette ligne annonce l'hôte et son adresse, puis la session s'ouvre sur la machine, avec l'invite de docker.lab. Pour ce relevé, la commande a été jouée dans un script, sans terminal : OpenSSH a rendu la main aussitôt, après deux messages que l'extrait ne reproduit pas (pas de pseudo-terminal alloué, hôte ajouté aux hôtes connus). Dans un vrai terminal, la session reste ouverte jusqu'à exit.

dsoxlab ssh n'accepte qu'un nom d'hôte, pas de commande à exécuter dessus. Voici la réponse quand on en ajoute une :

$ dsoxlab ssh docker-client.lab hostname
Usage: dsoxlab ssh [OPTIONS] {host}
Try 'dsoxlab ssh --help' for help.
╭─ Error ──────────────────────────────────────────────────────────────────────╮
│ Got unexpected extra argument(s) (hostname) │
╰──────────────────────────────────────────────────────────────────────────────╯

La commande sort en code 2 et n'exécute rien : ouvrez la session, puis tapez la commande sur la machine.

dsoxlab ssh est la voie qui ne dépend pas de votre configuration SSH personnelle. La clé SSH est propre au catalogue : c'est le fichier ssh/id_ed25519 qu'instructor bootstrap a produit. La commande l'utilise, ignore votre ~/.ssh/config (-F /dev/null), et passe tout seul par le bastion quand l'infrastructure en expose un. Vous avez réussi quand vous vous retrouvez sur la machine, avec son invite, comme sur un serveur réel.

Un ssh docker.lab tapé à la main peut aussi marcher, à une condition. dsoxlab provision écrit pour cela un fragment ~/.ssh/config.d/<catalogue>.conf (nom de machine, clé, bastion) et annonce « Connexion directe activée : ssh <machine> fonctionne désormais ». Ce fragment n'est lu que si votre ~/.ssh/config contient la ligne Include ~/.ssh/config.d/*.conf. Sans elle, provision écrit le fragment et vous prévient qu'il ne sera jamais lu : ajoutez la ligne en tête du fichier.

Ce raccourci disparaît avec les machines : dsoxlab destroy retire le fragment, et ssh <machine> cesse alors de marcher jusqu'au prochain provision.

Certains labs vous laissent aussi sur votre poste, à la racine du dépôt : vous écrivez alors votre code d'ici et lancez vos commandes vers les hôtes, et le panneau d'accueil du lab vous renvoie vers dsoxlab ssh quand le sujet le demande. Si run vous a déjà connecté à une machine, les commandes dsoxlab n'y existent pas : tapez-les après exit, ou dans un second terminal.

Que coûte un indice, et comment le demander avec dsoxlab hint ?

Section intitulée « Que coûte un indice, et comment le demander avec dsoxlab hint ? »

dsoxlab hint révèle l'indice suivant, dans l'ordre où l'auteur les a écrits, et son coût est enregistré avant même que l'indice s'affiche. La commande ne demande aucune confirmation : taper hint suffit à payer. Le coût retiré est ensuite visible dans le résultat de check, qui l'intègre à la note.

Fenêtre de terminal
dsoxlab hint epreuve-livrer-une-image
dsoxlab hint epreuve-livrer-une-image

Voici le bas du panneau de l'indice après chacun des deux appels, sur le lab epreuve-livrer-une-image. Le texte de l'indice, remplacé par [...], occupe le haut du panneau, dont le titre est « Indice 1/4 » puis « Indice 2/4 », avec le rang de l'indice et le nombre total que le lab en propose :

[...]
│ Coût : -10 pts Pénalité totale hints : -10 pts │
╰──────────────────────────────────────────────────────────────────────────────╯
[...]
│ Coût : -15 pts Pénalité totale hints : -25 pts │
╰──────────────────────────────────────────────────────────────────────────────╯

La ligne Coût, au bas du panneau de l'indice, est celle à regarder. Le premier nombre est ce que cet indice vient de coûter, le second le cumul des indices pris sur ce lab. Le coût change d'un indice à l'autre : -10 pour le premier, -15 pour le second, soit -25 au total. Un dsoxlab check lancé ensuite l'affiche dans son panneau : « 2 indices utilisés, -25 pts ».

Un indice pris est enregistré tout de suite, et relancer le lab ne l'annule pas. Parmi reset, clean et destroy, seul reset efface les indices du lab et remet leur coût à zéro : la leçon Recommencer ou nettoyer en traite.

La note part de 100, ou du barème que déclare le hints.yaml du lab. Le lab de démonstration de la leçon Jouer son premier lab l'a montré avec un indice à 20 points : les indices amputent le barème avant que la proportion de tests réussis s'applique, et non la note après coup. Il ne reste alors que 80 points à gagner, donc deux tests réussis sur trois valent 53 sur 100 (2/3 de 80), et non 47. Sans indice, ils vaudraient 67.

Les tentatives déjà enregistrées gardent la liste des indices que vous aviez vus à ce moment-là, même après un reset : la leçon Faire valider son travail détaille ce que garde une tentative.

Trois réponses ne coûtent rien. hint répond « Tous les indices ont été utilisés » quand le lab n'en propose plus, « Aucun indice disponible pour ce lab » quand il n'en déclare aucun, et un message qui dit que la commande est sans objet sur un lab de type validation, qui défend un guide publié et ne note personne. Dans ces trois cas, rien n'est facturé.

Aucun de ces cas n'est une panne : la commande répond à ce qu'elle voit, et le message dit quoi faire.

SymptômeCauseSolution
guide affiche une adresse mais n'ouvre rien--open n'est pas passé : l'adresse vient du catalogue, la CLI n'ouvre pas seuledsoxlab guide <id> --open
guide répond par une erreur et sort en 1Le lab ne déclare aucune adresse de guideLire le cours avec dsoxlab course <id>
course n'affiche qu'une sectionLe lab découpe son cours--next pour avancer, --all pour tout lire
ssh sort en 1 en listant des hôtesLe nom donné n'est pas un hôte du catalogueReprendre un des noms listés, court ou complet
ssh sort en 2 avec « Got unexpected extra argument(s) »Une commande a été ajoutée après le nom de l'hôte, et la commande n'en accepte pasOuvrir la session avec dsoxlab ssh <hôte>, puis taper la commande sur la machine
hint répond « Tous les indices ont été utilisés »Les indices du lab sont épuisésRelire vos notes ou le défilement de votre terminal ; reset efface les indices et permet de les redemander, mais il défait aussi le travail en cours
Les commandes dsoxlab échouent depuis la machine du labdsoxlab n'existe pas sur la machine du labexit, ou un second terminal sur votre poste
  • challenge dit ce qui sera vérifié, course affiche la leçon, guide donne l'adresse du guide en ligne.
  • guide n'ouvre le navigateur qu'avec --open.
  • course retient la section où l'on s'est arrêté ; --all affiche tout.
  • course et challenge passent par un pagineur ; un tube ou une redirection reçoit le texte entier.
  • dsoxlab ssh utilise la clé du catalogue et le bastion quand il y en a un.
  • hint enregistre son coût avant d'afficher l'indice, sans confirmation.
  • Les indices amputent le barème avant la proportion de tests réussis : un indice à 20 points et deux tests sur trois valent 53 sur 100.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

8 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Ce projet vous est utile ?

Je prends le temps de rédiger ces guides, de tester les commandes et de vérifier les labs pour que vous puissiez apprendre gratuitement. Si ce travail vous aide, offrez-moi un café. C'est une façon simple de contribuer à la suite du projet.

Offrir un café (nouvel onglet) Soutenir chaque mois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn