poste : le second symlink, celui qui separe exploiter d'engendrer
Some checks are pending
verifier / verifier (push) Waiting to run
Some checks are pending
verifier / verifier (push) Waiting to run
Le poste ne clonait que le moteur et son plan : il savait configurer des machines existantes, pas en creer. Placer une VM demande de savoir sur quelle fabric la poser. Patient 0 n'a pas d'underlay a lui -- il est TENANT de SITE-Chezlepro. Son poste porte donc les deux symlinks de D-80, et quatre depots : le moteur, son plan, la fabric qui le porte, les modeles. underlay.vault.yml reste hors du genome : le poste lit la CARTE du monde physique, jamais ses cles. Mesure depuis ops-01 : `make instancier` rend un diff vide sans aucun secret, `make underlay-plan` refuse faute de voute. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
665b07ba82
commit
d94fca490f
3 changed files with 72 additions and 1 deletions
41
CHANGELOG.md
41
CHANGELOG.md
|
|
@ -121,6 +121,47 @@ make aide -> « Set-OPS — moteur d ecosystemes numeriques souverains »
|
|||
|
||||
L'écosystème lit son propre génome, depuis sa propre forge, avec son propre Ansible.
|
||||
|
||||
### Le second symlink : exploiter n'est pas engendrer
|
||||
|
||||
Le poste ne clonait que le moteur et son plan. Il savait donc **configurer** des machines
|
||||
existantes, pas en **créer** : placer une VM demande de savoir sur quel nœud, quel
|
||||
stockage, quel pont — c'est-à-dire l'underlay.
|
||||
|
||||
Patient 0 n'a pas de fabric à lui : il est **tenant de `SITE-Chezlepro`**, au même titre
|
||||
qu'OPS-Chezlepro. Son poste porte donc désormais les deux symlinks de D-80 :
|
||||
|
||||
```
|
||||
Set-OPS-public/instance -> /opt/setops/OPS-Patient0
|
||||
Set-OPS-public/underlay.yml -> /opt/setops/SITE-Chezlepro/underlay.yml
|
||||
```
|
||||
|
||||
et quatre dépôts au lieu de deux — le moteur, son plan, la fabric qui le porte, et les
|
||||
modèles (un descendant ne se crée pas à partir de rien).
|
||||
|
||||
`ops-chezlepro` reste volontairement **non cloné** : c'est le plan d'un tenant voisin,
|
||||
que patient 0 n'a aucune raison de détenir. Il est présent sur sa forge par le poussage
|
||||
initial du génome — à revoir.
|
||||
|
||||
### Où passe exactement la ligne
|
||||
|
||||
Mesuré depuis `ops-01`, sous son propre compte :
|
||||
|
||||
```
|
||||
make instancier DIFF VIDE : le plan reproduit exactement l'inventaire actuel
|
||||
make underlay-plan Aucune voute sous /opt/setops/SITE-Chezlepro
|
||||
```
|
||||
|
||||
Patient 0 régénère sa propre structure, sur sa propre machine, **sans aucun secret**. Et
|
||||
dès qu'il s'agit de toucher la fabric, il est arrêté faute de voûte — `underlay.vault.yml`
|
||||
est hors dépôt, donc absent du génome. Le poste lit la **carte** du monde physique, jamais
|
||||
ses **clés**.
|
||||
|
||||
Ce que cette carte expose, en revanche, mérite d'être dit : `underlay.yml` décrit les
|
||||
quinze équipements du site, le VLAN de gestion `10.17.0.0/24` — celui-là même où la
|
||||
frontière interdit à patient 0 d'entrer — et les accès OOB/IPMI. Aucun justificatif, mais
|
||||
toute la topologie. C'est le prix de l'autonomie d'un tenant sur la fabric d'autrui, et il
|
||||
se paie en connaissance.
|
||||
|
||||
### Patient 0
|
||||
|
||||
Fonction `ops` (zone Services-infra), machine `ops-01` — adressage dérivé `10.29.19.41`,
|
||||
|
|
|
|||
|
|
@ -55,8 +55,22 @@ serveur_ops_depots:
|
|||
- { depot: "set-ops-public", dest: "Set-OPS-public", role: "moteur" }
|
||||
- { depot: "ops-patient0", dest: "OPS-Patient0", role: "instance" }
|
||||
|
||||
# L'instance que le poste pilote par défaut (symlink `instance` du moteur).
|
||||
# --- LES DEUX SYMLINKS (D-80) ------------------------------------------------
|
||||
#
|
||||
# `instance` dit QUEL tenant on pilote.
|
||||
# `underlay.yml` dit SUR QUELLE FABRIC il repose.
|
||||
#
|
||||
# Les deux sont independants, et le second manquait. Un poste qui ne connaît que son
|
||||
# plan sait CONFIGURER des machines existantes ; il ne sait pas en CREER. Placer une VM
|
||||
# demande de savoir sur quel nœud, quel stockage, quel pont — c'est-à-dire l'underlay.
|
||||
# Sans lui, le poste est un exploitant, pas un géniteur.
|
||||
#
|
||||
# CE QUE LE POSTE N'AURA PAS POUR AUTANT : `underlay.vault.yml`, qui porte les secrets du
|
||||
# monde physique. Il est hors dépôt (gitignore), donc absent du génome. Le poste lit la
|
||||
# CARTE de la fabric, pas ses clés.
|
||||
serveur_ops_instance: "OPS-Patient0"
|
||||
# Vide = le poste ne pose pas de lien `underlay.yml` (il configure, il n'engendre pas).
|
||||
serveur_ops_underlay: ""
|
||||
|
||||
# --- CLÉ SSH DU POSTE --------------------------------------------------------
|
||||
#
|
||||
|
|
|
|||
|
|
@ -166,6 +166,22 @@
|
|||
force: true
|
||||
when: not ansible_check_mode
|
||||
|
||||
# LE SECOND SYMLINK. Sans lui, le poste sait configurer des machines qui existent ; il ne
|
||||
# sait pas en creer, faute de savoir sur quelle fabric les poser. C'est la difference
|
||||
# entre exploiter et engendrer.
|
||||
- name: Désigner la fabric sur laquelle l'écosystème repose
|
||||
ansible.builtin.file:
|
||||
src: "{{ serveur_ops_racine }}/{{ serveur_ops_underlay }}/underlay.yml"
|
||||
dest: >-
|
||||
{{ serveur_ops_racine }}/{{ (serveur_ops_depots | selectattr('role', 'eq', 'moteur') | first).dest }}/underlay.yml
|
||||
state: link
|
||||
owner: "{{ serveur_ops_utilisateur }}"
|
||||
group: "{{ serveur_ops_utilisateur }}"
|
||||
force: true
|
||||
when:
|
||||
- serveur_ops_underlay | length > 0
|
||||
- not ansible_check_mode
|
||||
|
||||
# --- LA CLÉ DU POSTE ---------------------------------------------------------
|
||||
#
|
||||
# Le poste se fabrique sa propre paire, distincte de celle du mainteneur. Deux
|
||||
|
|
|
|||
Loading…
Reference in a new issue