Suppression de toute trace Chezlepro de l'outil (roles, scripts, docs
publiques, exemples, LICENSE). Prouve par scan exhaustif : git grep vide
pour chezlepro, asgard/TrueNAS, supernet reel 10.1.x.
Corrige 5 defauts de genericite fonctionnels (motd, app.ini Forgejo,
organisation openldap, nom AC step-ca, et IP reelles codees en dur dans
les defaults de roles -> plage d'exemple 10.0.x). LICENSE -> Alliance
Boreale. Fichiers mainteneur + CHANGELOG conserves (par decision).
La separation moteur/instance tient : OPS-Chezlepro surcharge deja ses
vraies valeurs de topologie. Verifie : make verifier exit 0 (4 tests).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rafraichir les chemins dans docs secondaires, README de roles, messages,
docstrings : inventories/ -> instance/inventories/, docs/<plan>.yml ->
instance/plan/<plan>.yml. Correction de chemins de playbooks perimes
(preexistants) dans CLAUDE.md/SOLUTION.md : vm_templates/..._prepare|
verify|cleanup -> modeles_vm/..._preparer|verifier|nettoyer, et
confirm_template_cleanup -> template_cleanup_confirm.
Valide : diff vide, ansible-lint 0 echec, make inventaire-verifier.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Le depot vivait dans un dossier synchronise (Dropbox/Nextcloud) : la sync
a ressuscite d'anciens fichiers pluriels supprimes par le renommage au
singulier, et un git add -A les a recommittes. Retire :
- 6 group_vars pluriels (serveurs_*, clients_pki) ;
- 7 playbooks de groupes pluriels ;
- 1 'applications (conflicted copy ...).py'.
Les vrais fichiers au singulier existent tous. Valide : ansible-lint 0
echec, diff vide, inventaire-verifier, syntax-check de tous les playbooks.
La sync a ete desactivee pour le repertoire des depots (cause racine).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
serveurs_* -> serveur_, clients_ -> client_, suffixes pluriels au
singulier (serveur_web_dorsal/frontal, client_metrique, client_journal).
Renommage par tokens exacts : repertoires de roles, playbooks de groupes,
group_vars, variables internes des roles (serveur_nginx_*, conformite
ansible-lint), groupes du plan, constantes de code, docs. Faux-amis
preserves (serveurs_bd, scripts/serveurs.py, fonctions Python). Groupes
d'etat gardes au pluriel (hotes_actifs/planifies, modeles_vm).
Valide : ansible-lint 0 echec (0 var-naming), diff vide de la generation,
node --check, tous les registres. Ajout de .ansible-lint excluant docs/
(registres de donnees, pas du contenu Ansible).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Une VM peut porter plusieurs applications ; c'est l'application, pas l'hote,
a laquelle une base se lie via son DSN.
- docs/applications.yml : nouveau registre application -> groupe, hote.
- docs/bases-donnees.yml : champ 'portee' (application|groupe|hote, defaut
groupe). Une application A (groupe G, hote H) recoit les bases ou
(portee=application ET consommateur=A) OU (portee=groupe ET consommateur=G)
OU (portee=hote ET consommateur=H). Plusieurs DSN par application.
- inventory_rules.py : charger/valider_applications, applications_de_hote,
bases_de_application, PORTEES_BD ; valider_bases croise portee=application
avec le registre des applications.
- CLI : scripts/applications.py + bases_donnees.py --portee ; cibles make
applications / applications-verifier ; integre a inventaire-verifier.
- GUI : vue Applications (CRUD), portee + consommateur dynamique dans Bases,
vue Chaine par application (DSN resolus par hote).
- filter_plugins/registres.py : meme regle de resolution exposee a Ansible
(source unique). Playbooks web_dorsaux/web_frontaux iterent sur les
applications de l'hote (scaffold ; deploiement applicatif s'y insere).
Services en grappe (keycloak/icingadb/forgejo) restent en portee groupe.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>