Set-OPS-Public/docs/MISE-A-JOUR-CODEX-CLAUDE.md
Daniel Allaire 5bc3bceac1
Some checks failed
verifier / verifier (push) Has been cancelled
documentation : la tournee des 74 documents, parce qu un balayage ne lit pas
La revision a commence par un balayage par motifs — chemins morts, cibles make
absentes, comptes derives. Il a trouve une trentaine d ecarts et rate presque
tout le reste : un motif ne voit que ce qui s exprime en motif.

make hote-planifier en est l exemple. La cible EXISTE, donc le controle passait
au vert. C est une cible depreciee qui refuse et sort en 2, recommandee par
AGENTS.md, et qui contredit la REGLE D OR du meme fichier trois ecrans plus
haut. Il fallait lire pour la voir.

74 documents lus un par un. 66 corriges, 8 exacts.

CE QUI ETAIT FRANCHEMENT FAUX

AGENTS.md, la source d autorite, annoncait la flotte pas encore executee contre
des VM reelles. Elle a ete rasee et remontee depuis zero trois fois.
ecosysteme-chezlepro.md, le document montre a un client, portait la meme
phrase : il se sous-vendait gravement.

courriel-conception.md s ouvrait sur aucun role n est encore ecrit, au-dessus de
son propre paragraphe 1 qui les nomme. autorisation.md se terminait sur rien n
est construit alors qu il rapporte des mesures datees du role en fonctionnement.
hebergeur-exploitation.md disait rien n est fait d un depot qui existe.
filiation-emancipation.md se contredisait a deux ecrans de distance.

DES MODELES DECRITS D APRES UN MONDE ANTERIEUR

Le resolveur : cinq documents decrivaient un Unbound par VM en opt-in, trois le
donnaient en exemple d integration FACULTATIVE — il est universel depuis le
2026-08-24. L adressage de nomenclature-vm.md : reseau unique, VLAN 11-15, VMID
a cinq chiffres. Le nommage SDN de sdn-evpn.md contre le code : c est le wiki
qui avait raison.

CE QUI CASSE AU PREMIER ESSAI

Le nom du gabarit dore etait faux a quatre endroits, dont la procedure qui le
FABRIQUE et le critere R2 de l epreuve d operateur independant.
preparer-un-site-hebergeur.md avertissait qu une VM faite a la main serait
detruite : raser derive du plan, il ne la detruira jamais — le risque est l
inverse. Un mot de passe d essai en clair dans un depot public.

DEUX PREUVES ETENDUES, ET UNE QUI SE TROMPAIT ELLE-MEME

P57 couvre les groupes : elle a signale aussitot 29 groupes annonces au-dessus d
un tableau qui en cite 40. P29 confronte le tableau de authentification.md aux
declarations reelles : 12 annonces, 21 reels.

Et P57 imposait un chiffre faux — 56 preuves alors que le depot en porte 57, la
conditionnelle vivant hors de tout comptage. Un garde-fou qui fait respecter une
erreur ajoute l assurance a l erreur.

CE QUI RESTE, ET QU AUCUNE PREUVE NE TIENT

Deux comptes trouves a la main. Et une lacune reelle : rien ne garde les
meta/acces.yml — ni qu un service web-sso en porte un, ni que le groupe qu il
nomme existe. P29 tient les positions d authentification, personne ne tient les
habilitations.

make prouver : CONFORME, 56 OK, 0 echec, 1 saute. 0 lien mort.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-06 16:18:23 -04:00

225 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Mise à jour pour Codex et Claude Code — Set-OPS
> **Pour qui :** l'**agent IA** qui reprend le dépôt — et le mainteneur qui relit ce qu'on lui dit.
> ## ⚠️ Document HISTORIQUE — relu le 2026-09-06
>
> Cette note était une **passation datée de juillet 2026**, écrite quand le chantier en
> cours était le gabarit Debian 13. Elle a continué d'être listée comme lecture de
> gouvernance longtemps après avoir cessé d'être vraie, et elle envoyait l'agent réparer un
> incident réglé, dans un rôle qui n'existe pas (`roles/ssh_durcissement/` — le rôle
> s'appelle `ssh_hardening`).
>
> **Ce qui tient toujours** : les fichiers de gouvernance à lire (ci-dessous), la règle de
> conduite finale (« lire l'existant, corriger petit, valider »), et la discipline des
> handlers — qui est désormais **prouvée** par **P04** et le harnais, plus seulement
> recommandée.
>
> **Ce qui ne tient plus** : « le chantier en cours est le template Debian 13 »,
> l'« incident récent » et son correctif. Les deux `handlers/main.yml` existent
> (`ssh_baseline`, `ssh_hardening`) depuis longtemps.
>
> **Où aller à la place** : `AGENTS.md` (autorité), `docs/carte-set-ops.md` (par où entrer
> pour modifier le moteur), `docs/catalogue-services.md` (ce qui est éprouvé et ce qui ne
> l'est pas).
## État du dépôt *(juillet 2026)*
`Set-OPS` est le moteur Ansible global d’exploitation d’écosystèmes numériques souverains.
Il ne sert pas seulement à créer un template Proxmox. Il doit contenir progressivement les playbooks, rôles, inventaires et templates nécessaires à tous les systèmes d’une instance.
Le chantier en cours est le template Debian 13 Proxmox.
---
## Fichiers de gouvernance
Les fichiers suivants doivent être lus avant toute modification :
```text
AGENTS.md
CLAUDE.md
README.md
CHANGELOG.md
ansible.cfg
```
`AGENTS.md` est la source d’autorité principale.
---
## État fonctionnel visé pour le template Debian 13
Le template Debian 13 Proxmox doit contenir :
- Debian minimal ;
- SSH ;
- sudo ;
- compte `ansible` ;
- sudo NOPASSWD pour `ansible` ;
- `qemu-guest-agent` ;
- `cloud-init` ;
- `cloud-guest-utils` ;
- chrony ;
- outils de diagnostic ;
- AppArmor ;
- auditd ;
- fail2ban SSH ;
- unattended-upgrades ;
- journald ;
- sysctl de sécurité ;
- nftables installé et préparé, mais désactivé par défaut.
Il ne doit pas contenir :
- NGINX ;
- PostgreSQL ;
- MariaDB ;
- Docker ;
- Podman ;
- Redis ;
- GitLab ;
- Nextcloud ;
- monitoring complet ;
- secrets ;
- clés privées ;
- données propres à un clone.
---
## Incident de juillet 2026 — RÉGLÉ, conservé pour la leçon
> Les deux `handlers/main.yml` existent. `roles/ssh_durcissement/` cité plus bas **n'a
> jamais existé sous ce nom** : le rôle s'appelle `ssh_hardening`. Ce qui reste utile ici,
> c'est la *classe* d'erreur — un `notify` sans handler local — et le fait qu'elle est
> maintenant tenue par une preuve plutôt que par la vigilance.
Le playbook :
```text
playbooks/modeles_vm/debian13_proxmox_preparer.yml
```
a échoué sur un handler manquant :
```text
ERROR! The requested handler 'Validate and reload ssh' was not found
```
Le problème est relié à des rôles contenant :
```yaml
notify: Validate and reload ssh
```
sans handler local correspondant.
Rôles à vérifier en priorité :
```text
roles/ssh_baseline/
roles/ssh_durcissement/
```
Chaque rôle utilisant `notify` doit avoir son propre fichier :
```text
roles/<role>/handlers/main.yml
```
---
## Correctif minimal attendu
Ne pas régénérer tout le dépôt.
Créer ou corriger :
```text
roles/ssh_baseline/handlers/main.yml
roles/ssh_durcissement/handlers/main.yml
```
Contenu attendu :
```yaml
---
- name: Valider la configuration SSH
ansible.builtin.command: sshd -t
changed_when: false
listen: Validate and reload ssh
- name: Recharger SSH
ansible.builtin.systemd:
name: ssh
state: reloaded
listen: Validate and reload ssh
```
Puis vérifier tous les `notify` :
```bash
find roles -path '*/tasks/*.yml' -exec grep -H "notify:" {} \;
find roles -path '*/handlers/main.yml' -print
```
---
## Validation obligatoire
Après correction :
```bash
make syntaxe-modele
```
Puis relancer :
```bash
make preparer-modele
```
Puis vérifier :
```bash
make verifier-modele
```
---
## Nettoyage final
Ne lancer le nettoyage final que lorsque la VM est validée :
```bash
make nettoyer-modele CONFIRMER=true
```
Ensuite seulement :
```bash
sudo shutdown -h now
```
Puis côté Proxmox :
```bash
qm template VMID
```
---
## Règle de conduite
Ne pas faire de régénération massive.
Lire l’existant.
Corriger petit.
Valider.
Mettre à jour `CHANGELOG.md`.
Résumer clairement ce qui a été fait et ce qui n’a pas été testé.