222 lines
4.6 KiB
Markdown
222 lines
4.6 KiB
Markdown
|
|
# CLAUDE.md — Set-OPS
|
|||
|
|
|
|||
|
|
## Instruction principale
|
|||
|
|
|
|||
|
|
Claude Code doit lire et respecter `AGENTS.md` avant toute modification dans ce dépôt.
|
|||
|
|
|
|||
|
|
`AGENTS.md` est la source d’autorité principale pour :
|
|||
|
|
|
|||
|
|
- les principes Ansible ;
|
|||
|
|
- la structure du dépôt ;
|
|||
|
|
- les règles de sécurité ;
|
|||
|
|
- les conventions de nommage ;
|
|||
|
|
- la gestion du `CHANGELOG.md` ;
|
|||
|
|
- les limites sur les actions destructives ;
|
|||
|
|
- la règle : Codex ou Claude Code, jamais les deux en même temps.
|
|||
|
|
|
|||
|
|
En cas de contradiction entre `CLAUDE.md` et `AGENTS.md`, suivre `AGENTS.md`.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 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 de modifier quoi que ce soit, vérifier l’état du dépôt :
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
git status --short
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Ne pas continuer si des changements non compris sont présents.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Comportement attendu de Claude Code
|
|||
|
|
|
|||
|
|
Avant de modifier :
|
|||
|
|
|
|||
|
|
1. Lire `AGENTS.md`.
|
|||
|
|
2. Lire `README.md`, `CHANGELOG.md` et `ansible.cfg` s’ils existent.
|
|||
|
|
3. Inspecter l’arborescence existante.
|
|||
|
|
4. Identifier la portée exacte de la demande.
|
|||
|
|
5. Proposer le plus petit changement utile.
|
|||
|
|
6. Préserver les conventions existantes.
|
|||
|
|
7. Ne pas réorganiser massivement le dépôt sans demande explicite.
|
|||
|
|
|
|||
|
|
Après modification :
|
|||
|
|
|
|||
|
|
1. Résumer les fichiers modifiés.
|
|||
|
|
2. Indiquer les commandes de validation.
|
|||
|
|
3. Signaler clairement ce qui n’a pas été testé.
|
|||
|
|
4. Mettre à jour `CHANGELOG.md` si pertinent.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Limites de sécurité
|
|||
|
|
|
|||
|
|
Ne jamais commiter ou générer :
|
|||
|
|
|
|||
|
|
- mots de passe ;
|
|||
|
|
- clés privées SSH ;
|
|||
|
|
- tokens API ;
|
|||
|
|
- secrets non chiffrés ;
|
|||
|
|
- fichiers `.env` sensibles ;
|
|||
|
|
- certificats privés ;
|
|||
|
|
- backups réels ;
|
|||
|
|
- exports de production non anonymisés ;
|
|||
|
|
- fichiers contenant des informations confidentielles de Chezlepro Inc.
|
|||
|
|
|
|||
|
|
Toute variable sensible doit être gérée hors dépôt ou avec un mécanisme explicitement prévu, par exemple :
|
|||
|
|
|
|||
|
|
- Ansible Vault ;
|
|||
|
|
- fichier local non versionné ;
|
|||
|
|
- secret injecté hors dépôt.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Actions destructives
|
|||
|
|
|
|||
|
|
Toute action pouvant causer une perte d’accès, de données ou de disponibilité doit être protégée.
|
|||
|
|
|
|||
|
|
Exemples :
|
|||
|
|
|
|||
|
|
- suppression de paquets critiques ;
|
|||
|
|
- modification SSH bloquante ;
|
|||
|
|
- modification firewall ;
|
|||
|
|
- redémarrage massif ;
|
|||
|
|
- formatage disque ;
|
|||
|
|
- modification de partitions ;
|
|||
|
|
- suppression d’utilisateurs ;
|
|||
|
|
- purge de données ;
|
|||
|
|
- changement réseau pouvant couper l’accès.
|
|||
|
|
|
|||
|
|
Pour ces actions, exiger une confirmation explicite ou une variable du type :
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
confirm_destructive_action: true
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Sans cette confirmation, refuser l’exécution.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## SSH
|
|||
|
|
|
|||
|
|
État transitoire accepté pendant la construction :
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
PasswordAuthentication yes
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
État cible recommandé :
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
PermitRootLogin no
|
|||
|
|
PubkeyAuthentication yes
|
|||
|
|
PasswordAuthentication no
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Ne jamais désactiver l’authentification par mot de passe avant d’avoir confirmé que l’accès SSH par clé fonctionne.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Sudo
|
|||
|
|
|
|||
|
|
Le compte technique `ansible` peut être configuré avec sudo sans mot de passe lorsque c’est requis pour l’automatisation :
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
ansible ALL=(ALL) NOPASSWD:ALL
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Cette règle doit être placée dans :
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
/etc/sudoers.d/90-ansible
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Toujours valider avec :
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
visudo -cf /etc/sudoers.d/90-ansible
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Ansible
|
|||
|
|
|
|||
|
|
Les playbooks doivent rester :
|
|||
|
|
|
|||
|
|
- idempotents ;
|
|||
|
|
- lisibles ;
|
|||
|
|
- sobres ;
|
|||
|
|
- compatibles Debian 13 sauf exception documentée ;
|
|||
|
|
- testables avec `--check` autant que possible ;
|
|||
|
|
- exempts de dépendances SaaS ou cloud inutiles.
|
|||
|
|
|
|||
|
|
Préférer les modules `ansible.builtin.*`.
|
|||
|
|
|
|||
|
|
Éviter `shell` et `command` sauf nécessité réelle. Si une commande shell est utilisée, elle doit être encadrée avec les paramètres appropriés :
|
|||
|
|
|
|||
|
|
- `changed_when`
|
|||
|
|
- `failed_when`
|
|||
|
|
- `creates`
|
|||
|
|
- `removes`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Validation minimale
|
|||
|
|
|
|||
|
|
Avant de considérer une modification comme terminée, tenter les validations pertinentes :
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
ansible-playbook --syntax-check playbooks/nom.yml
|
|||
|
|
ansible-playbook -i inventories/lab/hosts.yml playbooks/nom.yml --check
|
|||
|
|
ansible-lint
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Si une commande de validation n’a pas été exécutée ou si un outil est absent, le signaler clairement.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## CHANGELOG
|
|||
|
|
|
|||
|
|
Chaque modification significative doit être inscrite dans `CHANGELOG.md`.
|
|||
|
|
|
|||
|
|
Format recommandé :
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
## YYYY-MM-DD
|
|||
|
|
|
|||
|
|
### Ajouté
|
|||
|
|
- ...
|
|||
|
|
|
|||
|
|
### Modifié
|
|||
|
|
- ...
|
|||
|
|
|
|||
|
|
### Corrigé
|
|||
|
|
- ...
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Résumé opérationnel
|
|||
|
|
|
|||
|
|
Set-OPS est un dépôt d’exploitation réelle pour les serveurs de Chezlepro Inc.
|
|||
|
|
|
|||
|
|
Priorités :
|
|||
|
|
|
|||
|
|
- reproductibilité ;
|
|||
|
|
- sobriété ;
|
|||
|
|
- clarté ;
|
|||
|
|
- sécurité ;
|
|||
|
|
- maintenance ;
|
|||
|
|
- autonomie ;
|
|||
|
|
- résilience.
|
|||
|
|
|
|||
|
|
La complexité doit toujours être justifiée par un bénéfice opérationnel clair.
|