Commit graph

23 commits

Author SHA1 Message Date
7a98678bd9 GUI : bouton « Pousser » (flux 100 % cliquable)
Chaque objet du détail se matérialise sur son hôte, en streaming console
(vault + confirmation prod) :
- Serveur → 🖥 Pousser clone la VM (make creer-vm), même sur un planifié —
  comble le trou : le GUI ne clonait pas.
- Application → Pousser déploie l'hôte porteur.
- Base → Pousser déploie l'hôte du serveur de BD (crée la base).
Nouveaux modes creer/pousser dans executer_flux + routes /api/creer et
/api/pousser. Flux complet : éditer → Appliquer → Pousser → Vérifier →
Déployer, sans quitter le navigateur.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 15:58:32 -04:00
da85af2a62 Corriger 3 bugs trouvés au premier déploiement réel (asgard)
- clonage/Makefile : chemin proxmox codé en dur `inventories/lab` →
  détection lab>principal>production (débloque les instances principal)
- resize disque grow-only : tolère le cas disque dérivé < template
  (shrinking not supported), la VM garde le disque du template
- PowerDNS : ne plus redéclarer launch+=bind (déjà posé par le paquet
  pdns-backend-bind) → « multiple backends 'bind' » résolu

Trouvés en déployant réellement infra-dns-01 (clone + socle durci +
PowerDNS qui résout) sur le cluster Proxmox.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 15:38:42 -04:00
614cebcc55 GUI : retirer la section « Groupes » du détail (redondante)
Depuis la fusion maître-détail, elle ne répétait que le socle (universel),
les rôles des applications (déjà listées) et les intégrations (déjà
cochées). Le prérequis bloquant — son seul signal unique — est désormais
nommé dans le pied. Code mort retiré (renduGroupe, detailGroupe,
titreGroupe, CSS .groupe*).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 19:01:39 -04:00
a9a1493440 Plancher de résolution /etc/hosts (indépendant du DNS)
Nouveau rôle de socle hosts_statiques (dans serveur_debian) : génère
/etc/hosts sur chaque VM depuis l'inventaire. L'écosystème se résout par
nom même DNS éteint, et le bootstrap ne dépend plus du DNS. client_dns
rendu tolérant (inerte sans DNS interne) ; dépendance client_dns→powerdns
passée molle. PowerDNS devient une commodité (zone/externe).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 18:05:42 -04:00
6df94fd713 Doc : formule supernet = 10.(10+index) (Chezlepro 10.11, Technolibre 10.12)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 17:47:00 -04:00
8029083536 Adressage fédéré : index d'instance (préfixe VMID + supernet)
Le VMID n'est plus codé 9CSNN en dur : il prend le préfixe d'un `index`
déclaré en tête de plan/nomenclature.yml. Convention : supernet =
10.(index*10).0.0/16, VMID = index·CSNN. Permet à N écosystèmes de
coexister sans collision (Chezlepro=1, Technolibre=2). Sans index →
9CSNN (rétro-compatible, bacs à sable en 172.19.x). deriveServeur JS
mort retiré. Doc multi-instances.md mise à jour.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 17:36:01 -04:00
8cc5ce8112 Doc : cadrage multi-instances (un moteur, N écosystèmes)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 17:13:45 -04:00
e57d2c265a Bascule d'instance (make instance-utiliser) + identité relative à l'inventaire
make instance-utiliser NOM=… repointe le symlink 'instance' (prod ↔ bac à
sable) ; make instance-courante affiche le montage. Le panneau Intrants lit
l'identité dans group_vars/all/10-intrants.yml de l'inventaire monté (réel
ou symlink partagé), donc compatible avec la séparation par instance comme
avec l'ancien partage lab/production.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:31:42 -04:00
0e7cefbb2f setops_production : garde-fou de prudence, plus un blocage de déploiement
Le déploiement réel est permis sur TOUTE instance (un bac à sable déploie
sur son infra lab : isolé ET fonctionnel). Le drapeau ne bloque plus ;
il marque la PROD pour exiger une confirmation renforcée (badge/bouton
rouge, re-saisie du nom d'hôte). executer_flux ne refuse plus selon le
drapeau. Badge « PROD » / « bac à sable » dans l'en-tête.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:20:18 -04:00
e2b924cedc Inventaire d'instance neutre et configurable (principal / SETOPS_INVENTAIRE)
Le moteur ne code plus en dur inventories/lab|production : un inventaire
par instance, détecté de façon rétro-compatible (principal > production >
lab) et surchargeable par SETOPS_INVENTAIRE. Makefile (définitions seules,
pas les 47 usages), inventory_gui, instancier, config_proxmox, serveurs,
applications. Les instances lab/production existantes marchent à
l'identique ; les nouvelles adoptent inventories/principal/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 16:08:25 -04:00
8b3648e9f9 Garde-fou de déploiement par instance (setops_production)
Le droit de déployer ne dépend plus du nom de l'inventaire mais d'un
drapeau explicite setops_production dans group_vars/all/ de l'instance
(true = prod, false = bac à sable). Le GUI (champ "production" de l'API) et
executer_flux le lisent ; rétro-compatible (à défaut, ancien repère
"inventaire production"). Première pierre de la séparation par instance.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 15:59:37 -04:00
c4e73f8712 Consolider les secrets dans une voûte unique par environnement
Fini les voûtes éparpillées : tous les secrets (token Proxmox + vault_*)
vivent dans group_vars/all/vault.yml, un seul fichier chiffré, un seul mot
de passe. Gabarit committé exemples/vault.exemple.yml (17 clés). make config
écrit/édite cette voûte (semée depuis le gabarit si absente). .gitignore
durci (**/vault.yml). Docs : config-proxmox.md (+ migration), intrants-
communs.md §H, QUICKSTART. Le GUI ne stocke aucun secret.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 15:42:12 -04:00
3a3a80e0ac Appliquer chezlepro_timezone (rôle chrony) + nettoyer le CSS mort du GUI
L'intrant de base global chezlepro_timezone était défini mais jamais
appliqué : le rôle chrony règle désormais le fuseau horaire (chrony_timezone,
vide = ne pas toucher). Nettoyage du CSS/HTML devenu mort après la refonte
maître-détail (.message, .chip-f, .onglet*, .base-ligne, .ch-grp*, etc.).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 15:36:08 -04:00
5176d714e9 GUI : atelier maître-détail unifié + fusion Serveur/Hôte
Toutes les vues adoptent le même motif que l'Inventaire : tuiles à
gauche, détail + saisie à droite, panneau droit contextuel (fin du
panneau figé au changement de vue). Applications et Bases passent en
maître-détail ; liens cliquables entre objets.

Les vues Inventaire (hôtes) et Serveurs (plan) faisaient doublon : elles
sont fusionnées en une vue Serveurs unique — tuile avec statut de
réconciliation, détail réunissant identité éditable, dérivés, groupes,
applications/bases hébergées et Vérifier/Déployer. Navigation clavier et
filtre rebranchés sur les serveurs ; bandeau « Comment lire ce parc ».
Code mort retiré (carte, renduChaine, ONGLETS, champLecture, sélection
d'hôte, chips de filtre).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 15:22:11 -04:00
2f9db3f516 GUI : retirer la vue Chaîne redondante
Son contenu (renduChaine) est déjà accessible, par hôte, dans l'onglet
« Chaîne » du détail de la vue Inventaire ; la vue ne faisait que le
répéter pour tous les hôtes. Retire le bouton, le rendu dessinerArbre et
le CSS .arbre-* ; raccourcis clavier ramenés à 1-4. La chaîne reste
consultable hôte par hôte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 13:28:04 -04:00
738fd2b88c GUI vue Serveurs : Nœud/Stockage en déroulantes, Intégrations en cases à cocher
Les champs libres deviennent des sélections alimentées par les paramètres
globaux : Nœud et Stockage puisent dans de nouveaux catalogues
proxmox_noeuds / proxmox_stockages (vide = défaut global), Intégrations
liste les rôles client_* disponibles (scan roles/client_*). Les catalogues
(Nœuds/Stockages/Ponts) sont des intrants de classe « Catalogue » éditables
dans le panneau Intrants ; ajout du type `liste` (chaîne virgulée → liste
YAML dédoublonnée) et de integrations_disponibles dans l'API.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 12:36:51 -04:00
a21a6b4e02 GUI : fluidité d'exploitation et vue Inventaire en lecture seule
Notifications empilées (toasts) au lieu d'une bannière écrasée, durée
d'exécution en direct sur les opérations longues, navigation clavier
(1-5 / j-k / v / d / Ctrl+S contextuel), validation inline des champs du
plan (vue Serveurs), garde-fou beforeunload, bouton Sauvegarder contextuel
(fin de l'impasse 409).

Convertit le détail de la vue Inventaire (cartes) en inspection lecture
seule : la vue annonçait « généré depuis le plan » tout en exposant une
surface d'édition non persistable. Retire les contrôles orphelins
(+ Hôte, ✕, bascule d'état,  Proposer, champs et groupes éditables) et
le code mort associé ; conserve Vérifier / Déployer et les onglets. CSS
inutilisé nettoyé. L'édition reste dans Serveurs / Applications / Bases.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 12:19:26 -04:00
441dd284bb Documenter les paramètres de make config
Ajoute docs/config-proxmox.md : référence champ par champ des 16 paramètres
Proxmox non sensibles + les secrets API demandés par l'assistant (sens,
défaut, quoi saisir, constante vs défaut surchargeable), plus l'annexe de
création du token API. Renvois ajoutés depuis make help et QUICKSTART.md.
Ces invites n'étaient expliquées nulle part de façon pérenne.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 12:19:14 -04:00
9f7bb229f3 Docs : présentation de l'écosystème Chezlepro et schéma de la méta-classe
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:07:24 -04:00
6c1d26ebf7 GUI : panneau Intrants de base, info-bulles, source d'identité partagée
Nouveau panneau « ⚙ Intrants » pour saisir d'un endroit unique les
valeurs communes à l'écosystème, avec distinction constantes (non
surchargeables) vs défauts (surchargeables dans les instances). Les
secrets ne sont jamais saisis ni affichés (garde INTRANTS_CLES_INTERDITES
+ filtrage par schéma) ; un domaine_interne vide est refusé et son
changement demande confirmation. Ajoute aussi les info-bulles d'aide au
survol des champs. domaine_interne/chezlepro_timezone consolidés en une
source partagée (inventories/partage/intrants-identite.yml).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:07:17 -04:00
5d30a3a608 Dimensionner les ressources VM depuis les logiciels hébergés
Les cœurs/RAM/disque d'une VM sont estimés depuis l'empreinte des rôles
hébergés (roles/<rôle>/meta/empreinte.yml) sommée au socle SE, au lieu
d'hériter des specs du golden template. Le générateur écrit
proxmox_coeurs/memoire/disque_taille ; le clonage les passe à Proxmox
(omit si absent → aucune régression). Override par hôte dans le plan.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 10:07:04 -04:00
c77ec20e4a Corriger instancier-appliquer FORCE=1 (ne relayait pas --force)
Trouve en dogfooding pendant la recreation d'une instance depuis un modele.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 09:29:08 -04:00
Alliance Boreale
3dd3f43ad8 Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00