fix(collections): déclarer les collections Ansible employées - #52
Merged
Conversation
Trois collections hors ansible.builtin sont utilisées et aucune n'était
déclarée. Deux se trouvaient installées par hasard sur la machine de
développement, la troisième non, et le capstone rhcsa-mock-exam échouait alors
sur « rc=4, Stats : {} ». Le 4 est le code « unreachable » d'Ansible : le
message envoie chercher un problème de réseau pendant que la cause est une
dépendance absente. Quatre pistes ont été instruites avant la bonne, alors que
les trois hôtes répondaient au ping.
Recensé sur tous les labs et toutes les solutions déchiffrées : ansible.builtin
604 fois, ansible.posix 3, community.general 1, community.crypto 1. Après
installation de la troisième, le capstone passe 20/20.
Le test refuse qu'une collection employée manque à la déclaration. Il porte sur
ce que les fichiers emploient, pas sur ce que la machine a d'installé : une
suite verte parce que le poste est bien garni ne dit rien de celui du prochain
qui clone. Il déchiffre les solutions au passage, et un second test vérifie que
ce déchiffrement a eu lieu, sans quoi le premier passerait au vert sans avoir
rien regardé.
Un premier motif cherchait mot.mot.mot n'importe où et remontait auto.master,
logs.tar, net.ipv4 et dl.flathub. Un garde-fou qui crie au loup se fait
désactiver, donc il ne regarde que la position de clé dans une tâche, et la
raison est écrite dans le fichier.
Éprouvé par mutation : retirer community.crypto de la déclaration fait échouer
le test en nommant le fichier fautif.
Au passage, runtime.hosts_required disparaît du capstone : le champ n'est lu ni
par dsoxlab ni par ce dépôt, et le compte d'hôtes est déjà porté par
runtime.targets. C'est l'un des champs morts que les schémas JSON de dsoxlab
0.1.54 ont fait apparaître.
Le message d'échec du replay n'est pas retouché : main le traite déjà depuis
« un replay de solution en échec doit dire pourquoi » (#42).
Validation : 84 labs verts sur 84, infra provisionnée, solutions rejouées.
Closes #50
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Résumé
Trois collections Ansible hors
ansible.builtinsont employées par ce dépôt, etaucune n'était déclarée. Deux se trouvaient installées par hasard sur la
machine de développement ; la troisième, non.
Conséquence, sur une infra fraîchement provisionnée :
Le message envoyait chercher au mauvais endroit
rc=4est le code « unreachable » d'Ansible, et des stats vides se lisentcomme « aucun hôte joint ». Quatre pistes ont été instruites avant la bonne :
l'état des VM, l'inventaire, la clé SSH, le déchiffrement vault. Pendant ce
temps,
dsoxlab statusrendait les trois hôtes verts etansible -m ping alma-rhcsa-2.labrépondaitpong.La cause n'apparaît qu'en jouant la solution à la main :
Après
ansible-galaxy collection install community.crypto, le capstone passe20/20 en 59 s, sans autre changement.
Ce que le dépôt emploie réellement
Recensé sur tous les
labs/**et toutes lessolution/**, déchiffrées :ansible.builtinansible.posixcommunity.generalcommunity.cryptoLe garde-fou
tests/test_collections_declarees.pyrefuse qu'une collection employée manque àrequirements.yml. Il porte sur ce que les fichiers emploient, pas sur ceque la machine a d'installé : une suite verte parce que le poste est bien garni
ne dit rien de celui du prochain qui clone.
Il déchiffre les solutions au passage, et un second test vérifie que ce
déchiffrement a bien eu lieu — sans quoi le premier passerait au vert sans
avoir rien regardé, la panne du harnais déguisée en succès.
Le hook est câblé dans
.pre-commit-config.yaml, faute de quoioutillage-coherentrefuse le commit — et il a raison : « un vérificateurprésent mais débranché ne protège plus rien, en silence ».
Éprouvé par mutation : retirer
community.cryptode la déclaration faitéchouer le test en nommant le fichier fautif ; restauré, les deux passent.
Un faux départ, corrigé et documenté
Le premier motif cherchait
mot.mot.motn'importe où dans le texte et remontaitauto.master,logs.tar,net.ipv4,dl.flathub— des chemins, une archive,un nom de domaine. Un garde-fou qui crie au loup se fait désactiver, alors il ne
regarde plus que la position de clé dans une tâche. La raison est écrite dans le
fichier, pour que personne ne « simplifie » le motif plus tard.
Au passage
runtime.hosts_requireddisparaît du capstone : le champ n'est lu ni pardsoxlabni par ce dépôt, et le compte d'hôtes est déjà porté parruntime.targets[]. C'est l'un des quatre champs morts que les schémas JSON dedsoxlab 0.1.54 ont fait apparaître.
Ce que cette PR ne fait PAS
Le message d'échec du replay n'est pas retouché. Une première version de ce
travail l'améliorait, avant de constater que
mainle traite déjà depuis« un replay de solution en échec doit dire pourquoi » (#42) : la fin du
stdoutdu playbook y est collée au message. Le doublon a été abandonné, et cette branche
repart de
mainà jour plutôt que de le traîner.Validation
Infra provisionnée (
alma-rhcsa-1/2.lab,ubuntu-lfcs-1.lab), solutionsrejouées avec contrôle du verdict :
Issues
Closes #50
🤖 Generated with Claude Code