Set-OPS-Public/docs/projet/MISE-A-JOUR-CODEX-CLAUDE.md
Daniel Allaire aab1bcc83a doc : rangee par lecteur, trois portes d'entree (architecture, setup, usage) et un index
README reduit au role du projet et au demarrage rapide. docs/architecture.md (schemas
Mermaid), docs/setup.md, docs/usage.md (154 cibles en 13 familles), docs/README.md (index).
Documents ranges en conception/, exploitation/, hebergement/, projet/ ; 598 chemins suivis.
QUICKSTART.md, SOLUTION.md, architecture-set-ops.md et la carte fondus puis retires.

Preuves : P48 lit l'index et conception/mecanismes.md ; les gardes parcourent docs/ sous-
dossiers compris (_documents) ; usage.md suit le Makefile dans les deux sens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 01:01:54 -04:00

225 lines
4.8 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/README.md` (l'index) et
> `docs/conception/mecanismes.md` (par où entrer pour modifier le moteur), `docs/projet/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é.