# OPS-Patient0 — l'écosystème d'origine > **Pour qui :** l'**exploitant** de la lignée. Ce dépôt est le plan d'un écosystème > Set-OPS comme les autres — mais de celui dont les autres descendent. ## Ce qu'il est Patient 0 est le **plus petit écosystème complet** : PKI, DNS, edge, courriel, PostgreSQL, et une **forge**. Six machines. Sa raison d'être tient en une phrase : > porter les dépôts qui fabriquent les écosystèmes, et les servir à ses enfants. Aujourd'hui, ce rôle est tenu par `eregion.chezlepro.ca` — une machine **hors flotte**, montée à la main, que Set-OPS ne déploie pas, ne sauvegarde pas et ne prouve pas. Tout ce qui fabrique Chezlepro dépend d'elle. Patient 0 la remplace par un écosystème **bâti par le moteur, sauvegardé par le moteur, vérifié par le harnais**. On ne déplace pas le point unique de défaillance : on l'élimine. ## La boucle, et comment elle se casse Pour rebâtir patient 0, il faut le dépôt du moteur — qui vit sur patient 0. On n'échappe pas à ça par la ruse, mais par le **nombre**. Le génome doit exister en au moins trois endroits vivants, sans coordination : ``` patient 0 (la forge mère) · le poste de l'exploitant · restic hors cluster + chaque écosystème enfant, qui en porte un miroir ``` N'importe quel survivant réamorce les autres. Une famille, pas un maître. ## Ce que ce dépôt contient, et ce qu'il ne contiendra jamais | | | |---|---| | `plan/` | les six machines, leurs zones, leurs applications | | `inventories/production/group_vars/` | les intrants, le placement Proxmox, le **gabarit** de voûte | | `inventories/production/hosts.yml` | **généré** depuis le plan — ne jamais l'éditer à la main | | le mot de passe de la voûte | **jamais**. Ni ici, ni dans aucun dépôt : c'est le seul objet que la reproduction exige d'un humain | ## Deux réglages à connaître **`index: 29`** — tout l'adressage en dérive (`10.29.0.0/16`, VLAN 1291-1296). Choisi libre : 13 est le lab, 17 Chezlepro, 23 Technolibre. Les index bas (1, 11) ont déjà forcé deux renumérotages, ils tombaient dans des plages occupées par du matériel. **`federe: false`** — patient 0 est **exclu des devis du site** tant qu'il n'est pas matérialisé : ni la frontière, ni le SDN, ni le pare-feu de l'hyperviseur ne lui réservent quoi que ce soit. C'est délibéré et temporaire. À basculer à `true` le jour où on le déploie, **avant** `make sdn-appliquer` — sinon ses zones n'existeront nulle part. ## Ce qui reste à faire avant de le matérialiser - [ ] **Décider où il vit.** Sur `asgard`, la perte du cluster emporte patient 0 *et* Chezlepro d'un coup. Ailleurs, la famille survit à la perte du cluster. Le déménagement tient en quatre valeurs (`group_vars/proxmox.yml`) et un symlink. - [ ] **Créer la voûte réelle** : `ansible-vault create inventories/production/group_vars/all/vault.yml`, en couvrant les noms du gabarit (`vault.yml.example`). - [ ] **Basculer `federe: true`**, puis `make instancier` → `make instancier-appliquer`. - [ ] `make placement-plan` — confronter les quatre valeurs au cluster **avant** de cloner quoi que ce soit : quarante minutes de déploiement ne se rattrapent pas. - [ ] Déployer, puis y **pousser les quatre dépôts** du génome (moteur, instances, hébergeur, modèles) et inscrire la parenté de chacun.