diff --git a/Glossaire.md b/Glossaire.md new file mode 100644 index 0000000..15d1fda --- /dev/null +++ b/Glossaire.md @@ -0,0 +1,64 @@ +# Glossaire + +Les concepts-clés de Set-OPS, en une phrase chacun. Les mots *en italique* renvoient à une autre +entrée. Le détail vit dans les **unités d'apprentissage** et le dépôt (`docs/`). + +--- + +**Adressage dérivé** — Les IP, VLAN, VMID, sous-réseaux ne sont pas saisis : ils se **calculent** +depuis le *seed*. Cf. [Le plan & l'adressage dérivé](Le-plan-et-l-adressage-dérivé). + +**Binding (liaison)** — Relation déclarative entre entités du plan (app→app, app→base) résolue par +le moteur, sans coder de variables à la main. Cf. [Liaisons (bindings)](Liaisons-bindings). + +**DIFF VIDE** — État sain où le *plan* reproduit **exactement** l'inventaire généré : la source de +vérité et l'artefact concordent. Vérifié par `make instancier`. + +**Fédération** — Ensemble des *instances* qui cohabitent sur une infrastructure partagée, chacune +avec son *index* unique. Cf. [Multi-instance & fédération](Multi-instance-et-fédération). + +**`federe: false`** — Drapeau marquant un *bac à sable* local, **exclu** du réseau convergé (il ne +provisionne pas ses VLAN sur les switches de production). + +**Hôte fantôme** — Erreur de plan : une application posée sur un hôte **non déclaré** dans les +serveurs. Refusé par la preuve **P06** et par la création de modèle. + +**Idempotence** — Rejouer la même description N fois donne le même résultat (`changed=0` après la +1ʳᵉ fois). Cf. [Infra as Code & idempotence](Infra-as-Code-et-idempotence). + +**Index (seed)** — Le **seul** intrant d'adressage d'une instance. Détermine supernet +(`10.(10+index)`), VLAN (`1000+index×10+zone`), VMID. Unique par instance fédérée. + +**Instance** — Un écosystème réel (un *tenant*) : `../OPS-`, avec ses valeurs concrètes +(domaine, *voûte*, index). L'active est celle que pointe le symlink `instance/`. + +**ip-miroir** — Schéma de VMID à 9 chiffres où le numéro **contient** l'IP et le tenant +(`VLAN·octet-hôte·séquence`) — lisible d'un coup d'œil. + +**Modèle** — Un *plan* **générique** réutilisable (valeurs *placeholder*, sans *voûte*), dans le +dépôt privé `Set-OPS-Modeles`. Le socle public en est la preuve libre. On en crée une instance +(`instance-creer`) ; on en fabrique un (`model-creer`). + +**Nomenclature** — Le registre du **modèle réseau** : zones, placement des fonctions, et le *seed* +`index`. Ne contient **aucun** adressage (il en dérive — preuve P20). + +**Le plancher** — La première couche de résolution de noms : `/etc/hosts` posé par le socle, avant +même que le DNS soit debout. Cf. [DNS & résolution](DNS-et-résolution). + +**Plan** — La source unique de vérité (`instance/plan/` : serveurs, applications, bases, domaines, +nomenclature). On l'édite ; l'inventaire en est **généré**, jamais l'inverse. + +**Preuve (Pxx)** — Une vérification rejouable du harnais `make prouver` qui garde une classe +d'erreur. Cf. [La preuve](La-preuve). + +**Socle** — L'infrastructure de base souveraine (DNS, PKI, edge TLS, relais courriel) — le modèle +minimal public, extensible. + +**Tenant** — Synonyme d'*instance* dans le contexte de la *fédération* : un écosystème isolé parmi +d'autres. + +**Voûte (vault)** — Le fichier chiffré des secrets d'une instance (`vault.yml`, Ansible Vault). +**Jamais** dans un *modèle* ni versionné ; seul le gabarit `vault.yml.example` l'est. + +**Zone** — Un domaine de sécurité (un `/24` + un VLAN) : Frontière, Identité, Données, +Services-infra, Observabilité, Applications. Un pare-feu les sépare. diff --git a/Home.md b/Home.md index 9e82df4..ba9eee7 100644 --- a/Home.md +++ b/Home.md @@ -15,9 +15,9 @@ des **méthodes 100 % génériques**. ## Comment ce wiki est organisé | Section | Contenu | |---|---| -| **Unités d'apprentissage** | Un fondamental TIC par page, toujours selon le même moule (ci-dessous). | +| **Unités d'apprentissage** | Un fondamental TIC par page, toujours selon le même moule (ci-dessous). Des *services* (identité, PKI, courriel…) **et** de la *méthode* (le plan, le multi-instance, la preuve). | | **Opérations (runbooks)** | Procédures : ajouter un service, déployer un nœud, restaurer une sauvegarde… | -| **Glossaire** | Les concepts-clés (liaisons/bindings, le plancher, idempotence…). | +| **[Glossaire](Glossaire)** | Les concepts-clés en une phrase (seed, bindings, le plancher, hôte fantôme, voûte…). | | **Référence technique** | Le *détail du « comment »* vit **dans le dépôt** (`docs/`, README des rôles) — ce wiki y **pointe**, ne le **recopie pas** (pour éviter la dérive). | ## Le moule d'une unité d'apprentissage @@ -29,7 +29,11 @@ Chaque unité suit **quatre temps** : > **4. À toi de jouer** *(observe · interroge · casse · répare)* ## Par où commencer -👉 **[Identité & SSO](Identité-et-SSO)** — l'unité-pilote (authentification, annuaire, SSO, fédération). +- 👉 **[Identité & SSO](Identité-et-SSO)** — l'unité-pilote côté *services* (SSO, annuaire, OIDC). +- 🧭 **[Le plan & l'adressage dérivé](Le-plan-et-l-adressage-dérivé)** — l'unité-pilote côté + *méthode* : un seed, tout en découle. C'est la clé de voûte du reste. +- 🌐 **[Multi-instance & fédération](Multi-instance-et-fédération)** — un moteur, N écosystèmes. +- 🔬 **[La preuve](La-preuve)** — *ne jamais affirmer plus que ce qu'on prouve.* --- *Deux axes sont enseignés partout : le **QUOI** (les concepts) et le **COMMENT** (les méthodes de diff --git a/La-preuve.md b/La-preuve.md new file mode 100644 index 0000000..56ce31d --- /dev/null +++ b/La-preuve.md @@ -0,0 +1,82 @@ +# La preuve — prouver, pas affirmer + +> **Unité d'apprentissage.** Moule : ① concept → ② Set-OPS → ③ transférable → ④ à toi de jouer. + +--- + +## ① Le concept *(générique)* + +Une affirmation sans **vérification rejouable** n'est que du marketing. « C'est sécurisé », +« c'est sauvegardé », « ça fonctionne » — *prouve-le*. La discipline se résume à une règle : + +> **Ne jamais affirmer plus que ce qu'on prouve.** + +Trois idées la portent : + +- **Registre d'affirmations** — chaque promesse publique est tracée vers une **commande qui la + vérifie**, ou marquée honnêtement « non prouvée ». +- **Harnais rejouable** — une seule commande rejoue *toutes* les preuves et produit une **pièce + justificative datée**. On ne « croit » pas : on **relance**. +- **Le registre a le droit de perdre** — une preuve qui échoue fait *redescendre* l'affirmation. + C'est la seule condition pour qu'un tel registre ait de la valeur. + +--- + +## ② Comment Set-OPS le fait + +- **Le registre** : `docs/audit/affirmations.md` — chaque affirmation du dépôt (README, docs, + aide `make`, GUI) reliée à une preuve et un statut (✅/🟡/❌/⚪). +- **Le harnais** : `make prouver` rejoue les preuves automatisables (**P01–P21**) et écrit + `docs/audit/preuve-.md`. `make verifier` les inclut : il **échoue** si une preuve échoue. +- **Chaque preuve garde une classe d'erreur.** Extrait : + +| Preuve | Ce qu'elle empêche de mentir | +|---|---| +| P03 | l'inventaire n'est pas généré du plan (**diff vide**) | +| P06 | un registre incohérent (dont l'**hôte fantôme**) | +| P17 | un **modèle** invalide (tous, pas seulement le socle) | +| P18 | un **gabarit de voûte** incomplet | +| P19 | un champ du plan que le **GUI** ne sait pas éditer | +| P20 | de l'**adressage stocké** (tout doit dériver du seed) | +| P21 | une **collision d'index** entre instances fédérées | + +Ce n'est pas un framework de test parallèle : le harnais **orchestre** l'outillage existant, il ne +réimplémente aucune validation. + +--- + +## ③ Pourquoi c'est transférable + +| Set-OPS | Équivalents ailleurs | +|---|---| +| `make prouver` | tests automatisés, **CI/CD**, `terraform validate` | +| registre d'affirmations | *traçabilité de conformité* (SOC 2, ISO) | +| pièce justificative datée | *audit trail*, preuve d'audit | +| « le registre peut perdre » | un test vert n'est utile que s'il peut virer rouge | + +Tu as appris **la vérification rejouable, la preuve d'audit, la culture du test** — pas « le +harnais de Set-OPS ». + +--- + +## ④ À toi de jouer + +1. **Produis une preuve.** `make prouver` (voûte exportée). Lis + `docs/audit/preuve-.md` : chaque preuve, son verdict, l'affirmation couverte. +2. **Fais échouer une preuve — exprès.** Introduis un **hôte fantôme** : dans `applications.yml`, + pointe une appli vers un hôte qui n'existe pas dans `serveurs.yml`. `make prouver` : **P06 + échoue**, en nommant l'hôte. Corrige (ou via le `` 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 `