4.8 KiB
CLAUDE.md — Set-OPS
Instruction principale
Claude Code doit lire et respecter AGENTS.md avant toute modification.
AGENTS.md est la source d’autorité principale du dépôt.
En cas de contradiction entre CLAUDE.md et AGENTS.md, suivre AGENTS.md.
Rôle du dépôt
Set-OPS est le moteur Ansible global d’exploitation d’écosystèmes numériques souverains.
Le template Debian 13 Proxmox est seulement un sous-ensemble du dépôt. Ne pas restructurer tout le dépôt autour de ce seul chantier.
Règle d’or IA
Un seul agent IA travaille dans ce dépôt à la fois.
- Soit Codex.
- Soit Claude Code.
- Jamais les deux simultanément.
Avant toute modification
Exécuter ou demander l’équivalent de :
git status --short
find . -maxdepth 3 -type f | sort
Lire au minimum :
AGENTS.md
README.md
CHANGELOG.md
ansible.cfg
Lire aussi les fichiers directement concernés avant de les modifier.
Ne pas remplacer massivement l’arborescence sans demande explicite.
Préférer un correctif minimal ciblé.
Validation Ansible obligatoire
Avant de dire qu’un changement est prêt, exécuter au minimum le --syntax-check du playbook touché.
Pour le template Debian 13 Proxmox :
ansible-playbook -i instance/inventories/lab/hosts.yml playbooks/modeles_vm/debian13_proxmox_preparer.yml --syntax-check
Si ansible-lint est disponible :
ansible-lint
Si ansible-lint n’est pas disponible, le signaler clairement.
Ne jamais déclarer un playbook prêt si la validation échoue.
Handlers Ansible
Chaque rôle qui utilise notify doit contenir son handler dans le rôle lui-même.
Exemple :
roles/ssh_baseline/tasks/main.yml
roles/ssh_baseline/handlers/main.yml
Commandes utiles :
find roles -path '*/tasks/*.yml' -exec grep -H "notify:" {} \;
find roles -path '*/handlers/main.yml' -print
Avant de livrer un rôle, vérifier que chaque handler référencé existe réellement.
Actions destructives
Toute action destructrice ou risquée doit exiger une confirmation explicite.
Exemple :
confirm_destructive_action: true
Sont considérées risquées :
- modification bloquante de SSH ;
- activation ou modification d’un pare-feu ;
- suppression d’utilisateurs ;
- suppression de paquets critiques ;
- formatage disque ;
- modification de partitions ;
- redémarrage massif ;
- purge de données ;
- changement réseau pouvant couper l’accès ;
- modification d’un hyperviseur Proxmox ;
- opération sur stockage, iSCSI, ZFS ou Ceph.
Sans confirmation explicite, refuser l’exécution.
Template Debian 13 Proxmox
Le template doit rester un socle commun.
Il peut contenir :
- Debian minimal ;
- SSH ;
- sudo ;
- compte technique
ansible; - sudo NOPASSWD pour
ansiblelorsque requis ; qemu-guest-agent;cloud-init;cloud-guest-utils;- chrony ;
- outils de diagnostic ;
- hardening raisonnable ;
- AppArmor ;
- auditd ;
- fail2ban SSH ;
- unattended-upgrades ;
- journald ;
- sysctl de sécurité ;
- nftables installé et préparé, mais non activé par défaut.
Il ne doit pas contenir par défaut :
- NGINX ;
- PostgreSQL ;
- MariaDB ;
- Docker ;
- Podman ;
- Redis ;
- GitLab ;
- Nextcloud ;
- monitoring complet ;
- données propres à un clone ;
- secrets ;
- clés privées.
SSH
Pendant la construction du template :
PasswordAuthentication yes
PermitRootLogin no
PubkeyAuthentication yes
État cible après validation des clés SSH :
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
Ne jamais désactiver l’authentification par mot de passe avant d’avoir confirmé que l’accès par clé fonctionne.
Toute modification SSH doit valider la configuration avant rechargement :
sshd -t
Pare-feu
Ne pas activer un pare-feu générique dans le template sans confirmation explicite.
nftables peut être installé et préparé, mais rester désactivé dans le template.
L’activation doit être faite sur un clone ou un serveur final, avec des règles adaptées au rôle du serveur.
Cloud-init
Cloud-init donne l’identité initiale d’un clone :
- hostname ;
- utilisateur initial ;
- clé SSH ;
- IP ;
- passerelle ;
- DNS ;
- agrandissement de la partition racine.
Cloud-init ne remplace pas Ansible.
Séparation attendue :
Proxmox + cloud-init : identité initiale de la VM
Set-OPS + Ansible : configuration réelle du serveur
Après modification
Répondre avec :
- fichiers créés ;
- fichiers modifiés ;
- commandes de validation exécutées ;
- résultat des validations ;
- tests non exécutés ;
- limites connues ;
- entrée
CHANGELOG.mdajoutée ou raison de l’absence d’entrée.
Ne pas dire que c’est prêt si ce n’est pas validé.