La refonte de ce matin posait une convention. Une convention qu'on n'outille pas tient tant que quelqu'un y pense : c'est le raisonnement de D-70, applique au corpus documentaire. Etat de depart mesure : 2 documents sur 34 declaraient leur lecteur. Les 32 autres disaient leur SUJET — ce qui avait enfoui le runbook de reprise le plus utile du depot au §6 de autorisation.md. Les 38 le declarent desormais, lecteur determine document par document et non colle au gabarit : l'exploitant (devis, migration de tenant, cycle de vie, gabarit d'or), le mainteneur (conceptions, registres, carte), le lecteur externe (ecosysteme-chezlepro), l'agent IA (MISE-A-JOUR-CODEX-CLAUDE). Deux exemptions DERIVEES, pas listees — un chemin en dur aurait vieilli a la premiere page ajoutee : un document qui s'annonce genere, et un fragment sans titre. Les 13 exemptes verifies un par un ; aucun document ecrit a la main n'est exempte par accident. La preuve ne lit que l'EN-TETE, ce qui empeche frontiere-opnsense.md et plan-et-generation.md — qui parlent de generation dans leur corps — d'etre exemptes a tort. Eprouvee dans les deux sens. Elle a echoue seule des sa premiere execution en nommant deux documents que mon inventaire avait manques (docs/audit/). Puis test negatif delibere : declaration retiree de meta-classe.md -> ECHEC la nommant ; restauree -> OK. Ce qu'elle ne teste pas : que le lecteur declare soit le BON. Ca se juge en revue ; elle garantit qu'on a du y penser. P01–P34. Comptes perimes corriges au passage (AGENTS.md et devis-services.md annoncaient encore 30 preuves). Verifie : prouver.py 0 (34 OK), plan-recette inchange. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
199 lines
3.2 KiB
Markdown
199 lines
3.2 KiB
Markdown
# 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.
|
||
|
||
## État du dépôt
|
||
|
||
`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 récent à corriger
|
||
|
||
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é.
|