Fin des dernières poches de 'codé en dur' liées à l'instance d'origine : - realm SSO centralisé sur l'intrant identite_realm (defaut chezlepro, retro-compatible) ; les 4 rôles (keycloak/forgejo/grafana/oauth2_proxy) en dérivent. Expose dans la GUI (panneau Intrants). - vars brandees renommees generiques : chezlepro_timezone -> fuseau_horaire, chezlepro_organisation -> organisation (chrony, openldap, GUI, docs). Aucune reference fonctionnelle aux anciens noms. Le moteur ne porte plus le nom d'un tenant. Technolibre a son propre realm (technolibre). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.1 KiB
Note de conception — panneau « Intrants de base » du GUI
But : saisir depuis un endroit unique les intrants communs de l'écosystème, en distinguant constantes et défauts surchargeables.
Extension assumée du plan de contrôle (gelé — cf.
positionnement.md), au même titre que le dimensionnement. Décidée le 2026-06-26.
1. Décisions cadre (validées)
- Secrets : hors périmètre. Le GUI n'affiche ni ne stocke aucun secret. Les
vault_*et tokens Proxmox restent édités via Ansible Vault en ligne de commande. Le panneau peut, au plus, afficher une liste de rappel en lecture seule des secrets attendus (sans valeur). - Nomenclature : lecture seule dans le panneau. L'édition de
supernet/VLAN/ catégories reste dansplan/nomenclature.yml(autorité unique du plan réseau). - Conception avant code (cette note).
2. Modèle : constante vs défaut surchargeable
- Constante — une seule valeur, pas de surcharge. Éditée uniquement au panneau ; apparaît en lecture seule dans les formulaires d'hôte (contexte).
- Défaut surchargeable — valeur globale qui ressurgit comme défaut là où l'intrant réapparaît (hôte / groupe). Le formulaire d'hôte la montre pré-remplie et marquée « hérité » ; toute saisie locale devient une surcharge (badge « surchargé » + bouton « rétablir le défaut »).
Classification de départ : voir intrants-communs.md §2.
Résumé : Constantes = domaine_interne, nomenclature, accès Proxmox, golden
template, secrets. Défauts = timezone, nœud/stockage/pont Proxmox, DNS internes,
politiques de durcissement, relais SMTP, ciuser/compte ansible.
3. Persistance — fichiers cibles, sans perte de commentaires
Contrainte : pas de dépendance non-stdlib (souveraineté) → pas de round-trip YAML
préservant les commentaires (ruamel). Solution : fichiers possédés par le GUI,
réécrits en bloc avec un en-tête généré (comme hosts.genere.yml), à côté des
fichiers tenus à la main.
| Domaine | Fichier possédé par le GUI | Tenu à la main (coexiste) |
|---|---|---|
| Identité + politiques (défauts) | group_vars/all/10-intrants.yml |
group_vars/all/00-instance.yml |
| Proxmox (constantes + défauts) | group_vars/proxmox/10-intrants.yml |
group_vars/proxmox/00-base.yml |
| Template/durcissement (défauts) | group_vars/modeles_vm/10-intrants.yml |
group_vars/modeles_vm/00-base.yml |
Migration légère : convertir
group_vars/all.yml→ répertoiregroup_vars/all/(Ansible le supporte nativement). Idemproxmox.yml,modeles_vm.yml. Les valeurs existantes sont scindées : commentaires/contexte dans00-*, valeurs pilotées par le GUI dans10-intrants.yml. La précédence Ansible reste identique.
Les surcharges par hôte continuent de vivre dans plan/serveurs.yml (déjà
supporté) ; par groupe, dans le group_vars/<groupe>/ correspondant.
4. Mécanique d'héritage (côté générateur)
- Le panneau écrit les défauts dans les
10-intrants.yml. instancier.py/ les formulaires lisent ces défauts pour pré-remplir et marquer « hérité » ; une valeur présente dansserveurs.yml(hôte) prime et s'affiche « surchargé » (même logiquesetdefaultque le dimensionnement).- Les constantes ne sont jamais réémises par hôte : un seul point de vérité.
5. Écran (UI)
- Bouton « Intrants de base » dans l'en-tête du GUI → panneau modal/plein écran.
- Sections repliables par domaine : Identité, Proxmox, Politiques de durcissement, Services centraux, Nomenclature (lecture seule), Secrets attendus (lecture seule).
- Chaque champ porte un badge Constante / Défaut, et l'info-bulle d'aide
(réutilise le mécanisme
AIDESdéjà en place). - Bandeau d'avertissement sur
domaine_interne(changement à fort impact : re-dérive zones, FQDN, base DN…) → confirmation explicite.
6. Garde-fous
--syntax-check+ansible-inventory --listdoivent rester verts après écriture.- Discipline diff-vide :
make instanciermontre l'impact, application via FORCE si intentionnel. - Aucune valeur secrète n'entre dans un fichier écrit par le GUI (vérifié par un test).
7. Périmètre proposé (MVP → suite)
- MVP :
domaine_interne(constante, avec garde-fou),fuseau_horaire(défaut), accès Proxmox (constantes), golden template (constantes), placement Proxmox par défaut (nœud/stockage/pont), + nomenclature et secrets en lecture seule. - Suite : politiques de durcissement (défauts par groupe), DNS internes, relais SMTP, endpoints services centraux.
8. Points ouverts à confirmer
- OK pour la migration
group_vars/*.yml→ répertoires (§3) ? (alternative : réécrire les fichiers existants en bloc, au prix des commentaires). - Le panneau affiche-t-il la liste de rappel des secrets attendus (lecture seule), ou on n'en parle pas du tout dans le GUI ?
- Périmètre MVP (§7) suffisant pour une première itération ?