Nomenclature réalignée selon le gros bon sens ;-)
Some checks are pending
CI / yaml-lint (push) Waiting to run
CI / ssot-export (push) Waiting to run
CI / tests (push) Waiting to run
CI / docs (push) Waiting to run

This commit is contained in:
Dan Allaire 2025-10-31 22:21:00 -04:00
parent 0029f80823
commit 51862096bb
2 changed files with 704 additions and 242 deletions

View file

@ -1,242 +0,0 @@
# 🌲 Nomenclature Boréale v3 — Bio-Mimétiste & Autopoïétique
**Version :** 3.0
**Date :** 25 octobre 2025
**Statut :** Référence vivante (SSOT)
**Objet :** Établir la nomenclature organique des identifiants, adresses et noms au sein de lécosystème boréal, selon le modèle à 8 couches bio-mimétiste et autopoïétique.
**Compatibilité :** Conforme au réalignement CRB-1 ; C3 = gouvernance/supervision ; C4 = forge/mutualisation ; C5 = pivot ; C6C8 = tenants.
---
## 🌱 Préambule — Avis de Réalignement CRB-1
> **AB-Avis de Réalignement 25-10-2025 / Cycle de Réalignement Boréal #1**
> Adoption du modèle biomimétique & autopoïétique comme racine unique de la nomenclature.
> Intégration du principe **adjacent-only**, de la séparation **fédéré / tenant**, et de la portabilité intégrale des tenants.
> Ce document remplace la version 2 et devient la **référence vivante** pour tous les artefacts, registres et pipelines.
---
## 🧬 1. Règle dappartenance et portabilité
### 1.1 Règle par couche
* **C1C4 = Fédération :** les racines et le métabolisme commun (datacenters, réseau, forge, artefacts).
* **C5 = Pivot :** la membrane déchange, régulatrice des flux entre fédéré et tenant.
* **C6C8 = Tenants :** la canopée cognitive, où se déploient les services, produits et connaissances.
### 1.2 Principe de portabilité
Tout tenant (C6-C8) doit pouvoir migrer sans perte vers un autre membre fédéré.
Garanties minimales :
1. **Descripteur YAML** complet (identités TTTII, DNS, inventaire, secrets référencés).
2. **Interopérabilité ouverte :** formats standard, exports intégraux testables.
3. **IaC & pipelines reproductibles :** Terraform/Ansible/CI signés.
4. **Identité & DNS fédérés :** SSO OpenID/SAML, délégation documentée.
5. **Observabilité scindée :** métriques infra chez le fédéré, applicatives chez le tenant, exportables.
---
## 🌳 2. Architecture vivante de référence
La nomenclature nest pas un tableau : cest un **organisme de cohérence**.
Les VMIDs, IPs et noms DNS forment la sève qui relie chaque organe du système.
### 2.1 Topologie organique de la fédération
```
[ C8 Conscience ]
[ C7 Produits / Expériences ]
[ C6 Services Tenant ]
[ C5 Pivot / Membrane ]
[ C4 Forge / Métabolisme commun ]
[ C3 Gouvernance / Supervision ]
[ C2 Réseau / DNS / PKI ]
[ C1 Physique / Énergie / Sécurité ]
```
Chaque flèche représente une interface **adjacente et perméable** ; aucun flux ne traverse plusieurs couches directement.
---
## ⚙️ 3. Langage des identifiants et des services
La nomenclature décrit comment chaque élément sinscrit dans le corps boréal.
### 3.1 Structure VMID (organes numériques)
**Format :**
```
0CTTII → Infrastructure fédérée (Couches 14)
TTTII → Tenants (Couches 68)
```
* `C` = Couche (14)
* `TT` = Type de service (00-99)
* `II` = Instance (01-99)
* `TTT` = Tenant ID (001-999)
**Plages principales :**
```
01000-01999 → C1 Physique
02000-02999 → C2 Réseau
03000-03999 → C3 Gouvernance / Supervision
04000-04999 → C4 Forge / Mutualisation
05000-05999 → C5 Pivot / Médiation
10000-99999 → C6-C8 Tenants
```
**Exemples :**
```
03010 → C3 : Keycloak (IdP)
04021 → C4 : Forgejo Git
05011 → C5 : FastAPI Admin / Portail
10011 → C6 : Backend tenant 001
10021 → C6 : DB tenant 001
```
---
## 🌐 4. Plan dAdressage et Réseau
### 4.1 Invariants
* Tous les flux passent par leurs **couches adjacentes**.
* Les tenants ne parlent jamais directement au DNS fédéré (C2) : ils utilisent le résolveur du pivot (C5).
* Les services fédérés partagent un espace dadressage cohérent (10.0.0.0/8).
### 4.2 Répartition logique des espaces
```
10.0.0.0/24 → Management (C1)
10.0.1.0/24 → Forge & Mutualisation (C4)
10.0.2.0/24 → Réseau & DNS (C2)
10.0.3.0/24 → Gouvernance & Supervision (C3)
10.0.4.0/24 → Pivot Opérationnel (C5)
10.0.10.0/23 → Tenants (C6-C8)
172.16.0.0/12 → Espace fédératif inter-membres
```
### 4.3 Flux autorisés (adjacent-only)
| Source | Destination | Sens | Description |
| ------ | ----------- | ---- | ---------------------------- |
| C1 | C2 | ↓ | Transport et synchronisation |
| C2 | C3 | ↓ | Télémetrie et topologie |
| C3 | C4 | ↓ | Politiques et clés |
| C4 | C5 | ↓ | Artefacts et secrets |
| C5 | C6 | ↓ | Déploiements et templates |
| C6 | C7 | ↓ | Services métiers |
| C7 | C8 | ↓ | Données dusage |
| C8 | C7 | ↑ | Décisions et analyses |
| C7 | C6 | ↑ | Retours et métriques |
| C6 | C5 | ↑ | Logs et besoins |
| C5 | C4 | ↑ | Feedbacks |
| C4 | C3 | ↑ | Preuves et conformité |
| C3 | C2 | ↑ | Alertes et politiques réseau |
| C2 | C1 | ↑ | Charge et besoins physiques |
---
## 🧩 5. Noms de Machines et DNS
### 5.1 Forme générale
```
<service>.<contexte>.<membre>.alliance-boreale.ca
```
* `<contexte>` = infra | pivot | t<tenant-id>
* `<membre>` = ID court (czp, nul, tli…)
* Les tenants utilisent le préfixe `tXXX`.
**Exemples :**
```
dns-master.infra.czp.alliance-boreale.ca → 10.0.2.10
keycloak.gov.czp.alliance-boreale.ca → 10.0.3.20
forgejo.forge.czp.alliance-boreale.ca → 10.0.1.20
fastapi.pivot.czp.alliance-boreale.ca → 10.0.4.10
web.t001.czp.alliance-boreale.ca → 10.0.10.1
db.t001.czp.alliance-boreale.ca → 10.0.10.2
```
---
## 🪶 6. Procédures dEnsemencement
Créer ou migrer une entité dans lécosystème boréal revient à greffer une cellule dans un organisme.
### 6.1 Création dun service fédéré (C1C5)
1. **Choisir la couche et le type de service.**
2. **Attribuer le VMID** selon la plage.
3. **Déterminer ladresse IP** à partir du plan.
4. **Nommer la VM** suivant la syntaxe :
```
<membre>-infra-<type>-prod-<instance>
```
5. **Créer lentrée DNS**.
6. **Documenter** dans linventaire Ansible et le registre.
### 6.2 Création dun tenant (C6C8)
1. **Allouer un Tenant ID (tXXX)**.
2. **Définir le descripteur YAML** (TTTII, DNS, inventaire, secrets référencés).
3. **Générer le paquet portatif** : YAML + artefacts signés.
4. **Déployer via le pivot (C5)** ; aucun accès direct C4/C3.
5. **Vérifier la traçabilité** (ΔLog & preuves signées).
---
## 🌐 7. Tables de Correspondance (Extrait)
| VMID | Couche | Nom VM | IP | DNS | Fonction |
| ----- | :----: | ------------------------------- | --------- | -------------------------- | -------------------------- |
| 02001 | C2 | czp-infra-dns-master-prod-01 | 10.0.2.10 | dns-master.infra.czp.ab.ca | DNS maître |
| 03010 | C3 | czp-infra-idp-keycloak-prod-01 | 10.0.3.20 | keycloak.gov.czp.ab.ca | Identité fédérée |
| 04021 | C4 | czp-infra-forgejo-git-prod-01 | 10.0.1.20 | forgejo.forge.czp.ab.ca | Forge mutualisée |
| 05011 | C5 | czp-infra-fastapi-pivot-prod-01 | 10.0.4.10 | fastapi.pivot.czp.ab.ca | Portail & API |
| 10011 | C6 | czp-t001-backend-prod-01 | 10.0.10.3 | api.t001.czp.ab.ca | Backend tenant 001 |
| 10021 | C6 | czp-t001-db-postgres-prod-01 | 10.0.10.4 | db.t001.czp.ab.ca | Base de données tenant 001 |
---
## 📜 8. ΔLog — Itération CRB-1 (25-10-2025)
* **Refonte totale** de la nomenclature v2 → v3.
* Adoption du modèle biomimétique/autopoïétique.
* Ajout du principe **adjacent-only**.
* Reclassement des services :
* Ansible → C3, Forgejo → C4, FastAPI → C5.
* Ajout de la métaphore organique (flux ascendants/descendants).
* Simplification du plan dadressage.
* Nouvelles tables de correspondance.
* Introduction de la notion d**ensemencement** (plutôt que création).
---
## 🌌 9. Signature Boréale
> *Sous la voûte numérique, chaque bit est une graine.*
> *Chaque grappe de VM est un organe, chaque tenant une espèce.*
> *La forêt se régénère, la fédération veille, la conscience apprend.*
> *Ainsi pousse lAlliance Boréale, autopoïétique et libre.*
---
**Fin du document — Référence vivante v3 (2025-10-25)**
📁 ce fichier sert de base à la Nomenclature, aux pipelines et au Label de Prestige.

704
docs/00_Nomenclature_v4.md Normal file
View file

@ -0,0 +1,704 @@
# 🌲 Nomenclature Boréale v4 — Bio-Mimétiste & Autopoïétique
**Version :** 4.0
**Date :** 31 octobre 2025
**Statut :** Référence vivante (SSOT)
**Objet :** Établir la nomenclature organique des identifiants, adresses et noms au sein de l'écosystème boréal, selon le modèle à 8 couches bio-mimétiste et autopoïétique.
**Compatibilité :** Conforme au réalignement CRB-2 ; principe de **souveraineté DNS totale** des membres fédérés.
---
## 🌱 Préambule — Avis de Réalignement CRB-2
> **AB-Avis de Réalignement 31-10-2025 / Cycle de Réalignement Boréal #2**
>
> **Correction architecturale majeure : Souveraineté DNS des membres fédérés.**
>
> ### Changement fondamental
>
> **AVANT (v3)** : Supposait une zone DNS parent `alliance-boreale.ca` déléguant des sous-zones aux membres.
>
> **MAINTENANT (v4)** : **Chaque membre fédéré possède et contrôle 100% son propre domaine.**
>
> L'Alliance Boréale n'est **pas un membre fédéré**, mais un **concept organisationnel** et potentiellement un **tenant** hébergé par un membre.
>
> ### Implications
>
> 1. **DNS** : Pas de zone parent commune. Résilience par AXFR croisés (solidarité mutuelle).
> 2. **Découverte** : Services inter-membres via Registraire YAML (Document 14).
> 3. **Nommage** : `<service>.<contexte>.<domaine-membre>` (ex: `git.infra.chezlepro.ca`)
> 4. **Réseau** : `10.0.0.0/8` = infrastructure interne d'UN membre (pas partagé entre membres).
> 5. **Fédération** : `172.16.0.0/12` = optionnel VPN mesh inter-membres (Phase 2+).
>
> Ce document corrige les Sections 4.2, 5 et 7, et ajoute la Section 5 bis (Fédération DNS Souveraine).
---
## 🧬 1. Règle d'appartenance et portabilité
### 1.1 Règle par couche
* **C1C4 = Fédération :** les racines et le métabolisme commun (datacenters, réseau, forge, artefacts).
* **C5 = Pivot :** la membrane d'échange, régulatrice des flux entre fédéré et tenant.
* **C6C8 = Tenants :** la canopée cognitive, où se déploient les services, produits et connaissances.
### 1.2 Principe de portabilité
Tout tenant (C6-C8) doit pouvoir migrer sans perte vers un autre membre fédéré.
Garanties minimales :
1. **Descripteur YAML** complet (identités TTTII, DNS, inventaire, secrets référencés).
2. **Interopérabilité ouverte :** formats standard, exports intégraux testables.
3. **IaC & pipelines reproductibles :** Terraform/Ansible/CI signés.
4. **Identité & DNS fédérés :** SSO OpenID/SAML, délégation documentée.
5. **Observabilité scindée :** métriques infra chez le fédéré, applicatives chez le tenant, exportables.
---
## 🌳 2. Architecture vivante de référence
La nomenclature n'est pas un tableau : c'est un **organisme de cohérence**.
Les VMIDs, IPs et noms DNS forment la sève qui relie chaque organe du système.
### 2.1 Topologie organique de la fédération
```
[ C8 Conscience ]
[ C7 Produits / Expériences ]
[ C6 Services Tenant ]
[ C5 Pivot / Membrane ]
[ C4 Forge / Métabolisme commun ]
[ C3 Gouvernance / Supervision ]
[ C2 Réseau / DNS / PKI ]
[ C1 Physique / Énergie / Sécurité ]
```
Chaque flèche représente une interface **adjacente et perméable** ; aucun flux ne traverse plusieurs couches directement.
---
## ⚙️ 3. Langage des identifiants et des services
La nomenclature décrit comment chaque élément s'inscrit dans le corps boréal.
### 3.1 Structure VMID (organes numériques)
**Format :**
```
0CTTII → Infrastructure fédérée (Couches 14)
TTTII → Tenants (Couches 68)
```
* `C` = Couche (14)
* `TT` = Type de service (00-99)
* `II` = Instance (01-99)
* `TTT` = Tenant ID (001-999)
**Plages principales :**
```
01000-01999 → C1 Physique
02000-02999 → C2 Réseau
03000-03999 → C3 Gouvernance / Supervision
04000-04999 → C4 Forge / Mutualisation
05000-05999 → C5 Pivot / Médiation
10000-99999 → C6-C8 Tenants
```
**Exemples :**
```
02001 → C2 : DNS Master (PowerDNS)
03010 → C3 : Keycloak (IdP)
04021 → C4 : Forgejo Git
05011 → C5 : FastAPI Admin / Portail
10011 → C6 : Backend tenant 001
10021 → C6 : DB tenant 001
```
---
## 🌐 4. Plan d'Adressage et Réseau
### 4.1 Invariants
* Tous les flux passent par leurs **couches adjacentes**.
* Les tenants ne parlent jamais directement au DNS fédéré (C2) : ils utilisent le résolveur du pivot (C5).
* Les services fédérés d'un membre partagent un espace d'adressage cohérent (10.0.0.0/8).
### 4.2 Répartition logique des espaces ⚠️ **CORRIGÉ CRB-2**
#### Adressage INTERNE (au sein d'un membre fédéré)
```
10.0.0.0/8 → Infrastructure interne d'UN membre fédéré
Répartition par couche :
10.0.0.0/24 → Management (C1)
10.0.1.0/24 → Forge & Mutualisation (C4)
10.0.2.0/24 → Réseau & DNS (C2)
10.0.3.0/24 → Gouvernance & Supervision (C3)
10.0.4.0/24 → Pivot Opérationnel (C5)
10.0.10.0/23 → Tenants (C6-C8)
```
**⚠️ IMPORTANT** : Cet espace est **propre à chaque membre**. Chezlepro utilise `10.0.0.0/8`, Nuage Libre utilise également `10.0.0.0/8` **indépendamment**. Pas de conflit car réseaux isolés.
#### Interconnexion INTER-MEMBRES (optionnel, futur)
```
172.16.0.0/12 → VPN mesh entre membres (WireGuard/Nebula)
Usage :
- Optionnel en Phase 1
- Un membre peut fonctionner 100% isolé
- Connexion au mesh fédératif = décision collective ultérieure
Allocation :
- Par membre, selon accord collectif
- Exemple : Chezlepro = 172.16.1.0/24
Nuage Libre = 172.16.2.0/24
```
#### Internet Public
```
IPs publiques → Services exposés (DNS, sites web, email, etc.)
Gestion :
- Chaque membre gère ses propres IPs publiques
- Pas de pool commun "Alliance Boréale"
- Enregistrement dans Registraire YAML (Document 14)
```
### 4.3 Flux autorisés (adjacent-only)
| Source | Destination | Sens | Description |
| ------ | ----------- | ---- | ---------------------------- |
| C1 | C2 | ↓ | Transport et synchronisation |
| C2 | C3 | ↓ | Télémetrie et topologie |
| C3 | C4 | ↓ | Politiques et clés |
| C4 | C5 | ↓ | Artefacts et secrets |
| C5 | C6 | ↓ | Déploiements et templates |
| C6 | C7 | ↓ | Services métiers |
| C7 | C8 | ↓ | Données d'usage |
| C8 | C7 | ↑ | Décisions et analyses |
| C7 | C6 | ↑ | Retours et métriques |
| C6 | C5 | ↑ | Logs et besoins |
| C5 | C4 | ↑ | Feedbacks |
| C4 | C3 | ↑ | Preuves et conformité |
| C3 | C2 | ↑ | Alertes et politiques réseau |
| C2 | C1 | ↑ | Charge et besoins physiques |
---
## 🧩 5. Noms de Machines et DNS ⚠️ **REFONTE COMPLÈTE CRB-2**
### 5.1 Principe de Souveraineté DNS
**Règle fondamentale** : Chaque membre fédéré possède et contrôle **100% son propre domaine**.
**L'Alliance Boréale n'opère AUCUNE zone DNS parent.**
### 5.2 Forme générale (CORRIGÉE)
```
<service>.<contexte>.<domaine-membre>
```
**Où :**
* `<service>` = nom du service (ns1, git, sso, pivot, etc.)
* `<contexte>` = infra | tenants | public (optionnel)
* `<domaine-membre>` = domaine souverain du membre (ex: chezlepro.ca)
### 5.3 Contextes de nommage
#### **infra** : Services fédérés (C1-C5)
Services d'infrastructure du membre, non exposés directement aux tenants.
```
ns1.infra.chezlepro.ca → DNS Master (C2)
ns2.infra.chezlepro.ca → DNS Slave (C2)
sso.infra.chezlepro.ca → Keycloak (C3)
git.infra.chezlepro.ca → Forgejo (C4)
pivot.infra.chezlepro.ca → FastAPI Admin (C5)
vault.infra.chezlepro.ca → Secrets (C4)
```
#### **tenants** : Tenants hébergés (C6-C8)
Services appartenant aux clients/projets hébergés.
```
client-x.tenants.chezlepro.ca → Tenant d'un client
mon-app.tenants.chezlepro.ca → Projet personnel
alliance-boreale.tenants.chezlepro.ca → L'Alliance comme tenant
```
#### **public** (optionnel) : Services à la racine
Services exposés publiquement, sans sous-domaine `infra`.
```
git.chezlepro.ca → Forge publique (alias vers git.infra.chezlepro.ca)
matrix.chezlepro.ca → Serveur Matrix public
mail.chezlepro.ca → MX email
www.chezlepro.ca → Site web corporate
```
### 5.4 Exemples concrets par membre
#### Chezlepro Inc. (slug: clp, domaine: chezlepro.ca)
```
# Infrastructure fédérée
ns1.infra.chezlepro.ca → 10.0.2.10 (VMID 02001)
ns2.infra.chezlepro.ca → 10.0.2.11 (VMID 02002)
sso.infra.chezlepro.ca → 10.0.3.20 (VMID 03010)
git.infra.chezlepro.ca → 10.0.1.20 (VMID 04021)
pivot.infra.chezlepro.ca → 10.0.4.10 (VMID 05011)
# Tenants
client-abc.tenants.chezlepro.ca → 10.0.10.10 (VMID 10101)
alliance-boreale.tenants.chezlepro.ca → 10.0.10.20 (VMID 10201)
# Public (optionnel)
git.chezlepro.ca → CNAME vers git.infra.chezlepro.ca
```
#### Nuage Libre (slug: nul, domaine: nuagelibre.ca)
```
# Infrastructure fédérée
ns1.infra.nuagelibre.ca
ns2.infra.nuagelibre.ca
sso.infra.nuagelibre.ca
git.infra.nuagelibre.ca
pivot.infra.nuagelibre.ca
# Tenants
startup-y.tenants.nuagelibre.ca
```
### 5.5 Convention de nommage des VMs
Format standardisé pour faciliter l'inventaire Ansible :
```
<membre>-<layer>-<service>-<env>-<instance>
```
**Où :**
* `<membre>` = slug court (clp, nul, tli)
* `<layer>` = infra | tenant
* `<service>` = dns-master, keycloak, forgejo, backend, db, etc.
* `<env>` = prod | staging | dev
* `<instance>` = 01, 02, 03...
**Exemples :**
```
clp-infra-dns-master-prod-01 → VMID 02001, ns1.infra.chezlepro.ca
clp-infra-dns-slave-prod-01 → VMID 02002, ns2.infra.chezlepro.ca
clp-infra-keycloak-prod-01 → VMID 03010, sso.infra.chezlepro.ca
clp-infra-forgejo-prod-01 → VMID 04021, git.infra.chezlepro.ca
clp-tenant-backend-prod-01 → VMID 10101, backend.client-x.tenants.chezlepro.ca
```
---
## 🌐 5 bis. Fédération DNS Souveraine ⚠️ **NOUVELLE SECTION CRB-2**
### Principe de Non-Hiérarchie DNS
**L'Alliance Boréale n'opère AUCUNE zone DNS parent.**
Contrairement aux modèles traditionnels où une organisation fédératrice gère une zone parent (ex: `.alliance-boreale.ca`) et délègue des sous-zones aux membres, **L'Alliance Boréale adopte un modèle de souveraineté totale**.
**Conséquences :**
- ✅ Chaque membre = maître absolu de son domaine
- ✅ Aucun SPOF (Single Point of Failure) DNS central
- ✅ Résilience par solidarité mutuelle (AXFR croisés)
- ✅ Portabilité : un membre peut quitter sans dépendance DNS
### Découverte de Services Inter-Membres
#### Option A : Registraire YAML (recommandé Phase 1)
Le Registraire (Document 14) contient les métadonnées de chaque membre.
**Exemple : `registraire/membres/m001-chezlepro.yml`**
```yaml
member_id: m001
slug: clp
status: active
identity:
legal_name: "Chezlepro Inc."
domains:
primary: chezlepro.ca
# Services exposés
services:
dns:
- ns1.infra.chezlepro.ca
- ns2.infra.chezlepro.ca
sso: sso.infra.chezlepro.ca
forge: git.infra.chezlepro.ca
matrix: matrix.chezlepro.ca
email: mail.chezlepro.ca
infrastructure:
dns:
primary_ns: ns1.infra.chezlepro.ca
secondary_ns: ns2.infra.chezlepro.ca
dnssec_enabled: true
public_ips:
dns_master: 203.0.113.10
dns_slave: 203.0.113.11
```
**Usage** : Un membre qui veut contacter Forgejo de Chezlepro lit le Registraire et découvre `git.infra.chezlepro.ca`.
#### Option B : DNS SRV Records (futur, optionnel)
Convention standardisée de records SRV pour découverte automatique.
```dns
; Zone chezlepro.ca
_git._tcp.federation.chezlepro.ca. SRV 10 0 443 git.infra.chezlepro.ca.
_matrix._tcp.federation.chezlepro.ca. SRV 10 0 8448 matrix.chezlepro.ca.
_xmpp-client._tcp.federation.chezlepro.ca. SRV 5 0 5222 xmpp.chezlepro.ca.
```
**Usage** : Un client peut requêter `_git._tcp.federation.chezlepro.ca` pour découvrir le serveur Forgejo.
#### Option C : Well-Known URIs (futur, optionnel)
```
https://chezlepro.ca/.well-known/alliance-boreale.json
```
Retourne :
```json
{
"member_id": "m001",
"slug": "clp",
"services": {
"dns": ["ns1.infra.chezlepro.ca", "ns2.infra.chezlepro.ca"],
"sso": "sso.infra.chezlepro.ca",
"forge": "git.infra.chezlepro.ca",
"matrix": "matrix.chezlepro.ca"
}
}
```
### Résilience DNS Mutuelle (Triangle de Solidarité)
**Principe** : Chaque membre héberge les DNS secondaires de **2 autres membres** via AXFR croisés.
**Avantages :**
- ✅ Résilience géographique (3 datacenters distincts)
- ✅ Solidarité technique concrète
- ✅ Pas de dépendance à un "hub" central
- ✅ Topologie décentralisée (pas de SPOF)
**Exemple : Triangle Chezlepro - Nuage Libre - TechnoLibre**
```
Chezlepro (chezlepro.ca) :
ns1.infra.chezlepro.ca (MASTER) → chez Chezlepro
ns2.infra.chezlepro.ca (SLAVE) → chez Nuage Libre
ns3.infra.chezlepro.ca (SLAVE) → chez TechnoLibre
Nuage Libre (nuagelibre.ca) :
ns1.infra.nuagelibre.ca (MASTER) → chez Nuage Libre
ns2.infra.nuagelibre.ca (SLAVE) → chez TechnoLibre
ns3.infra.nuagelibre.ca (SLAVE) → chez Chezlepro
TechnoLibre (technolibre.ca) :
ns1.infra.technolibre.ca (MASTER) → chez TechnoLibre
ns2.infra.technolibre.ca (SLAVE) → chez Chezlepro
ns3.infra.technolibre.ca (SLAVE) → chez Nuage Libre
```
**Configuration AXFR** : Voir Document 05 (Opération DNS Fédérée) pour détails techniques (TSIG, ACL, NOTIFY).
**Démarrage en solo** : Un membre peut commencer avec uniquement ns1 + ns2 locaux, puis ajouter ns3 externe quand un partenaire est identifié.
### Enregistrement au Registraire
**Obligatoire** : Chaque membre doit documenter ses DNS dans son fichier Registraire.
**Déclencheur** : Lors de l'onboarding (Semaine 3-4, Document 08).
**Validation** : Tests publics par pairs (voir Document 05, Section 5).
---
## 🪶 6. Procédures d'Ensemencement
Créer ou migrer une entité dans l'écosystème boréal revient à greffer une cellule dans un organisme.
### 6.1 Création d'un service fédéré (C1C5)
1. **Choisir la couche et le type de service.**
2. **Attribuer le VMID** selon la plage (Section 3.1).
3. **Déterminer l'adresse IP** à partir du plan (Section 4.2).
4. **Nommer la VM** suivant la syntaxe (Section 5.5) :
```
<membre>-infra-<type>-prod-<instance>
```
5. **Créer l'entrée DNS** (Section 5.3) :
```
<service>.infra.<domaine-membre>
```
6. **Documenter** dans l'inventaire Ansible et le registre (Document 14).
**Exemple complet (DNS Master Chezlepro)** :
```yaml
# Étape 1 : Choix
Couche: C2 (Réseau)
Type: DNS Master (PowerDNS)
# Étape 2 : VMID
VMID: 02001 (C2, type 00, instance 01)
# Étape 3 : IP
IP interne: 10.0.2.10
IP publique: 203.0.113.10 (à fournir par membre)
# Étape 4 : Nom VM
clp-infra-dns-master-prod-01
# Étape 5 : DNS
FQDN: ns1.infra.chezlepro.ca
# Étape 6 : Documentation
Ansible inventory: inventories/production/hosts.yml
Registraire: registraire/membres/m001-chezlepro.yml
```
### 6.2 Création d'un tenant (C6C8)
1. **Allouer un Tenant ID (tXXX)**.
2. **Définir le descripteur YAML** (TTTII, DNS, inventaire, secrets référencés).
3. **Générer le paquet portatif** : YAML + artefacts signés.
4. **Déployer via le pivot (C5)** ; aucun accès direct C4/C3.
5. **Vérifier la traçabilité** (ΔLog & preuves signées).
**Exemple complet (Tenant 001 "Alliance Boréale" hébergé chez Chezlepro)** :
```yaml
# Étape 1 : Tenant ID
Tenant ID: 001
# Étape 2 : Descripteur YAML
tenant_id: 001
slug: alliance-boreale
owner: L'Alliance Boréale (concept organisationnel)
hosted_by: m001 (Chezlepro)
vmids:
backend: 10101
database: 10102
frontend: 10103
dns:
zone: alliance-boreale.tenants.chezlepro.ca
records:
- name: www
type: A
value: 10.0.10.10
- name: api
type: A
value: 10.0.10.11
# Étape 3 : Paquet portatif
Artefacts:
- tenant-001-descriptor.yml (signé)
- terraform/ (IaC reproductible)
- ansible/ (playbooks)
- docker-compose.yml (si applicable)
# Étape 4 : Déploiement via pivot
Endpoint: https://pivot.infra.chezlepro.ca/api/v1/tenants
Méthode: POST avec JWT (authentifié via Keycloak)
# Étape 5 : Traçabilité
ΔLog: /governance/tenants/2025-10-tenant-001-deployed.md
Signature: GPG du Cercle Opérationnel
```
---
## 🌐 7. Tables de Correspondance ⚠️ **MISE À JOUR CRB-2**
### Exemple : Chezlepro Inc. (clp, chezlepro.ca)
| VMID | Couche | Nom VM | IP Interne | DNS | Fonction |
| ----- | :----: | ------------------------------- | ---------- | --------------------------------- | -------------------------- |
| 02001 | C2 | clp-infra-dns-master-prod-01 | 10.0.2.10 | ns1.infra.chezlepro.ca | DNS Master (PowerDNS) |
| 02002 | C2 | clp-infra-dns-slave-prod-01 | 10.0.2.11 | ns2.infra.chezlepro.ca | DNS Slave local |
| 03010 | C3 | clp-infra-keycloak-prod-01 | 10.0.3.20 | sso.infra.chezlepro.ca | IdP (Keycloak) |
| 04021 | C4 | clp-infra-forgejo-prod-01 | 10.0.1.20 | git.infra.chezlepro.ca | Forge (Forgejo) |
| 05011 | C5 | clp-infra-fastapi-pivot-prod-01 | 10.0.4.10 | pivot.infra.chezlepro.ca | Portail Admin (FastAPI) |
| 10101 | C6 | clp-tenant-backend-prod-01 | 10.0.10.10 | www.alliance-boreale.tenants.chezlepro.ca | Backend tenant 001 |
| 10102 | C6 | clp-tenant-db-postgres-prod-01 | 10.0.10.11 | db.alliance-boreale.tenants.chezlepro.ca | DB tenant 001 |
### Exemple : Nuage Libre (nul, nuagelibre.ca)
| VMID | Couche | Nom VM | IP Interne | DNS | Fonction |
| ----- | :----: | ------------------------------- | ---------- | --------------------------------- | -------------------------- |
| 02001 | C2 | nul-infra-dns-master-prod-01 | 10.0.2.10 | ns1.infra.nuagelibre.ca | DNS Master |
| 02002 | C2 | nul-infra-dns-slave-prod-01 | 10.0.2.11 | ns2.infra.nuagelibre.ca | DNS Slave local |
| 03010 | C3 | nul-infra-keycloak-prod-01 | 10.0.3.20 | sso.infra.nuagelibre.ca | IdP |
| 04021 | C4 | nul-infra-forgejo-prod-01 | 10.0.1.20 | git.infra.nuagelibre.ca | Forge |
**Note** : Chaque membre utilise le même plan d'adressage interne (`10.0.0.0/8`) indépendamment. Pas de conflit car réseaux isolés.
---
## 📜 8. ΔLog — Itération CRB-2 (31-10-2025)
### Changements v3.0 → v4.0
#### 🔥 **Corrections architecturales majeures**
1. **Section 4.2 (Plan d'Adressage)** :
- ✅ Clarifié : `10.0.0.0/8` = infrastructure interne d'UN membre (pas partagé)
- ✅ Clarifié : `172.16.0.0/12` = optionnel VPN mesh inter-membres (futur)
- ✅ Ajouté : Section "Internet Public" (IPs gérées par membre)
2. **Section 5 (Noms DNS)** :
- ❌ **SUPPRIMÉ** : `<service>.<contexte>.<membre>.alliance-boreale.ca`
- ✅ **NOUVEAU** : `<service>.<contexte>.<domaine-membre>`
- ✅ Exemples concrets : `ns1.infra.chezlepro.ca` au lieu de `dns-master.infra.czp.alliance-boreale.ca`
- ✅ Convention VM : `<membre>-<layer>-<service>-<env>-<instance>`
3. **Section 5 bis (NOUVELLE)** :
- ✅ Principe de Non-Hiérarchie DNS
- ✅ Découverte services (Registraire YAML, SRV records, well-known)
- ✅ Triangle de solidarité (AXFR croisés)
4. **Section 7 (Tables)** :
- ✅ Exemples mis à jour avec noms DNS corrigés
- ✅ Ajout colonne "Membre" pour clarté multi-membres
#### 📝 **Changements mineurs**
- Section 3.1 : Ajout exemple DNS Master (02001)
- Section 6.1/6.2 : Exemples complets avec nouveau format DNS
- Préambule CRB-2 : Explication détaillée du réalignement
#### 🎯 **Impact sur autres documents**
Documents à mettre à jour suite à CRB-2 :
- ✅ Document 05 (Opération DNS Fédérée) : Déjà aligné (suppose souveraineté)
- ⚠️ Document 14 (Registraire YAML) : Ajouter section `domains.primary` et `domains.services`
- ⚠️ Document 08 (Onboarding) : Mettre à jour processus DNS (pas de délégation parent)
- ⚠️ Tous playbooks Ansible : Variables DNS à corriger
#### 🧬 **Préservé de v3**
- Structure VMID (Section 3.1) : Inchangée
- Principe adjacent-only (Section 4.3) : Inchangé
- Procédures ensemencement (Section 6) : Structure préservée, exemples mis à jour
- Métaphores organiques : Préservées
---
## 🌌 9. Signature Boréale
> *Sous la voûte numérique, chaque bit est une graine.*
> *Chaque domaine est une forêt, chaque membre un écosystème.*
> *La fédération ne commande pas : elle relie par la confiance.*
> *Les racines DNS s'entrelacent, la canopée respire en autonomie.*
> *Ainsi pousse l'Alliance Boréale, souveraine et solidaire.*
---
**Fin du document — Référence vivante v4 (2025-10-31, CRB-2)**
📁 Ce fichier sert de base à la Nomenclature, aux pipelines, au Label de Prestige, et au Registraire.
**Prochaine révision prévue** : CRB-3 (quand nécessaire, pas de calendrier fixe)
---
## 📎 Annexe A : Migration v3 → v4 (Checklist)
### Pour les équipes techniques
- [ ] Mettre à jour inventaires Ansible avec nouveaux noms DNS
- [ ] Corriger playbooks utilisant ancien format `*.alliance-boreale.ca`
- [ ] Vérifier variables `dns_zone` dans group_vars
- [ ] Mettre à jour documentation interne (wikis, runbooks)
- [ ] Tester résolution DNS avec nouveaux FQDNs
### Pour le Registraire (Document 14)
- [ ] Ajouter champs `domains.primary` dans schéma membre
- [ ] Ajouter section `domains.services` (DNS, SSO, Forge, etc.)
- [ ] Migrer fiches membres existantes (m001, m002, etc.)
- [ ] Valider avec JSON Schema mis à jour
### Pour la gouvernance
- [ ] Notifier tous cercles du réalignement CRB-2
- [ ] Archiver v3 (avec étiquette Git `v3.0-deprecated`)
- [ ] Publier v4 comme référence active
- [ ] Mettre à jour Charte si nécessaire (références DNS)
---
## 📎 Annexe B : FAQ CRB-2
### Q1 : Pourquoi ce changement maintenant ?
**R** : Discussion avec Daniel (fondateur Chezlepro) a révélé incohérence architecturale. Correction nécessaire avant déploiement infrastructure (Phase 1 Ansible).
### Q2 : Impact sur travail déjà fait ?
**R** : Minimal. Documents 05 (DNS), 14 (Registraire), 08 (Onboarding) déjà alignés avec principe de souveraineté. Seuls inventaires Ansible à corriger (pas encore écrits).
### Q3 : Et si je veux garder `*.alliance-boreale.ca` ?
**R** : Tu peux acheter `alliance-boreale.ca` et le gérer comme **ton** domaine personnel si tu veux. Mais ce ne sera jamais une "zone parent officielle" de l'Alliance. L'Alliance = concept, pas infrastructure DNS.
### Q4 : Comment un nouveau membre découvre les services des autres ?
**R** : Via Registraire YAML (Document 14). Chaque membre documente ses services. Optionnellement : DNS SRV records ou API well-known (futur).
### Q5 : Triangle de solidarité = obligatoire ?
**R** : Non. Un membre peut démarrer avec ns1+ns2 locaux. Triangle = optionnel mais recommandé pour résilience maximale.
### Q6 : Peut-on avoir un domaine commercial + un domaine technique ?
**R** : Oui ! Exemple :
- `chezlepro.ca` = domaine commercial (site web, email)
- `chezlepro.net` = domaine technique (infrastructure interne)
Documenter les deux dans Registraire, spécifier lequel est `primary`.
---
**FIN NOMENCLATURE V4 (CRB-2)**