LABS / 04 / ACADEMY 5.2

Pratiquer dans un cadre borné.

40 laboratoires guidés définissent environnement, étapes, commandes non destructives, preuves attendues et règles de sécurité.
40labs pratiques0terminés20–90min/lab
LABS / 04
40résultats
LAB-LNX-001BEGINNER · 75 MIN

Établir la carte d’identité vérifiable d’un hôte Linux

Distinguer noyau, distribution, architecture, init et environnement sans confondre fichier déclaratif et état effectif.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. uname -srmoPreuve : Sorties datées avec code retour et versions.
  2. cat /etc/os-releasePreuve : Tableau fait / déduction / inconnu.
  3. ps -p 1 -o pid,comm,args=Preuve : Empreinte SHA-256 de la fiche finale.
  4. systemd-detect-virt || true
LAB-LNX-002INTERMEDIATE · 110 MIN

Diagnostiquer un service systemd sans redémarrage réflexe

Relier état d’unité, processus, dépendances et journaux avant de proposer une action.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. systemctl status lab-example.service --no-pager -lPreuve : Chronologie UTC du service et de ses dépendances.
  2. systemctl show lab-example.service -p ActiveState -p SubState -p Result -p ExecMainStatusPreuve : Hypothèses classées par signal attendu.
  3. systemctl list-dependencies --reverse lab-example.servicePreuve : Plan de changement avec preuve de retour arrière.
  4. journalctl -u lab-example.service --since '-15 min' --no-pager
LAB-LNX-003INTERMEDIATE · 90 MIN

Distinguer espace disque plein et épuisement des inodes

Expliquer pourquoi une création peut échouer malgré des gigaoctets libres.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. df -hTPreuve : Comparaison blocs/inodes annotée.
  2. df -ihPreuve : Liste bornée des concentrations utiles.
  3. find /var/tmp -xdev -type f -printf '.' | wc -cPreuve : Décision qui ne supprime aucun fichier à l’aveugle.
  4. lsof +L1 2>/dev/null | head -50
LAB-LNX-004BEGINNER · 80 MIN

Résoudre un accès refusé avec permissions et ACL

Tracer chaque composante de chemin, identité et ACL avant de changer un mode.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. idPreuve : Chaîne de décision identité → chemin → ACL.
  2. umaskPreuve : Test positif et test négatif.
  3. namei -l /srv/lab/report.txtPreuve : Diff avant/après de la cible de laboratoire.
  4. getfacl -p /srv/lab/report.txt
LAB-LNX-005ADVANCED · 120 MIN

Lire un échec de démarrage depuis le boot précédent

Reconstruire la séquence de démarrage sans modifier GRUB, initramfs ni unité de production.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. journalctl --list-bootsPreuve : Chronologie du boot précédent.
  2. journalctl -b -1 -p warning..alert --no-pagerPreuve : Graphe cause probable / conséquences.
  3. systemd-analyze timePreuve : Unité vérifiée sans redémarrage.
  4. systemd-analyze critical-chain
  5. systemd-analyze verify /etc/systemd/system/*.service
LAB-LNX-006INTERMEDIATE · 90 MIN

Comparer configuration livrée, surcharge locale et état effectif

Éviter de modifier le mauvais fichier lorsqu’une surcharge ou une option runtime domine.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. systemctl cat lab-example.servicePreuve : Ordre de précédence expliqué.
  2. systemctl show lab-example.service -p FragmentPath -p DropInPaths -p EnvironmentPreuve : Écart fichier / état effectif identifié.
  3. systemd-delta --type=extendedPreuve : Rollback textuel vérifiable.
  4. systemd-analyze cat-config systemd/system/lab-example.service
LAB-AUT-001INTERMEDIATE · 105 MIN

Transformer un script Bash fragile en outil d’exploitation

Ajouter validation des entrées, arrêt explicite, journal, dry-run et nettoyage fiable.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. bash -n lab-script.shPreuve : Table des erreurs avant/après.
  2. shellcheck lab-script.shPreuve : Sorties de quatre tests avec codes retour.
  3. bash -x lab-script.sh --dry-run ./fixtures/inputPreuve : Journal sans secret ni donnée sensible.
  4. printf '%q ' "$PWD"
LAB-AUT-002ADVANCED · 120 MIN

Construire un collecteur Python borné pour incident

Collecter des preuves en parallèle avec délais, limites et manifeste d’intégrité.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. python3 -m compileall collector.pyPreuve : Manifeste avec heure UTC, version et verdict par commande.
  2. python3 -m unittest -vPreuve : Tests négatifs conservés.
  3. python3 collector.py --profile fixtures/read-only.yml --output ./evidencePreuve : Archive anonymisée distincte de l’original.
  4. sha256sum ./evidence/*
LAB-AUT-003INTERMEDIATE · 100 MIN

Qualifier un rôle Ansible en check mode puis en laboratoire

Démontrer idempotence, périmètre et rollback avant déploiement.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Inventaire local de deux conteneurs ou VM jetables, sans secret de production.

  1. ansible-playbook --syntax-check site.ymlPreuve : Diff prévisionnel puis diff réel.
  2. ansible-playbook -i inventory/lab site.yml --check --diff --limit canaryPreuve : Second run idempotent.
  3. ansible-playbook -i inventory/lab site.yml --limit canaryPreuve : Santé fonctionnelle avant, après et après rollback.
  4. ansible-playbook -i inventory/lab rollback.yml --limit canary
LAB-AUT-004ADVANCED · 130 MIN

Concevoir une promotion canary avec arrêt automatique

Relier version immuable, préflight, canary, métriques et décision GO/NO-GO.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Deux services de démonstration et données synthétiques, sans trafic réel.

  1. sha256sum artifacts/release.tar.gzPreuve : Matrice gate / commande / seuil / propriétaire.
  2. promtool test rules tests/canary-rules.ymlPreuve : NO-GO démontré sur signal injecté.
  3. curl -fsS http://127.0.0.1:9090/-/readyPreuve : Rollback qui restaure la version et la santé.
  4. git diff --exit-code -- deployment/
LAB-NET-001BEGINNER · 80 MIN

Tracer une résolution DNS de bout en bout

Distinguer configuration locale, cache, autorité, transport et réponse applicative.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM Linux jetable, compte non privilégié et snapshot initial.

  1. resolvectl statusPreuve : Schéma stub → récursif → autorité.
  2. getent ahosts example.orgPreuve : TTL et codes de réponse comparés.
  3. dig example.org A +noall +answerPreuve : Cas NXDOMAIN documenté.
  4. dig example.org +trace
  5. resolvectl statistics
LAB-NET-002INTERMEDIATE · 105 MIN

Diagnostiquer un service joignable localement mais pas à distance

Suivre écoute, route, filtrage et chemin client sans ouvrir le pare-feu à l’aveugle.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Deux namespaces réseau ou deux VM reliées par un réseau privé de laboratoire.

  1. ip -br addressPreuve : Matrice point de vue / résultat / latence.
  2. ss -lntpPreuve : Capture bornée avec SYN/SYN-ACK ou absence expliquée.
  3. ip route get 192.0.2.20Preuve : Correction minimale testée dans le namespace.
  4. nft list ruleset
  5. tcpdump -ni any -c 5 'tcp port 8080'
LAB-NET-003ADVANCED · 110 MIN

Identifier un trou noir MTU sans conclure sur un simple ping

Relier taille de paquet, PMTUD, encapsulation et symptôme applicatif.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Topologie réseau de laboratoire avec un lien à MTU réduite ou une trace fournie.

  1. ip -d link showPreuve : Table taille / résultat / code ICMP.
  2. tracepath -n 192.0.2.20Preuve : Calcul d’overhead explicite.
  3. ping -M do -s 1472 -c 2 192.0.2.20Preuve : Test applicatif après correction en laboratoire.
  4. tcpdump -ni any -c 20 'icmp or icmp6'
LAB-NET-004ADVANCED · 120 MIN

Lire une saturation réseau avec files, pertes et retransmissions

Distinguer congestion, erreur physique, drops noyau et limite applicative.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Interface de laboratoire sous trafic synthétique borné ou jeu de métriques fourni.

  1. ip -s link show dev eth0Preuve : Compteurs avant/après normalisés par durée.
  2. tc -s qdisc show dev eth0Preuve : Séparation physique / noyau / TCP / application.
  3. nstat -az | head -80Preuve : Verdict avec niveau de confiance.
  4. ss -ti
  5. ethtool -S eth0 2>/dev/null | head -80
LAB-STO-001INTERMEDIATE · 100 MIN

Lire un RAID logiciel dégradé sans lancer de reconstruction

Identifier membre, état, événements et risque avant toute action.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Image mdraid de laboratoire ou sorties `mdadm` figées ; aucun disque de production.

  1. cat /proc/mdstatPreuve : Table membre / rôle / état / compteur d’événements.
  2. mdadm --detail /dev/md0Preuve : Évaluation du risque pendant la fenêtre dégradée.
  3. mdadm --examine /dev/loop1 /dev/loop2Preuve : Plan sans commande destructive exécutée.
  4. lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
LAB-STO-002ADVANCED · 115 MIN

Diagnostiquer une latence I/O sans accuser le disque trop tôt

Relier latence, file, saturation, taille de requête, processus et couche de stockage.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Volume de laboratoire et charge fio bornée ou capture iostat fournie.

  1. lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTSPreuve : Topologie des couches de stockage.
  2. iostat -xz 1 5Preuve : Série courte de métriques horodatées.
  3. pidstat -d 1 5Preuve : Hypothèse appuyée par au moins deux signaux.
  4. lvs -a -o +devices
  5. cat /proc/pressure/io
LAB-STO-003INTERMEDIATE · 105 MIN

Prouver une restauration de sauvegarde 3-2-1

Valider intégrité, permissions, application et temps de reprise, pas seulement la copie de fichiers.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Jeu de données synthétique, sauvegarde chiffrée de laboratoire et cible de restauration séparée.

  1. sha256sum -c SHA256SUMSPreuve : Chronologie et durée réelle de reprise.
  2. find restored -printf '%M %u:%g %s %p ' | sortPreuve : Écarts de métadonnées expliqués.
  3. diff -qr source restoredPreuve : Verdict RPO/RTO avec limite de portée.
  4. time ./verify-restored-service.sh restored
LAB-STO-004ADVANCED · 120 MIN

Distinguer serveur NFS, réseau et client saturé

Croiser statistiques RPC, montages, retransmissions et latence applicative.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Client et serveur NFS de laboratoire ou captures `nfsiostat`/`nfsstat` fournies.

  1. findmnt -t nfs,nfs4 -o TARGET,SOURCE,FSTYPE,OPTIONSPreuve : Fenêtre UTC commune à tous les compteurs.
  2. nfsstat -cPreuve : Hypothèse client/réseau/serveur comparée.
  3. nfsstat -sPreuve : Aucun réglage appliqué sans benchmark de référence.
  4. nfsiostat 1 3
  5. ss -ti dst :2049
LAB-HPC-001INTERMEDIATE · 100 MIN

Cartographier CPU, NUMA, mémoire et périphériques

Construire une topologie exploitable avant tout benchmark ou placement de job.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Nœud Linux de laboratoire ; les résultats restent propres à cette machine.

  1. lscpu -e=CPU,NODE,SOCKET,CORE,ONLINEPreuve : Schéma sockets/NUMA/PCIe daté.
  2. numactl --hardwarePreuve : Liste des limites de généralisation.
  3. lspci -tvPreuve : Hypothèses de placement explicitement non testées.
  4. for d in /sys/class/net/*/device/numa_node; do printf '%s ' "$d"; cat "$d"; done
LAB-HPC-002ADVANCED · 125 MIN

Construire un benchmark HPC qui mesure ce qu’il annonce

Contrôler échauffement, affinité, données, répétitions et bruit avant de comparer.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Nœud de laboratoire réservé ; aucune performance n’est publiée hors de ce périmètre.

  1. lscpuPreuve : Protocole versionné avant exécution.
  2. taskset -pc $$Preuve : Résultats bruts et calculs séparés.
  3. numactl --showPreuve : Conclusion bornée au matériel et aux versions.
  4. perf stat -r 5 -- ./benchmark --size 1000
  5. turbostat --Summary --quiet --interval 1 --num_iterations 5 2>/dev/null
LAB-SLM-001INTERMEDIATE · 95 MIN

Expliquer pourquoi un job Slurm reste en attente

Relier reason code, demande, association, partition et disponibilité sans annuler ni modifier le job.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Cluster Slurm de laboratoire ou sorties synthétiques explicitement marquées, sans modification de politique globale.

  1. squeue -j 8291 -o '%.18i %.10P %.18j %.8u %.2t %.10M %.6D %R'Preuve : Reason code relié à une limite précise.
  2. scontrol show job -dd 8291Preuve : Demande et disponibilité comparées avec unités.
  3. sacctmgr show assoc user=alice format=cluster,account,user,partition,qos,grptres,maxtrespjPreuve : Solution utilisateur ou ciblée avant toute politique globale.
  4. sinfo -Nel -o '%N %T %c %m %G %E'
LAB-SLM-002INTERMEDIATE · 90 MIN

Qualifier un nœud Slurm en DRAIN

Distinguer raison administrative, échec de santé, état démon et effet sur les jobs.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Cluster Slurm de laboratoire ou sorties synthétiques explicitement marquées, sans modification de politique globale.

  1. scontrol show node node042Preuve : Chronologie drain/daemon/jobs.
  2. sinfo -RPreuve : Écart configuration/détection expliqué.
  3. sacct -N node042 -S now-2hours -o jobid,state,exitcode,elapsedPreuve : Checklist RESUME sans exécution sur production.
  4. journalctl -u slurmd --since '-30 min' --no-pager
LAB-SLM-003ADVANCED · 110 MIN

Lire priorité et fair-share sans promettre une heure de départ

Décomposer facteurs de priorité et expliquer leurs limites au demandeur.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Cluster Slurm de laboratoire ou sorties synthétiques explicitement marquées, sans modification de politique globale.

  1. sprio -j 8291 -lPreuve : Décomposition des facteurs avec unités.
  2. sshare -l -A researchPreuve : Éléments volatils explicitement listés.
  3. squeue --start -j 8291Preuve : Aucune heure présentée comme garantie.
  4. scontrol show reservation
  5. sdiag
LAB-SLM-004ADVANCED · 120 MIN

Auditer une QoS sans casser les garanties partagées

Relier limites de job, utilisateur, compte et groupe aux reason codes observés.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Cluster Slurm de laboratoire ou sorties synthétiques explicitement marquées, sans modification de politique globale.

  1. sacctmgr show qos format=name,priority,flags,grptres,maxtresperuser,maxtresperjob,maxwallPreuve : Matrice limite / portée / utilisateurs affectés.
  2. sacctmgr show assoc tree format=cluster,account,user,partition,qos,shares,grptresPreuve : Tests `--test-only` conservés.
  3. scontrol show config | grep -E 'PriorityType|AccountingStorageTRES'Preuve : Exception bornée avec rollback administratif.
  4. sbatch --test-only --qos=gpu --gres=gpu:1 lab-job.sh
LAB-SLM-005ADVANCED · 115 MIN

Valider l’allocation GPU avec GRES et TRES

Vérifier configuration, détection, allocation et accounting d’un GPU typé.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Cluster Slurm de laboratoire ou sorties synthétiques explicitement marquées, sans modification de politique globale.

  1. scontrol show node gpu01 | grep -E 'Gres=|CfgTRES=|AllocTRES='Preuve : Chaîne configuration → allocation → visibilité → accounting.
  2. scontrol show job -dd 8291 | grep -E 'TresPerNode|TresPerJob|Gres|TRES'Preuve : Type GPU et quantité non ambigus.
  3. sacct -j 8291 --allocations -o jobid,state,alloctres,reqtresPreuve : Résultat simulé marqué lorsqu’aucun GPU n’est disponible.
  4. srun --test-only --gres=gpu:a100:1 --pty true
LAB-SLM-006EXPERT · 135 MIN

Reconstruire une incohérence d’accounting Slurm

Distinguer retard de collecte, champ mal interprété, job step et perte réelle de données.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Cluster Slurm de laboratoire ou sorties synthétiques explicitement marquées, sans modification de politique globale.

  1. sacct -X -j 8291 -o jobid,jobname,state,start,end,elapsed,reqtres,alloctres,exitcodePreuve : Chronologie job/step/ingestion.
  2. sstat -j 8291.batch -o jobid,avecpu,averss,maxrssPreuve : Champs comparés avec définition officielle.
  3. systemctl status slurmdbd --no-pager -lPreuve : Aucune correction de base proposée sans sauvegarde.
  4. sacctmgr show cluster format=cluster,controlhost,controlport,rpc
LAB-MPI-001INTERMEDIATE · 105 MIN

Diagnostiquer un lancement MPI qui échoue avant le calcul

Séparer allocation Slurm, runtime MPI, transport, bibliothèques et application.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Deux nœuds de laboratoire ou traces de lancement explicitement synthétiques.

  1. srun --mpi=listPreuve : Matrice couche / test / verdict.
  2. scontrol show job -dd 8291Preuve : Programme minimal et sortie conservés.
  3. ldd ./mpi-appPreuve : Compatibilité limitée aux versions testées.
  4. ompi_info --version
  5. srun -N2 -n2 --mpi=pmix ./mpi-hello
LAB-MPI-002ADVANCED · 125 MIN

Comparer affinité MPI/OpenMP et topologie NUMA

Prouver le placement réel de ranks et threads avant d’interpréter une performance.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Nœud de laboratoire réservé avec application synthétique courte.

  1. lscpu -e=CPU,NODE,SOCKET,COREPreuve : Carte rank/thread/CPU/NUMA.
  2. srun -n4 --cpu-bind=verbose,cores ./affinity-reportPreuve : Deux politiques avec protocole identique.
  3. OMP_DISPLAY_ENV=VERBOSE OMP_NUM_THREADS=4 ./omp-reportPreuve : Dispersion et limites rapportées.
  4. numastat -p $$
LAB-OBS-001INTERMEDIATE · 95 MIN

Diagnostiquer une cible Prometheus DOWN

Distinguer découverte, DNS, TLS, transport, endpoint et exposition de métriques.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Prometheus et exporter de laboratoire, sans secret ni endpoint public.

  1. curl -fsS 'http://127.0.0.1:9090/api/v1/targets?state=active'Preuve : Erreur Prometheus conservée sans secret.
  2. getent ahosts node-exporter.labPreuve : Chaîne découverte → endpoint annotée.
  3. openssl s_client -connect node-exporter.lab:9100 -servername node-exporter.lab </dev/nullPreuve : Cible UP après correction de laboratoire.
  4. curl --max-time 5 -fsS https://node-exporter.lab:9100/metrics | head
LAB-OBS-002INTERMEDIATE · 100 MIN

Écrire une alerte utile avec attente et runbook

Alerter sur un symptôme actionnable, limiter le bruit et valider la règle.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Fichier de règles et séries synthétiques testées avec promtool.

  1. promtool check rules rules.ymlPreuve : Tests de règle avec chronologie.
  2. promtool test rules tests/rules.test.ymlPreuve : Alerte reliée à une action précise.
  3. git diff -- rules.yml tests/rules.test.ymlPreuve : Cas no-data explicite.
  4. grep -R 'runbook_url' -n rules.yml
LAB-OBS-003ADVANCED · 110 MIN

Contenir une explosion de cardinalité

Identifier le label responsable et corriger l’instrumentation sans masquer le service.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Jeu de séries Prometheus de laboratoire ou snapshot TSDB synthétique.

  1. curl -fsS http://127.0.0.1:9090/api/v1/status/tsdbPreuve : Top métriques et labels avant/après.
  2. curl -fsS 'http://127.0.0.1:9090/api/v1/label/__name__/values'Preuve : Budget de cardinalité documenté.
  3. promtool tsdb analyze ./dataPreuve : Requête métier conservée par un test.
  4. grep -R 'WithLabelValues' -n ./src | head -50
LAB-OBS-004ADVANCED · 120 MIN

Construire le tableau de bord minimal d’un nœud HPC

Relier santé de l’hôte, jobs, pression et accélérateurs à des actions documentées.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Grafana/Prometheus de laboratoire avec métriques synthétiques et annotations explicites.

  1. promtool check rules rules/hpc-node.ymlPreuve : Questions et décisions associées aux panneaux.
  2. jq empty dashboards/hpc-node.jsonPreuve : Captures des quatre états synthétiques.
  3. curl -fsS 'http://127.0.0.1:9090/api/v1/query?query=up'Preuve : Provenance et unité visibles.
  4. git diff -- dashboards/hpc-node.json rules/hpc-node.yml
LAB-CTR-001INTERMEDIATE · 100 MIN

Exécuter un service Podman rootless avec limites

Prouver identité, namespaces, cgroup et accès fichiers sans privilège hôte.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Compte utilisateur dédié sur VM jetable, image locale épinglée par digest.

  1. podman info --format json | jq '.host.security'Preuve : Digest et configuration exécutée.
  2. podman image inspect --format '{{.Digest}} {{.Config.User}}' localhost/lab@sha256:deadbeefPreuve : Test positif/négatif d’accès fichiers.
  3. podman inspect lab-servicePreuve : Limites visibles dans cgroup v2.
  4. podman top lab-service user huser pid hpid args
  5. systemd-cgls --user-unit user@$(id -u).service
LAB-CTR-002INTERMEDIATE · 105 MIN

Auditer les bind mounts d’un conteneur Apptainer

Distinguer image immuable, vues hôte, variables et données de job.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Image Apptainer de laboratoire et répertoires de données synthétiques.

  1. sha256sum lab.sifPreuve : Empreinte image et définition.
  2. apptainer inspect --json lab.sifPreuve : Matrice chemin / mode / provenance.
  3. apptainer exec --containall lab.sif mountPreuve : Absence de secret dans l’environnement.
  4. apptainer exec --cleanenv lab.sif env | sort
  5. apptainer exec --containall --bind ./data:/data:ro lab.sif test -r /data/input.dat
LAB-CTR-003ADVANCED · 120 MIN

Rendre une image IA reproductible et vérifiable

Épingler base, dépendances et artefacts puis reconstruire la même intention.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Dépôt de démonstration sans modèle propriétaire ni secret de registre.

  1. podman build --pull=never -t localhost/ai-lab:v1 .Preuve : Base et dépendances épinglées.
  2. podman inspect localhost/ai-lab:v1 --format '{{.Id}}'Preuve : SBOM reliée au digest.
  3. syft localhost/ai-lab:v1 -o spdx-json > sbom.spdx.jsonPreuve : Écarts de rebuild documentés, sans prétendre au bit-identique non prouvé.
  4. git grep -nE '(token|password|secret)=' -- . ':!*.example'
LAB-GPU-001INTERMEDIATE · 90 MIN

Qualifier la disponibilité réelle d’un GPU

Distinguer présence PCIe, pilote chargé, device, runtime CUDA et allocation Slurm.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Nœud GPU de laboratoire ; si aucun GPU n’est disponible, utiliser les sorties fournies et marquer SIMULATED.

  1. lspci -nn | grep -i 'vga|3d|nvidia'Preuve : Chaîne PCIe → pilote → device → runtime.
  2. lsmod | grep '^nvidia'Preuve : Aucun résultat matériel inventé.
  3. nvidia-smi --query-gpu=index,name,uuid,driver_version,memory.total,memory.used --format=csvPreuve : Verdict et périmètre horodatés.
  4. journalctl -k --since '-1 hour' | grep -iE 'nvrm|xid|gpu' | tail -50
  5. python3 -c 'import torch; print(torch.cuda.is_available(), torch.cuda.device_count())'
LAB-GPU-002ADVANCED · 110 MIN

Diagnostiquer un OOM GPU sans confondre capacité et fuite

Relier allocation du job, processus, VRAM, fragmentation et forme de la charge.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Job IA synthétique de laboratoire ou journaux anonymisés fournis.

  1. nvidia-smi pmon -c 1Preuve : Courbe mémoire par itération.
  2. nvidia-smi --query-compute-apps=pid,process_name,used_memory,gpu_uuid --format=csvPreuve : Correspondance PID/job/GPU.
  3. sstat -j 8291.batch -o jobid,maxrss,avecpuPreuve : Une variation à la fois et aucun gain inventé.
  4. python3 gpu-memory-report.py --iterations 10
LAB-GPU-003ADVANCED · 125 MIN

Cartographier une topologie multi-GPU avant le placement

Relier PCIe, NUMA, NVLink et interfaces réseau aux choix de ranks.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

Nœud multi-GPU de laboratoire ou matrice topologique fournie et marquée SIMULATED.

  1. nvidia-smi topo -mPreuve : Carte GPU/NUMA/NIC.
  2. nvidia-smi topo -C -i 0Preuve : Visibilité Slurm cohérente avec l’allocation.
  3. lspci -tvPreuve : Placement proposé comme hypothèse testable.
  4. numactl --hardware
  5. srun --gres=gpu:2 bash -lc 'printf "%s\n" "$CUDA_VISIBLE_DEVICES"; nvidia-smi -L'
LAB-SEC-001INTERMEDIATE · 105 MIN

Auditer SSH sans se verrouiller hors du serveur

Comparer configuration effective, surface d’écoute, clés et journaux avant durcissement.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM avec console de secours et seconde session de laboratoire ouvertes.

  1. sshd -TPreuve : Écarts configuration attendue/effective.
  2. ss -lntp | grep sshPreuve : Test syntaxique avant tout reload.
  3. find /etc/ssh -maxdepth 1 -type f -printf '%M %u:%g %p 'Preuve : Console et seconde session intégrées au rollback.
  4. sshd -t -f ./fixtures/sshd_config.candidate
  5. journalctl -u ssh --since '-1 hour' --no-pager
LAB-SEC-002ADVANCED · 120 MIN

Concevoir une règle sudo minimale et testable

Autoriser une action précise sans shell implicite, wildcard dangereuse ni échappatoire d’éditeur.

0%
Ouvrir le laboratoire
ENVIRONNEMENT

VM jetable avec deux comptes de test et accès console.

  1. visudo -cf ./fixtures/lab-sudoersPreuve : Matrice autorisé/refusé avec codes retour.
  2. sudo -l -U laboperatorPreuve : Aucun joker ni shell non borné.
  3. sudo -u laboperator sudo -n /usr/local/sbin/lab-status --service demoPreuve : Suppression de la règle testée dans le laboratoire.
  4. journalctl _COMM=sudo --since '-15 min' --no-pager