You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
La proposition ne vient pas de nous : un contributeur a déjà produit deux images et ouvert deux issues sur le catalogue Linux, en attente de réponse depuis le 27 juillet 2026.
Sa motivation, citée : « en suivant les labs l1, l'installation manuelle (Python, uv, dsoxlab, pytest...) peut être un frein pour un vrai débutant ». Il propose d'ouvrir une PR et demande où héberger les artefacts, sur son fork ou ici.
Sa question est restée sans réponse, et c'est le vrai coût aujourd'hui : quelqu'un a fait le travail et attend qu'on lui dise sous quelle forme le reprendre.
Pourquoi l'issue est ici et pas dans le catalogue
L'image embarque le moteur et ses prérequis (Python, uv, dsoxlab, l'hyperviseur, Terraform, ansible-runner), pas des labs. Elle est donc agnostique du domaine, au même titre que les templates Terraform et cloud-init déjà packagés ici.
Corollaire à tenir : l'image ne doit embarquer aucun catalogue. Y figer linux-dsoxlab-training en ferait une image Linux, et rejouerait l'anti-pattern « embarquer des templates de labs ». Le catalogue se choisit au premier démarrage, ce qui en fait le premier consommateur naturel de #78 (dsoxlab init).
Ce qui justifie vraiment l'image, et ce qui ne la justifie pas
À trancher explicitement, parce que le périmètre en dépend entièrement.
Pour un utilisateur Linux, l'image n'est pas la bonne réponse : uv tool install dsoxlab l'est (#70), et #72 lui donne un premier lab sans rien cloner. Fabriquer une image pour lui, c'est distribuer plusieurs gigaoctets pour éviter une commande.
Pour un utilisateur Windows ou macOS, l'image est la seule voie : pyproject.toml classe le projet en Operating System :: POSIX :: Linux, et ni KVM ni Incus n'existent sur ces systèmes. C'est là que se trouve la valeur, et probablement la majorité des apprenants d'une formation Linux, qui par définition n'ont pas encore de poste Linux.
Le périmètre proposé découle de ce constat : l'image cible d'abord Windows et macOS, et son README doit dire à un utilisateur Linux d'installer le paquet plutôt que de télécharger 5 Go.
Le point dur : la virtualisation imbriquée
C'est la question à instruire avant de produire quoi que ce soit, parce qu'elle décide de ce que l'image sait faire.
Les labs vm du catalogue Linux montent de vraies VMs via KVM ou Incus. Les faire tourner dans une VM VirtualBox ou VMware exige la virtualisation imbriquée, qui n'est ni universelle ni active par défaut :
VirtualBox : nested VT-x/AMD-V, dépend du CPU, et indisponible sur un Windows où Hyper-V ou WSL2 tient déjà l'hyperviseur.
VMware Workstation / Fusion : case « Virtualize Intel VT-x/EPT » à cocher, machine éteinte.
macOS Apple Silicon : ni VirtualBox ni KVM. Voie distincte (UTM/QEMU aarch64), et les images cloud x86 du catalogue n'y tournent pas nativement.
Deux issues de terrain rappellent que la marge est déjà mince même sans imbrication : linux-dsoxlab-training#36 rapporte un provisionnement qui expire sur un hôte à 2 vCPU / 4 Go, avec un hôte prêt à 181 secondes pour un délai de 180. Sous une couche de virtualisation supplémentaire, cette marge disparaît.
Il faut donc décider, et l'écrire dans le README de l'image :
soit l'image ne sert que les labs shell, ce qui est honnête, immédiatement livrable, et couvre déjà les 87 labs de terraform-training et les 20 labs shell du catalogue Linux ;
soit elle sert aussi les labs vm, et alors elle doit documenter l'activation de l'imbrication par hyperviseur, annoncer des prérequis matériels mesurés (pas estimés), et dsoxlab doctor doit détecter l'absence d'imbrication et le dire clairement au lieu de laisser un provision expirer.
Le point 2 impose au minimum un contrôle nouveau dans doctor : « virtualisation imbriquée indisponible, les labs vm ne peuvent pas tourner ici ».
Formats à produire
Par ordre de couverture décroissante, pas tous d'un coup :
Format
Cible
Remarque
OVA (OVF)
VirtualBox et VMware
Un seul artefact pour les deux écosystèmes : c'est le point de départ
qcow2
KVM/libvirt, Proxmox
Utile aux formateurs qui hébergent des postes
VHDX
Hyper-V
Le cas Windows où VirtualBox est justement inutilisable
UTM / QEMU aarch64
macOS Apple Silicon
Voie séparée, à évaluer avant de promettre
Vagrant box
postes scriptés
Optionnel
Construction et distribution
Construction reproductible, versionnée dans ce dépôt. Une image fabriquée à la main n'est régénérable par personne d'autre et pourrit à la première mise à jour. Une définition Packer en HCL, construite en CI, est la forme attendue.
Ne pas régresser sur la chaîne d'approvisionnement. Ce projet publie avec Trusted Publishing, attestations et provenance : distribuer plusieurs gigaoctets de binaire opaque sans preuve serait le maillon faible de tout l'édifice. Il faut donc SHA256SUMS, une attestation de build GitHub, et la publication sur les Releases du dépôt plutôt que sur un fork personnel.
Taille. Une OVA complète pèse facilement 2 à 6 Go, or une release GitHub plafonne à 2 Go par fichier. À trancher : compression, découpage, ou hébergement externe avec empreintes publiées ici.
Obsolescence. Une image figée sur une version de dsoxlab est périmée à la release suivante. Proposition : l'image embarque l'outillage, et met dsoxlab à jour au premier démarrage ; elle n'est republiée que lorsque sa base change (OS, hyperviseur, Terraform), pas à chaque version du moteur.
Critères d'acceptation
Une décision écrite sur le périmètre : labs shell seulement, ou labs vm inclus avec imbrication documentée.
Une définition de build reproductible versionnée dans ce dépôt, jouable par un tiers.
La construction tourne en CI et publie sur les Releases GitHub, pas sur un fork personnel.
Au moins le format OVA, importable dans VirtualBox et dans VMware, vérifié dans les deux.
SHA256SUMS publié et attestation de build attachée à la release.
L'image n'embarque aucun catalogue : le choix se fait au premier démarrage.
Un README d'image qui indique aux utilisateurs Linux d'installer le paquet plutôt que de télécharger l'image.
Des prérequis matériels mesurés (vCPU, RAM, disque), pas estimés, et vérifiés jusqu'à un dsoxlab check vert.
Si le périmètre inclut les labs vm : doctor détecte l'absence de virtualisation imbriquée et le nomme explicitement.
Une réponse apportée au contributeur sur les deux issues d'origine, quelle que soit la décision.
Lot
P1, lot 0.2.x. À instruire après #70 (installation en une commande), #72 (dsoxlab demo) et #78 (dsoxlab init) : ces trois-là réduisent le besoin sans le supprimer, et l'image doit s'appuyer sur init pour rester agnostique.
Contexte
La proposition ne vient pas de nous : un contributeur a déjà produit deux images et ouvert deux issues sur le catalogue Linux, en attente de réponse depuis le 27 juillet 2026.
Sa motivation, citée : « en suivant les labs l1, l'installation manuelle (Python, uv, dsoxlab, pytest...) peut être un frein pour un vrai débutant ». Il propose d'ouvrir une PR et demande où héberger les artefacts, sur son fork ou ici.
Sa question est restée sans réponse, et c'est le vrai coût aujourd'hui : quelqu'un a fait le travail et attend qu'on lui dise sous quelle forme le reprendre.
Pourquoi l'issue est ici et pas dans le catalogue
L'image embarque le moteur et ses prérequis (Python, uv, dsoxlab, l'hyperviseur, Terraform, ansible-runner), pas des labs. Elle est donc agnostique du domaine, au même titre que les templates Terraform et cloud-init déjà packagés ici.
Corollaire à tenir : l'image ne doit embarquer aucun catalogue. Y figer
linux-dsoxlab-trainingen ferait une image Linux, et rejouerait l'anti-pattern « embarquer des templates de labs ». Le catalogue se choisit au premier démarrage, ce qui en fait le premier consommateur naturel de #78 (dsoxlab init).Ce qui justifie vraiment l'image, et ce qui ne la justifie pas
À trancher explicitement, parce que le périmètre en dépend entièrement.
Pour un utilisateur Linux, l'image n'est pas la bonne réponse :
uv tool install dsoxlabl'est (#70), et #72 lui donne un premier lab sans rien cloner. Fabriquer une image pour lui, c'est distribuer plusieurs gigaoctets pour éviter une commande.Pour un utilisateur Windows ou macOS, l'image est la seule voie :
pyproject.tomlclasse le projet enOperating System :: POSIX :: Linux, et ni KVM ni Incus n'existent sur ces systèmes. C'est là que se trouve la valeur, et probablement la majorité des apprenants d'une formation Linux, qui par définition n'ont pas encore de poste Linux.Le périmètre proposé découle de ce constat : l'image cible d'abord Windows et macOS, et son README doit dire à un utilisateur Linux d'installer le paquet plutôt que de télécharger 5 Go.
Le point dur : la virtualisation imbriquée
C'est la question à instruire avant de produire quoi que ce soit, parce qu'elle décide de ce que l'image sait faire.
Les labs
vmdu catalogue Linux montent de vraies VMs via KVM ou Incus. Les faire tourner dans une VM VirtualBox ou VMware exige la virtualisation imbriquée, qui n'est ni universelle ni active par défaut :Deux issues de terrain rappellent que la marge est déjà mince même sans imbrication : linux-dsoxlab-training#36 rapporte un provisionnement qui expire sur un hôte à 2 vCPU / 4 Go, avec un hôte prêt à 181 secondes pour un délai de 180. Sous une couche de virtualisation supplémentaire, cette marge disparaît.
Il faut donc décider, et l'écrire dans le README de l'image :
shell, ce qui est honnête, immédiatement livrable, et couvre déjà les 87 labs deterraform-traininget les 20 labsshelldu catalogue Linux ;vm, et alors elle doit documenter l'activation de l'imbrication par hyperviseur, annoncer des prérequis matériels mesurés (pas estimés), etdsoxlab doctordoit détecter l'absence d'imbrication et le dire clairement au lieu de laisser unprovisionexpirer.Le point 2 impose au minimum un contrôle nouveau dans
doctor: « virtualisation imbriquée indisponible, les labsvmne peuvent pas tourner ici ».Formats à produire
Par ordre de couverture décroissante, pas tous d'un coup :
Construction et distribution
Construction reproductible, versionnée dans ce dépôt. Une image fabriquée à la main n'est régénérable par personne d'autre et pourrit à la première mise à jour. Une définition Packer en HCL, construite en CI, est la forme attendue.
Ne pas régresser sur la chaîne d'approvisionnement. Ce projet publie avec Trusted Publishing, attestations et provenance : distribuer plusieurs gigaoctets de binaire opaque sans preuve serait le maillon faible de tout l'édifice. Il faut donc
SHA256SUMS, une attestation de build GitHub, et la publication sur les Releases du dépôt plutôt que sur un fork personnel.Taille. Une OVA complète pèse facilement 2 à 6 Go, or une release GitHub plafonne à 2 Go par fichier. À trancher : compression, découpage, ou hébergement externe avec empreintes publiées ici.
Obsolescence. Une image figée sur une version de dsoxlab est périmée à la release suivante. Proposition : l'image embarque l'outillage, et met dsoxlab à jour au premier démarrage ; elle n'est republiée que lorsque sa base change (OS, hyperviseur, Terraform), pas à chaque version du moteur.
Critères d'acceptation
shellseulement, ou labsvminclus avec imbrication documentée.SHA256SUMSpublié et attestation de build attachée à la release.dsoxlab checkvert.vm:doctordétecte l'absence de virtualisation imbriquée et le nomme explicitement.Lot
P1, lot 0.2.x. À instruire après #70 (installation en une commande), #72 (
dsoxlab demo) et #78 (dsoxlab init) : ces trois-là réduisent le besoin sans le supprimer, et l'image doit s'appuyer surinitpour rester agnostique.Dépend de : #70, #72, #78. Touche : #66 (parcours produit).