diff --git a/CHANGELOG.md b/CHANGELOG.md index 675506b..e288272 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # CHANGELOG — Set-OPS +## 2026-07-23 (suite 5) + +### Ajouté — wiki : l'axe « méthode » (KB enrichie) +Le wiki enseignait les fondamentaux *services* (identité, PKI, courriel…) mais pas la +*méthode* de Set-OPS. Quatre pages ajoutées, au moule à 4 temps (concept → Set-OPS → +transférable → à toi de jouer), avec exercices concrets : + +- **Le plan & l'adressage dérivé** — un seed (`index`), tout en découle (DRY, source unique). +- **Multi-instance & fédération** — un moteur, N écosystèmes ; découverte par convention. +- **La preuve** — « ne jamais affirmer plus que ce qu'on prouve » ; le registre, `make prouver`, + P01–P21. +- **Glossaire** — 24 concepts en une phrase (était « à venir »). + +Raccordées dans `Home.md` (deux unités-pilotes : services **et** méthode) et `_Sidebar.md` +(section « Flotte & preuve »). Fidèle à la doctrine : le wiki pointe vers `docs/`, ne recopie +pas. Publié via `make wiki-publier`. Wiki : 855 → 1573 lignes, 22 pages, aucun lien mort. + ## 2026-07-23 (suite 4) ### Ajouté — créer un MODÈLE (`make model-creer`, dépôt privé) diff --git a/wiki/Glossaire.md b/wiki/Glossaire.md new file mode 100644 index 0000000..15d1fda --- /dev/null +++ b/wiki/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/wiki/Home.md b/wiki/Home.md index 9e82df4..ba9eee7 100644 --- a/wiki/Home.md +++ b/wiki/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/wiki/La-preuve.md b/wiki/La-preuve.md new file mode 100644 index 0000000..56ce31d --- /dev/null +++ b/wiki/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 `