Un seul noeud Proxmox en version 9, une frontiere OPNsense. Trois consequences ecrites dans le README : le SPOF est total, les clones sont complets (un clone lie n achete rien sans second noeud), et rien n a jamais tourne contre un PVE 9. Le chiffre a verifier avant de cabler : 57 Go de RAM pour le site et son locataire sur la meme machine. La RAM est la contrainte dure. Adressage au statu quo : gestion en 10.23.0.0/24, zones du site en 10.0.31-36 comme chez Chezlepro. Consequence connue et ecrite : les deux sites ne pourront pas etre relies tant qu aucun n est renumerote. COLLECTE.md liste dans l ordre ce qui doit etre releve sur place, dont la question de forme : ce qu il y a entre le noeud et l OPNsense decide du mode de routage. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
173 lines
8.1 KiB
YAML
173 lines
8.1 KiB
YAML
---
|
|
# Les services du SITE et leur placement — même forme que chez un tenant.
|
|
#
|
|
# `groupe` est le rôle Ansible, `hote` la machine de `plan/serveurs.yml` qui le porte.
|
|
# C'est de ce registre que l'inventaire tire ses groupes : une application déclarée ici
|
|
# range son hôte dans le groupe correspondant, et `playbooks/groupes/<rôle>.yml` le
|
|
# trouve sans qu'on câble quoi que ce soit.
|
|
#
|
|
# `expose:` NOMME LE SERVICE, indépendamment de la machine qui le rend.
|
|
#
|
|
# C'est la pièce qui manquait, et son absence s'est vue au pire endroit : le certificat
|
|
# de la forge portait `forge.<<DOMAINE_SITE>>` dans ses SAN, mais **aucune zone ne
|
|
# résolvait ce nom**. On avait donc du TLS correct sur un nom que personne ne pouvait
|
|
# appeler — et l'usage retombait sur `site-forge-01`, c'est-à-dire sur la machine.
|
|
#
|
|
# Un nom de service survit au déménagement du service ; un nom de machine, non.
|
|
|
|
applications:
|
|
# LE RUNNER DU SITE — DEUX RÔLES, ET DANS CET ORDRE.
|
|
#
|
|
# `serveur_ops` INSTALLE : ansible, le cache de collections, les dépôts du génome clonés
|
|
# depuis la forge du site, les symlinks du moteur. `serveur_ops_site` n'installe rien —
|
|
# il dépose la voûte de l'underlay (chiffrée) et ajoute le pouvoir de MATÉRIALISER.
|
|
#
|
|
# C'est le même patron que `serveur_artefacts` + `serveur_cache_site` : un installateur
|
|
# et un marqueur. J'avais déclaré le marqueur seul, et son assertion l'a dit sans
|
|
# détour : « exige `serveur_ops_site_depot`, cloné par `serveur_ops` ».
|
|
ops:
|
|
groupe: serveur_ops
|
|
hote: site-ops-01
|
|
ops_site:
|
|
groupe: serveur_ops_site
|
|
hote: site-ops-01
|
|
|
|
# LA SOURCE D'ARTEFACTS, et son marquage comme racine de chaîne. Les deux vont
|
|
# ensemble : `serveur_artefacts` INSTALLE apt-cacher-ng, `serveur_cache_site` MARQUE ce
|
|
# cache comme racine et vérifie qu'il n'a pas d'amont — il n'installe rien.
|
|
artefacts:
|
|
groupe: serveur_artefacts
|
|
hote: site-cache-01
|
|
cache_site:
|
|
groupe: serveur_cache_site
|
|
hote: site-cache-01
|
|
|
|
# LA FORGE DU GÉNOME. `expose` porte son nom de service : c'est lui que le certificat
|
|
# doit couvrir, et lui que la zone souveraine doit résoudre.
|
|
forgejo:
|
|
groupe: serveur_forgejo
|
|
hote: site-forge-01
|
|
# 443, ET NON 3000. Le `3000` est le port que Forgejo ecoute DERRIERE un edge, en
|
|
# clair. Ici il sert lui-meme son TLS : garder 3000 aurait grave `:3000` dans
|
|
# `ROOT_URL`, donc dans l'`origin` de chaque ecosysteme descendant, pour toujours.
|
|
port: 443
|
|
expose:
|
|
- forge.<<DOMAINE_SITE>>
|
|
# LE MARQUEUR DE LA FORGE DU GÉNOME — même patron que `artefacts` + `cache_site`.
|
|
#
|
|
# Le site rend deux services à ses locataires pendant leur jeunesse : les PAQUETS et le
|
|
# GÉNOME. Le premier était déclaré, le second ne l'était pas — alors que D-81 fait de
|
|
# cette forge l'autorité dont tout écosystème se reproduit.
|
|
#
|
|
# Mesuré le 2026-08-28 sur `ops-01`, première machine de la reconstruction de
|
|
# Chezlepro : le cache du site répondait, la forge non, et le clonage du génome
|
|
# attendait sans fin. Le tenant déclarait pourtant lire son génome à cette adresse.
|
|
forge_site:
|
|
groupe: serveur_forge_site
|
|
hote: site-forge-01
|
|
|
|
# L'AUTORITÉ. Elle sert le 443 à ses voisins du même segment, en L2 — rien ne traverse
|
|
# la frontière, donc aucune règle ne l'accompagne au devis. `expose` lui donne quand
|
|
# même son nom de service : les clients s'y enrôlent par un nom, jamais par une adresse.
|
|
step_ca:
|
|
groupe: serveur_step_ca
|
|
hote: site-pki-01
|
|
expose:
|
|
- pki.<<DOMAINE_SITE>>
|
|
|
|
# LE DNS — autoritatif et résolveur sur la même machine, à dessein.
|
|
powerdns:
|
|
groupe: serveur_powerdns
|
|
hote: site-dns-01
|
|
resolveur:
|
|
groupe: serveur_resolveur
|
|
hote: site-dns-01
|
|
expose:
|
|
- dns.<<DOMAINE_SITE>>
|
|
# LE MARQUEUR DU RÉSOLVEUR DU SITE — troisième service prêté aux locataires, après les
|
|
# paquets (`cache_site`) et le génome (`forge_site`). Même patron : un installateur, un
|
|
# marqueur.
|
|
#
|
|
# Un écosystème neuf n'a ni cache, ni forge, ni résolveur — et c'est lui qui doit les
|
|
# construire. Sans celui-ci, ses machines sortent en 443 par adresse et restent
|
|
# AVEUGLES AUX NOMS : `apt` s'en sort par le mandataire du cache, qui résout à sa place,
|
|
# mais un `get_url` ou un dépôt tiers en HTTPS échoue. Mesuré le 2026-08-30 sur
|
|
# `infra-pki-01`, première machine à porter l'autorité de Chezlepro.
|
|
#
|
|
# `client_resolveur` bascule chaque tenant chez lui dès que son propre résolveur existe.
|
|
# Retirer cet emprunt ce jour-là est une émancipation — un geste, pas un effet.
|
|
resolveur_site:
|
|
groupe: serveur_resolveur_site
|
|
hote: site-dns-01
|
|
# LE SERVEUR DE SAUVEGARDE, ET SON MARQUEUR — meme patron que les trois autres
|
|
# services pretes : `serveur_backup` INSTALLE le depot, `serveur_backup_site` dit qu'il
|
|
# sert les locataires et declare le flux qui le permet.
|
|
backup:
|
|
groupe: serveur_backup
|
|
hote: site-backup-01
|
|
backup_site:
|
|
groupe: serveur_backup_site
|
|
hote: site-backup-01
|
|
# LE NOM QUE LES LOCATAIRES ÉCRIVENT DANS LEUR CONFIGURATION.
|
|
#
|
|
# Un locataire grave l'adresse de son dépôt dans `client_backup_repo`, donc dans le
|
|
# chemin de CHACUN de ses instantanés. Y graver `10.0.35.11` rendrait le dépôt
|
|
# indéplaçable : le jour où il change de machine, tous les locataires cessent de
|
|
# déposer, et chacun doit être modifié un par un — pendant que plus rien n'est
|
|
# sauvegardé.
|
|
#
|
|
# `sauvegarde`, pas `site-backup-01` : c'est le SERVICE qu'on nomme. La machine qui
|
|
# le rend a le droit de changer sans que personne ne réécrive quoi que ce soit.
|
|
expose:
|
|
- sauvegarde.<<DOMAINE_SITE>>
|
|
|
|
# LA SUPERVISION DU SITE. `serveur_backup` rapporte PASSIVEMENT ici, avec un `ttl` :
|
|
# c'est l'expiration de ce `ttl` qui fait qu'un SILENCE alerte. Une sauvegarde qui
|
|
# cesse ne produit aucune erreur, seulement une absence — sans destinataire pour ce
|
|
# rapport, il n'y a pas de supervision, il y a un script qui tourne.
|
|
postgresql:
|
|
groupe: serveur_postgresql
|
|
hote: site-mon-01
|
|
icinga:
|
|
groupe: serveur_icinga
|
|
hote: site-mon-01
|
|
# L'OBSERVABILITE DU SITE — LA SIENNE, ET RIEN QUE LA SIENNE (D-87, 2026-09-10).
|
|
#
|
|
# Elle manquait, et son absence etait le REVERS de la frontiere : en refusant de voir
|
|
# les journaux de ses locataires — parce qu'ils contiennent du CONTENU, et qu'un
|
|
# hebergeur qui les lit en sait plus que s'il detenait leur annuaire — le site s'etait
|
|
# prive des siens. Ses sept machines n'expediaient rien nulle part.
|
|
#
|
|
# Le remede n'est pas d'assouplir la regle : c'est de lui donner SA pile. Aucun lien
|
|
# avec celle d'un tenant, dans aucun sens. Un locataire n'y envoie rien, et le site n'y
|
|
# lit que ses propres machines.
|
|
#
|
|
# POSEE SUR `site-mon-01`, la zone de supervision : c'est deja la qu'Icinga juge l'etat
|
|
# du site, et le zonage veut qu'une preoccupation vive dans une seule zone. La machine a
|
|
# la place (3,3 Go disponibles, charge 0,10 au moment du choix).
|
|
prometheus:
|
|
groupe: serveur_prometheus
|
|
hote: site-mon-01
|
|
loki:
|
|
groupe: serveur_loki
|
|
hote: site-mon-01
|
|
# GRAFANA SANS SSO, ET C'EST VOULU. Chez un tenant il vit derriere `oauth2_proxy`, donc
|
|
# derriere Keycloak. Le site n'a pas d'annuaire — et ne doit pas en avoir un pour ca.
|
|
# Faire monter l'identite pour offrir un tableau de bord serait payer tres cher une
|
|
# commodite : l'acces se fait depuis le plan d'administration, qui est deja la barriere.
|
|
#
|
|
# LE NOM DIT LA FONCTION, PAS LE PRODUIT (2026-09-10). C'etait `tableaux.<<DOMAINE_SITE>>`,
|
|
# un mot que rien d'autre n'employait. `observatoire` est le meme nom que chez le locataire
|
|
# (`observatoire.chezlepro.internal`) : un seul vocabulaire des deux cotes, et un nom qui
|
|
# ne ment pas le jour ou Grafana est remplace.
|
|
grafana:
|
|
groupe: serveur_grafana
|
|
hote: site-mon-01
|
|
expose:
|
|
- observatoire.<<DOMAINE_SITE>>
|
|
|
|
# LE RELAIS DE COURRIEL DU SITE — souverain, et c'est tout l'interet : emprunter le MTA
|
|
# d'un locataire ferait dependre le site d'un ecosysteme qu'il peut outvivre.
|
|
postfix:
|
|
groupe: serveur_postfix
|
|
hote: site-mon-01
|