Set-OPS-Public/docs/dependances-groupes.yml
Daniel Allaire 665b07ba82
Some checks are pending
verifier / verifier (push) Waiting to run
serveur_ops : la difference entre une archive et une matrice
Un ecosysteme pouvait DETENIR son genome sans savoir l'executer. Le poste
d'exploitation porte Ansible epingle, le genome clone depuis SA PROPRE forge, et
une cle SSH qui n'appartient qu'a lui. Il n'emporte ni la voute ni son mot de
passe : la structure se reconstruit depuis la forge, les secrets depuis la
sauvegarde. Deux sources qu'un meme incident n'atteint pas ensemble.

Une machine neuve traverse tout le moteur sans rien heriter, et revele ce qu'un
etat anterieur masquait. Deux defauts silencieux en sont sortis.

setops_plan_dir pointait le lien `instance` en dur : neuf roles lisaient donc le
plan d'une AUTRE instance. Le plancher de patient 0 portait les FQDN de
Chezlepro, et son edge publiait server_name forge.chezlepro.internal. La
variable suit desormais l'inventaire reellement charge.

Trois instances sur quatre declaraient les SAN d'exposition de leur edge ; la
quatrieme et le modele public ne les avaient pas. La forge de patient 0 etait
donc publiee derriere le certificat auto-signe de Debian, sans que rien ne le
signale -- `git clone` fut le premier a refuser, a juste titre. P42 le reclame
maintenant pour tout ecosysteme qui declare un edge.

Le harnais a ecrit la moitie de ce role : 5 echecs sur la piece neuve, aucun
n'empechait le code de tourner, tous la rendaient invisible a la carte, au
graphe et au lecteur. 42 preuves, 0 echec.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 11:58:10 -04:00

110 lines
4.9 KiB
YAML

---
groupes:
client_pki:
requiert_groupes_actifs:
- serveur_step_ca
raison: "La confiance CA et ACME client dependent de l'autorite interne."
surveillance: "Verifier validite CA, emission ACME et expiration des certificats."
client_metrique:
requiert_groupes_actifs:
- serveur_prometheus
raison: "Les exporters clients doivent etre collectes par Prometheus."
surveillance: "Verifier targets Prometheus, scrape duration et erreurs de collecte."
client_journal:
requiert_groupes_actifs:
- serveur_loki
raison: "L'expedition des journaux depend du collecteur central Loki."
surveillance: "Verifier ingestion Loki, retard et volume de journaux."
client_smtp:
requiert_groupes_actifs:
- serveur_postfix
raison: "Les notifications locales doivent relayer vers un MTA actif (Postfix)."
surveillance: "Verifier file d'attente, relais SMTP et echecs de livraison."
serveur_postfix:
requiert_groupes_actifs:
- serveur_dovecot
raison: "Postfix remet le courrier local via LMTP a Dovecot (mailstore) ; la remise exige Dovecot actif."
surveillance: "Verifier file d'attente, remise LMTP (status=sent) et rejets."
serveur_keycloak:
requiert_groupes_actifs:
- serveur_postgresql
- serveur_openldap
raison: "Keycloak persiste dans PostgreSQL et federe l'annuaire OpenLDAP (resoudre_annuaire_uri)."
surveillance: "Verifier connexion base, federation LDAP, etat realm et disponibilite OIDC."
serveur_dovecot:
requiert_groupes_actifs:
- serveur_openldap
raison: "Dovecot resout ses utilisateurs (userdb/passdb) sur l'annuaire OpenLDAP (resoudre_annuaire_*)."
surveillance: "Verifier bind LDAP, authentification IMAP et remise LMTP."
serveur_grafana:
requiert_groupes_actifs:
- serveur_prometheus
- serveur_loki
raison: "Grafana est utile comme interface aux metriques et journaux centraux."
surveillance: "Verifier datasources Prometheus/Loki et authentification."
serveur_icinga:
requiert_groupes_actifs:
- serveur_postgresql
raison: "La plateforme Icinga Web/BPM depend d'une base relationnelle."
surveillance: "Verifier moteur Icinga, base, interface web et notifications."
serveur_icingaweb2:
requiert_groupes_actifs:
- serveur_icinga
- serveur_postgresql
- serveur_openldap
raison: "Frontal web d'Icinga : lit IcingaDB (base), affiche le moteur Icinga et authentifie sur l'annuaire OpenLDAP (resoudre_annuaire)."
surveillance: "Verifier acces IcingaDB, connexion Icinga et authentification LDAP."
serveur_forgejo:
requiert_groupes_actifs:
- serveur_postgresql
- serveur_nginx
# UNE EXIGENCE PEUT ETRE CONDITIONNELLE (2026-08-22). Depuis que le role sait tenir sa
# base dans un fichier, exiger un serveur PostgreSQL est faux pour qui a choisi SQLite
# — et bloquait le deploiement d'un ecosysteme parfaitement coherent.
sauf_si:
serveur_postgresql: { variable: serveur_forgejo_bd, vaut: sqlite }
# UTILISE SI PRESENT : Forgejo envoie des notifications quand un MTA existe, et s'en
# passe sinon. Ce n'etait pas une EXIGENCE — le confondre avec une exigence obligeait
# une forge a deployer une pile courriel pour exister.
utilise_si_present:
- serveur_postfix
raison: "Forgejo depend d'une base (serveur ou fichier) et d'une publication HTTP(S) ; le courriel est un agrement."
surveillance: "Verifier HTTP(S), base, files Git et envoi courriel."
serveur_ops:
requiert_groupes_actifs:
- serveur_forgejo
# LE POSTE LIT LE GENOME SUR LA FORGE DE SON PROPRE ECOSYSTEME — c'est ce qui le rend
# autonome : il ne redemande rien a son parent. Sans forge, il n'a aucune source.
#
# Une forge EXTERNE reste possible (un ecosysteme peut lire le genome ailleurs) : il
# suffit de surcharger `serveur_ops_forge_url`. L'exigence tombe alors, comme pour
# toute exigence conditionnelle du registre.
sauf_si:
serveur_forgejo: { variable: serveur_ops_forge_externe, vaut: true }
# UTILISE SI PRESENT : sans confiance PKI, `git clone` refuse le certificat de la
# forge — et il a raison de refuser. Ce n'est pas une exigence du groupe : une forge
# a certificat public se cloner sans client_pki.
utilise_si_present:
- serveur_step_ca
raison: "Le poste d'exploitation clone le genome depuis la forge de l'ecosysteme ; sans elle, il n'a pas de source."
surveillance: "Verifier que les depots clones suivent leur amont et qu'ansible repond dans le venv."
serveur_nextcloud:
requiert_groupes_actifs:
- serveur_postgresql
- serveur_keycloak
- serveur_collabora
raison: "Nextcloud persiste dans PostgreSQL (verify-full), federe l'identite par OIDC (Keycloak) et valide WOPI contre Collabora (edition en ligne)."
surveillance: "Verifier base, decouverte OIDC, autodetection WOPI et acces web."