README reduit au role du projet et au demarrage rapide. docs/architecture.md (schemas Mermaid), docs/setup.md, docs/usage.md (154 cibles en 13 familles), docs/README.md (index). Documents ranges en conception/, exploitation/, hebergement/, projet/ ; 598 chemins suivis. QUICKSTART.md, SOLUTION.md, architecture-set-ops.md et la carte fondus puis retires. Preuves : P48 lit l'index et conception/mecanismes.md ; les gardes parcourent docs/ sous- dossiers compris (_documents) ; usage.md suit le Makefile dans les deux sens. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
122 lines
6 KiB
YAML
122 lines
6 KiB
YAML
---
|
|
# Flux réseau d'Icinga 2 (moteur de supervision). Voir docs/conception/flux-conception.md.
|
|
# IcingaDB (Redis 6380) est co-localisé : consommé en localhost par le frontal Icinga Web 2.
|
|
flux:
|
|
- sens: ingress
|
|
port: 5665
|
|
protocole: tcp
|
|
pair: localhost
|
|
chiffrement: clair
|
|
raison: "API Icinga 2 consommée en local par Icinga Web 2 co-localisé."
|
|
# LES NOEUDS RAPPORTENT EUX-MEMES DEPUIS LE 2026-09-02.
|
|
#
|
|
# Tant que le depot vivait dans l'ecosysteme, il rapportait pour tout le monde et
|
|
# `serveur_backup` suffisait comme pair. Depuis que les ecosystemes deposent chez leur
|
|
# HEBERGEUR — qui heberge du chiffre et ne peut rien juger — c'est chaque detenteur
|
|
# d'etat qui verifie SON depot et le rapporte. Le pair, c'est donc `client_backup`.
|
|
#
|
|
# Les deux coexistent : un ecosysteme qui garde son propre depot continue de le laisser
|
|
# rapporter. `serveur_backup` reste declare juste en dessous.
|
|
- sens: ingress
|
|
port: 5665
|
|
protocole: tcp
|
|
pair: client_backup
|
|
chiffrement: tls-requis
|
|
raison: "Rapport passif de chaque detenteur d'etat sur SON depot distant : le depot du site heberge du chiffre et ne peut pas le juger."
|
|
- sens: ingress
|
|
port: 5665
|
|
protocole: tcp
|
|
pair: serveur_backup
|
|
chiffrement: tls-requis
|
|
partage: true
|
|
raison: "Le depot de sauvegarde depose ses resultats passifs (portee : process-check-result sur « sauvegarde: * »)."
|
|
# LE RAPPORT DE SANTE : TOUS les noeuds, pas seulement les detenteurs d'etat.
|
|
#
|
|
# Le declarer ici n'est pas une redondance avec `client_sante/meta/flux.yml`. Les deux
|
|
# faces sont necessaires, et l'oubli s'est paye le 2026-09-09 : le role client etait
|
|
# deploye, sa face EGRESS declaree, la politique de sortie etait `accept`, la regle
|
|
# d'entree de l'hote autorisait bien la source — et cinq machines sur sept rendaient
|
|
# `TimeoutError`. Les paquets mouraient ENTRE les deux, a la frontiere, qui filtre le
|
|
# trafic inter-zones et ne connait que ce que le registre lui dit.
|
|
#
|
|
# `make site-appliquer GROUPE=client_sante` avait pourtant rendu 7/7, 0 echec : un
|
|
# deploiement REUSSI sur un flux qui ne passait pas. Seul l'essai de bout en bout l'a
|
|
# dit — un playbook vert ne prouve pas qu'une chose fonctionne.
|
|
#
|
|
# LE PAIR EST `serveur_debian`, PAS `client_sante`, ET C'EST LA LE POINT.
|
|
#
|
|
# La frontiere ne connait que les roles que les machines PORTENT AU PLAN. Une
|
|
# integration universelle n'y figure pas : elle est derivee, pas declaree. Ecrire
|
|
# `pair: client_sante` produisait donc une regle est-ouest correcte et AUCUNE regle a
|
|
# la frontiere — d'ou les cinq `TimeoutError` sur sept. Le meme piege explique pourquoi
|
|
# le flux `client_backup` juste au-dessus ne suffit pas seul : c'est `serveur_backup`,
|
|
# role REEL du site, qui ouvre la porte.
|
|
#
|
|
# `serveur_debian` est le vocabulaire du depot pour « tout noeud » — le socle que
|
|
# chaque machine porte — et le generateur de frontiere le traite deja comme tel. C'est
|
|
# exact au sens strict : tout noeud rapporte sa sante.
|
|
#
|
|
# `partage: true` : plusieurs pairs entrent par le meme port, la regle est mutualisee.
|
|
- sens: ingress
|
|
port: 5665
|
|
protocole: tcp
|
|
pair: serveur_debian
|
|
chiffrement: tls-requis
|
|
partage: true
|
|
raison: "Rapport passif de sante de chaque noeud (unites systemd en echec)."
|
|
# LA SUPERVISION DOIT POUVOIR JOINDRE CE QU'ELLE SUPERVISE (mesure du 2026-09-09).
|
|
#
|
|
# Nos `object Host` sont verifies par `hostalive`, c'est-a-dire un ping. Sans ce flux,
|
|
# l'Icinga du SITE tenait 6 de ses 7 machines pour MORTES — et Icinga SUPPRIME les
|
|
# notifications des services d'un hote DOWN. Une supervision qui croit tout mort
|
|
# n'alerte plus de rien : c'est pire que pas de supervision, parce qu'elle a l'air de
|
|
# fonctionner.
|
|
#
|
|
# Les hotes acceptent deja tout l'ICMP localement (`serveur_debian`) ; c'est la
|
|
# FRONTIERE qui filtre l'inter-zones, et elle ne connait que ce qui est declare. Le
|
|
# tenant ne le voyait pas : ses zones se parlent deja. Le site, decoupe en pattes
|
|
# separees, non.
|
|
#
|
|
# Le pair est `serveur_debian` — tout noeud — pour la meme raison que le rapport de
|
|
# sante : une integration universelle n'est pas un role porte au plan, et la frontiere
|
|
# ne resout que les roles portes.
|
|
#
|
|
# CE QUE CE PING APPORTE, malgre le `ttl` qui fait deja parler le silence : un signal
|
|
# INDEPENDANT du chemin de rapport. Si le rapport passif casse, le ping le distingue
|
|
# d'une machine reellement tombee.
|
|
- sens: egress
|
|
port: echo-request
|
|
protocole: icmp
|
|
pair: serveur_debian
|
|
chiffrement: n-a
|
|
raison: "La supervision verifie que ses hotes repondent (hostalive) : sans ce flux, elle les tient tous pour morts et supprime leurs notifications."
|
|
- sens: egress
|
|
port: 5432
|
|
protocole: tcp
|
|
pair: serveur_postgresql
|
|
chiffrement: tls-requis
|
|
raison: "Base relationnelle du moteur Icinga (verify-full)."
|
|
|
|
# LA PASSERELLE FAIT PARTIE DE CE QUI PEUT TOMBER (2026-09-10).
|
|
#
|
|
# La supervision du site voyait ses sept VM et rien d'autre. Mesure : depuis
|
|
# `site-mon-01`, AUCUNE patte de la frontiere ne repondait — pas meme `10.0.36.1`, sa
|
|
# PROPRE passerelle par defaut. OPNsense ne repond pas a l'ICMP sur ses interfaces
|
|
# internes tant qu'une regle ne l'autorise pas.
|
|
#
|
|
# UNE PATTE PAR ZONE, ET C'EST LE POINT. La frontiere est un seul boitier, mais chaque
|
|
# zone du site depend de SON interface a elle. Une interface eteinte — on en a deja vu,
|
|
# les routes creees `disabled` le 2026-09-02 — coupe une zone pendant que les autres
|
|
# vont bien. Un ping vers une seule patte dirait « la frontiere est debout » et
|
|
# manquerait exactement ce cas-la.
|
|
#
|
|
# `fabric` couvre les hyperviseurs ET la frontiere : c'est le materiel de l'hebergeur,
|
|
# celui qu'aucun agent ne peut habiter.
|
|
- sens: egress
|
|
port: echo-request
|
|
protocole: icmp
|
|
pair: fabric
|
|
chiffrement: n-a
|
|
raison: >-
|
|
La supervision verifie que la frontiere sert encore chaque zone. Aucun agent ne peut
|
|
vivre sur un pare-feu : le controle ACTIF est le seul chemin, et il n'existait pas.
|