Commit graph

7 commits

Author SHA1 Message Date
7ddc2fedad Moteur : robustesse pour une instance hors depot (os.path.relpath)
Path.relative_to(RACINE) levait quand l'instance est externe
(SETOPS_INSTANCE = ../OPS-laPreuve par ex.). Remplace par os.path.relpath
dans instancier.py / inventory_gui.py / config_proxmox.py.

Revele par une instance d'essai agnostique (lapreuve.local, 10.9.0.0/16) :
le moteur genere un inventaire distinct, zero fuite Chezlepro. Cas normal
(OPS-Chezlepro via symlink) inchange : diff vide, lint 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 10:12:03 -04:00
95698a36c0 Solder la dette doc apres le decouplage moteur/instance
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>
2026-06-24 10:04:14 -04:00
3b7f3098f2 Decouplage moteur/instance Phase 2b : sortir l'inventaire
L'inventaire (hotes generes, group_vars, vault) quitte inventories/ pour
instance/inventories/. Suivent : ansible.cfg, Makefile (export
SETOPS_INSTANCE ?= instance + chemins derives), scripts (INSTANCE/),
config_proxmox.py, .gitignore. Docs primaires (AGENTS/README/
plan-et-generation/architecture) refletent le layout instance/.

Non destructif : diff vide, ansible-lint 0 echec, make inventaire-verifier
OK. (Docs secondaires a rafraichir ; Phase 3 : deux depots.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 09:16:18 -04:00
17f65efb18 Decouplage moteur/instance Phase 2a : sortir le plan
Les 5 registres (serveurs/applications/bases-donnees/domaines/nomenclature)
quittent docs/ pour instance/plan/. Localisation :
- scripts : variable d'env SETOPS_INSTANCE (defaut <depot>/instance) ;
- roles/playbooks : variable setops_plan_dir (group_vars d'instance).

docs/ ne garde que les guides .md + dependances-groupes.yml (moteur).
.ansible-lint exclut instance/plan/ (registres de donnees).

Non destructif : diff vide, ansible-lint 0 echec, include_vars via
setops_plan_dir teste. (Phase 2b : l'inventaire.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 09:10:49 -04:00
ca0f95da28 Mettre les noms de roles et playbooks au singulier
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>
2026-06-23 23:18:52 -04:00
854e324348 Basculer : hosts.yml genere depuis le plan (diff vide)
make instancier-appliquer regenere inventories/production/hosts.yml
depuis le plan (serveurs.yml + applications.yml + nomenclature.yml).
Garde-fou : refuse si le diff n'est pas vide (FORCE=1 pour un changement
intentionnel) ; git est le filet.

Bascule effectuee avec diff vide verifie. hosts.yml est desormais un
artefact genere, semantiquement identique a l'ancien (make
inventaire-verifier complet OK, GUI charge 13 hotes).

NOTE : a ce stade le GUI edite encore hosts.yml directement. Tant que le
rework GUI n'est pas fait, editer le PLAN puis make instancier-appliquer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 22:00:35 -04:00
69dd730b70 Phase 3 : generateur d'inventaire depuis le plan (diff vide prouve)
make instancier genere hosts.genere.yml (gitignore) depuis le plan
(serveurs.yml + applications.yml + nomenclature.yml) et compare
SEMANTIQUEMENT a l'inventaire actuel via ansible-inventory --list.

- scripts/instancier.py : generer + comparer (host vars derives, groupes
  derives = socle + services (applications) + integrations (clients_*) + etat).
- serveurs.py bootstrap capture les clients_* comme 'integrations' par VM.
- inventory_rules : valide 'integrations'.

Resultat : DIFF VIDE -- le plan reproduit exactement les 13 hotes. La
bascule (hosts.yml genere + UI editant le plan) reste NON effectuee :
elle attend une validation explicite.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 21:47:56 -04:00