Cinquième page de la vague méthode. Au moule à 4 temps : éditer la SOURCE (le plan) pas l'artefact, dry-run avant apply, et l'invalide rendu impossible à saisir (le <select> « Hôte » ne propose que des hôtes réels -> pas d'hôte fantôme, garde P19). Exercices ancrés dans le réel (dont réparer un hôte fantôme via le select). Raccordée dans _Sidebar (Socle & méthode). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
85 lines
4.3 KiB
Markdown
85 lines
4.3 KiB
Markdown
# Le GUI (console d'exploitation)
|
|
|
|
> **Unité d'apprentissage.** Moule : ① concept → ② Set-OPS → ③ transférable → ④ à toi de jouer.
|
|
|
|
---
|
|
|
|
## ① Le concept *(générique)*
|
|
|
|
Un moteur d'infrastructure a besoin d'une **interface humaine** — sinon il n'est utilisable que
|
|
par son auteur (ou une IA). Le principe fondateur : **un opérateur doit tout piloter seul**, sans
|
|
l'auteur et sans IA (« exploitable sans IA »).
|
|
|
|
Une bonne console d'exploitation obéit à trois règles :
|
|
|
|
- **Elle édite la SOURCE, pas l'artefact.** On modifie le *plan* (l'état voulu), jamais l'inventaire
|
|
généré. La console montre la vérité, elle ne la contourne pas.
|
|
- **Elle prévisualise avant d'agir.** *dry-run* (voir ce qui changerait) avant *apply* (changer).
|
|
- **Elle empêche l'invalide.** Le meilleur garde-fou n'est pas un message d'erreur : c'est une
|
|
interface où l'erreur est **impossible à saisir**.
|
|
|
|
---
|
|
|
|
## ② Comment Set-OPS le fait
|
|
|
|
`make inventaire-ui` lance une console web **locale** (`127.0.0.1`, protégée par un jeton). Ses vues :
|
|
|
|
| Vues **éditables** (le plan) | Vues **dérivées** (lecture seule) |
|
|
|---|---|
|
|
| Serveurs · Applications · Bases · Domaines · **Intrants** | Flux · Couches · **Réseau** (flotte + devis) |
|
|
|
|
Le flux d'exploitation, de bout en bout :
|
|
|
|
1. **Éditer** une vue du plan → **Sauvegarder** ;
|
|
2. **« Appliquer le plan »** → régénère l'inventaire (VMID/IP/VLAN **dérivés**) ;
|
|
3. **Vérifier** (dry-run) sur un hôte → prévisualise sans rien changer ;
|
|
4. **Déployer** → applique les rôles (confirmation **renforcée** si l'instance est en **PROD**) ;
|
|
5. **Créer la VM** → clone sur Proxmox depuis le plan.
|
|
|
|
**L'erreur rendue impossible.** Le champ « Hôte » d'une application est un `<select>` qui ne
|
|
propose que des **hôtes réels** : impossible de pointer vers un hôte fantôme. La console couvre le
|
|
schéma du plan — et la preuve **P19** le vérifie.
|
|
|
|
**La flotte, dans la vue Réseau.** Voir toutes les instances, **basculer** (« Activer »), **créer**
|
|
une instance depuis un modèle, repérer une **collision** d'index. Cf.
|
|
[Multi-instance & fédération](Multi-instance-et-fédération).
|
|
|
|
---
|
|
|
|
## ③ Pourquoi c'est transférable
|
|
|
|
| Set-OPS | Équivalents ailleurs |
|
|
|---|---|
|
|
| GUI au-dessus d'Ansible | **AWX** / Ansible Automation Platform, **Semaphore** |
|
|
| éditer la source de vérité | l'UI de **NetBox** (IPAM/DCIM), une CMDB |
|
|
| dry-run → apply | `terraform plan/apply`, tout panneau IaC |
|
|
| l'invalide impossible à saisir | *validation à la source*, formulaires contraints |
|
|
|
|
Tu as appris **la console d'exploitation, éditer-la-source, dry-run-avant-apply, la validation à la
|
|
saisie** — pas « le GUI de Set-OPS ».
|
|
|
|
---
|
|
|
|
## ④ À toi de jouer
|
|
|
|
1. **Lance-la.** `make inventaire-ui`, ouvre l'URL affichée. Repère l'inventaire actif et l'état de
|
|
la flotte (en haut), les onglets, « Appliquer le plan », « Sauvegarder ».
|
|
2. **Édite → prévisualise.** Vue **Serveurs**, change la mémoire d'un hôte, **Sauvegarder**,
|
|
**Appliquer le plan**, puis **Vérifier** (dry-run) : tu vois ce qui *changerait* avant d'agir.
|
|
3. **Répare un hôte fantôme (l'erreur impossible).** Si une appli pointe un hôte inexistant, ouvre
|
|
la vue **Applications**, sélectionne-la : le `<select>` « Hôte » ne montre **que des hôtes
|
|
réels**. Choisis le bon, **Sauvegarder**, **Appliquer**. Tu ne *peux pas* re-saisir le fantôme.
|
|
4. **Bascule d'instance.** Vue **Réseau**, bouton **« Activer »** sur une autre instance. Toutes
|
|
les vues suivent, sans redémarrer.
|
|
5. **Sens le garde-fou.** Essaie de sauvegarder un plan incohérent (ex. une base dont le
|
|
consommateur n'existe pas) : la console **refuse** avec une raison. L'invalide ne passe pas.
|
|
6. **Casse & répare.** Édite `hosts.yml` à la main, reviens dans la GUI, « Appliquer le plan » : ta
|
|
modification est **écrasée** par le plan. La source de vérité, c'est le plan — pas l'inventaire.
|
|
|
|
---
|
|
|
|
## Pour aller plus loin *(dépôt)*
|
|
- Lancer : `make inventaire-ui` ; le code : `scripts/inventory_gui.py`.
|
|
- Ce que le GUI sait écrire (et la preuve) : `scripts/couverture_gui.py` (P19).
|
|
- Le flux plan → apply : unité **[Infra as Code & idempotence](Infra-as-Code-et-idempotence)**.
|
|
- La flotte : unité **[Multi-instance & fédération](Multi-instance-et-fédération)**.
|