# 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//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é.