La vigie (8080) et la console (8090) n'ecoutent sur le reseau qu'en mode
locale ; en SSO, nginx est lie a 127.0.0.1 et la regle ne menait a rien.
Evaluee par ecosysteme dans les trois generateurs (nftables, Proxmox,
frontiere). Locataires : 8 regles Proxmox et 4 nftables en moins. Site :
inchange.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
make flux ecrit, a cote de chaque .nft et depuis les memes regles, la
liste de ce que chaque VM doit joindre. La sonde (nftables_baseline) la
teste chaque minute avec la cause (rejete, delai, personne n'ecoute) ;
client_sante la porte en mode minute ; Icinga a une fraicheur par sonde.
eprouver_parefeu --sondes : tout activer d'un coup, juger par Icinga.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Treize modules Python en parallele sur l'AC (765 Mo, 1 vCPU) : le noyau
a tue celui de collab-01 (rc=137) a la reconstruction de Technolibre.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
lock_timeout ne protege que la verification du module ; apt-get n'attend
pas (APT 3.0 ne l'accorde qu'a la commande apt). Verrou repris par
unattended-upgrades sur mon-01 de Technolibre, ne une minute plus tot.
DPkg::Lock::Timeout pour tout appel d'APT, en premiere tache.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La copie de l'AC d'Icinga est deposee aussi par client_sante, plus tot :
sur une flotte neuve elle ne changeait jamais ici, et rien ne partait
(reconstruction de Chezlepro). client_backup retient desormais l'empreinte
de l'Icinga qui l'a entendu, apres le rapport. eprouver_parefeu ne s'arrete
plus sur les critiques presents avant l'activation.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Il relaie et ne sert rien lui-meme. Un noeud qui n'a plus rien a
sauvegarder perd aussi ses verifications de depot et de restauration,
qui rapportaient sinon a des services qu'Icinga ne declare plus.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La copie de l'AC d'Icinga change quand Icinga ou le noeud est neuf : elle
declenche deposer, verifier le depot, verifier la restauration. Eprouve
sur web-frontal-01 de Technolibre ; second passage sans effet.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sur un annuaire vraiment vierge, grep -v ne gardait aucune ligne et
sortait en 1 : pipefail faisait echouer la mesure dans le seul cas
qu'elle doit reconnaitre. Comptage par awk. Trouve par la
reconstruction de Chezlepro.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
postgres ne lit pas le repertoire jetable de root ; trouve en repetition
sur data-sql-01 de Technolibre. Le test l'exige desormais.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Chaque role proprietaire (AC, bases, annuaire, Nextcloud, rspamd/DKIM,
courriel, forge, web) remet son etat au moment ou il le creerait neuf,
depuis le dernier instantane anterieur a la naissance de la machine.
La sauvegarde refuse de deposer tant qu'un etat d'avant attend.
Outil de noeud setops-restaurer ; cibles sauvegarder-maintenant,
restauration-etat, restauration-renoncer ; test_restauration.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sous set -euo pipefail, grep sans correspondance sortait AVANT la branche client absent.
Trouve par la reconstruction de Technolibre (plus de client forgejo).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le runner fabriquait sa paire a sa naissance : reconstruit, il avait une identite que la
flotte ne connaissait pas (refuse sur les 13 machines de Technolibre). La cle privee vit
dans la voute du locataire ; serveur_ops_tenant la remet et exige que sa cle publique soit
declaree au plan (garde eprouvee en defaut).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Zone publique : les expositions pointent vers ip_publique (les NS restent au site).
client_pki : l AC interne ne signe que le domaine interne. Dorsal : serveur par defaut 444.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le frontal derive ses vhosts des expositions publiques (meme derivation que l edge),
filtre par ModSecurity v3 + OWASP CRS (DetectionOnly d abord, eprouve), refuse les noms
inconnus, et ne sert plus rien lui-meme. Les sites statiques passent au dorsal, relaye
par l edge et par le frontal. Sondes : frontal (nouvelle), sites-servis suit le dorsal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le web frontal devient la porte publique (80/443 externe) ; Postfix publie la soumission
587 et ajoute le 465 (TLS direct). Le generateur nftables ouvrait un flux externe combine
a une source nommee a cette seule source : l Internet etait refuse par l hote. Corrige chez
les locataires ; au site, rien ne s elargit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L edge n expose qu a sa zone d administration (plus de pair externe) ; le public passera
par le web frontal. Le devis Proxmox recoit les flux externe depuis +t<i>-internet (RFC 1918
exclus en nomatch) et depuis l admin quand le poste en est client.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
L edge expose les interfaces web aux personnes ; les VM du site vont directement au
service. Declare par domaine (service | edge, defaut edge) ; plancher, zone et certificat
du service suivent. Pose au site : 35 planchers sur 35 conformes ; locataires inchanges.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La zone publie l empreinte de ce que le plancher doit porter ; chaque machine la compare
a son /etc/hosts. Au site, elle a revele que sauvegarde, pki et dns.genese.internal
pointaient vers l edge (regression de mon deploiement du matin) : la derivation ne donne
plus a l edge ce qui n a pas de port. Zone du site corrigee, SFTP des locataires verifie.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PowerDNS servait chez les deux locataires une zone anterieure a son fichier (console
absente) : le handler de rechargement avait ete abandonne. Reconciliation a chaque
passage (bind-reload-now) et controle dans la sonde zones. Plancher /etc/hosts rejoue
sur les deux locataires ; console se resout depuis les edges.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Apres /ping, /oauth2/start doit renvoyer vers l emetteur configure pour ce client, et
l IdP, joint depuis la passerelle, doit servir sa page de connexion. Le secret du client
n est pas teste (journal du realm). Port derive de l ecoute ; archive oauth2-proxy
plus retransferee a chaque deploiement. Fin de la revue des sondes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Apres check_http, la sonde lit la configuration deployee d Icinga Web 2 et eprouve
chaque ressource utilisee avec ses identifiants : base du moteur (hotes), annuaire ou
base des comptes, Redis. Au vert sur les trois ; quatre mises en defaut critiques.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le vocabulaire des plans dit vigie pour Icinga Web 2 et console pour la console
d exploitation Set-OPS (sonde console-ops). Renommee et posee sur les trois
supervisions ; client_sante a retire l orphelin console.sh ; vigie au vert partout.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
La sonde demande a Keycloak de s authentifier aupres de LDAP avec la federation
enregistree (testLDAPConnection, secret masque). Eprouvee sur les deux locataires ;
mise en defaut par parametre. Le repere d archive deja posee est le marqueur de
construction de la version, pas /tmp : changed=0 au redeploiement.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
filtrage soumet GTUBE ; edge interroge chaque exposition en local. Sans serveur
par defaut, un nom inconnu recevait Keycloak : 000-defaut.conf (444, rejet TLS).
Garde test_sondes_syntaxe : chaque gabarit de sonde se rend en bash valide.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Elle etait verte pendant que les tableaux etaient vides. Eprouvee avec une
source recreant le defaut du jour, puis retiree.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Loki servait en HTTPS, Grafana lui parlait en clair : la variable host restait
vide et aucun panneau ne s affichait. URL derivee de serveur_loki_tls_actif.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Filet sous make publier : compare la forge du site a eregion (repere seulement,
depots lisibles sans identifiant), tolere l ecart d une publication en cours.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
restic check en relisant 10 pourcent des donnees, puis restauration reelle du
dernier instantane avec --verify et comptage des fichiers. Service restauration,
fraicheur de 8 jours, filtre du compte d API complete.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Un minuteur horaire sur le runner du site joue les plans de lecture et
consigne l ecart ; la sonde lit le constat, et signale un constat perime.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Seuls le cache apt et les depots de sauvegarde etaient surveilles. Declaree par
serveur_debian, posee par client_sante (pas par common_packages, qui ferait un
upgrade full de la flotte pour deposer un script). Seuils 80/90 pourcent.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
seulement_si dans meta/supervision.yml, lu par le gabarit Icinga des sondes ;
garde test_sondes_conditionnelles. journaux-frontiere ne rougit plus a vie chez
les locataires ; Technolibre sans critique.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Gabarit setops-rapport-attendu : actif, dummy critique, check_interval = le
ttl que le noeud envoie. Prouve a t+60 s sur site-mon-01, deploye sur les trois
Icinga ; la garde test_fraicheur_icinga lie seuils et ttl.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Au site, la verification que chaque noeud fait de son depot visait un service
que le gabarit ne creait que sans depot dans l ecosysteme : 404 toutes les 4 h
depuis le 20 septembre sur site-forge-01, site-mon-01 et site-pki-01. Les
deux temoins existent maintenant ; six services au vert, relus dans Icinga.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ses machines n existaient plus depuis le 2026-09-06 (D-83), mais son plan
restait sur disque : la federation lui reservait l index 29 et quatre machines
du site lui ouvraient SSH, apt, DNS et HTTPS. Les commentaires et documents
vivants gardent leur lecon sans le nommer ; les archives restent telles quelles.
Pas encore sur le reseau : les regles regenerees attendent le runner du site.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Le document des responsabilites attache chaque pouvoir a une voute : calculer n'en demande
aucune, configurer demande celle du tenant, materialiser celle du site. Le code lisait les
symlinks, c'est-a-dire les cartes. Le runner de Chezlepro-locataire montait la carte du
site sans en avoir jamais eu la voute : sa console se declarait poste et offrait 126 etapes
sur 126. Ces gestes seraient partis puis tombes sur un secret vide — un echec au milieu du
chemin, la ou un refus net aurait dit la verite avant de commencer.
contexte() derive desormais les pouvoirs des voutes presentes, et la portee decoule des
pouvoirs au lieu de les preceder. On ne prouve pas qu'une voute s'ouvre, le mot de passe se
tape a l'execution ; mais son absence est decisive et se mesure sans rien ouvrir. Lire une
carte reste permis : le pouvoir fabric suit toujours le symlink, consulter un miroir n'est
pas engendrer.
serveur_ops retire aussi le lien quand la fabric n'est plus declaree — il ne retirait rien,
et un runner gardait le pouvoir que son plan ne lui donnait plus. Il ne retire qu'un lien,
jamais un fichier : une vraie carte a cette place n'a pas ete ecrite par ce role, et il le
dit plutot que de detruire ce qui n'est pas le sien.
Valide : syntax-check et ansible-lint sur le role (profil production, 0/0), make test a 0
echec, P81 et P83 vertes. Six tests montent quatre faux disques et exigent la portee qui
leur revient, dont le defaut lui-meme : carte presente, voute absente, portee tenant.
Limite : P02 reste en echec pour la raison anterieure deja consignee.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Les trois consoles portaient le moteur du jour et servaient celui du 16 septembre. Le
clone du genome ne notifiait rien et la tache de service demande state: started, qui ne
fait rien quand le service tourne deja ; inventory_gui.py lit son code au demarrage, et
seulement la. Le role retient desormais si le MOTEUR a avance — designe par
serveur_ops_depot_moteur, jamais un chemin recopie — et redemarre la console dans ce seul
cas : un plan qui avance ne coupe pas les pages ouvertes.
La sonde console-ops criait au vestibule ouvert sur les deux runners de locataire, sur
des consoles fermees. Elle frappait la boucle locale, seul endroit d'ou un 200 est le
resultat attendu en mode oidc, ou nginx est reduit a 127.0.0.1 pour qu'on ne contourne
pas la passerelle SSO. Elle connait maintenant son mode : en locale le verdict ne bouge
pas, en oidc la serrure mesuree est l'adresse d'ecoute. Le refus de la passerelle reste
l'affaire de la sonde passerelle de serveur_oauth2_proxy, sur le meme hote.
Valide : --syntax-check sur playbooks/groupes/serveur_ops.yml, ansible-lint sur le role
(profil production, 0 echec, 0 avertissement, 14 fichiers), le gabarit rendu dans ses deux
modes sans reste Jinja et bash -n propre, le filtre d'ecoute eprouve sur cinq formes
d'adresses, l'expression du when sur cinq cas dont le mode check. Le role est applique aux
trois runners, failed=0, et la sonde rejouee sur chacun rend 0.
Limite : le redemarrage automatique ne s'est pas declenche, les clones etant deja au
niveau de la forge — la tache s'est correctement abstenue. La preuve du declenchement
viendra au prochain genome pousse.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
os-node_exporter sur la patte de supervision, declare dans la carte du boitier : cible et
hote Icinga en derivent. Les flux vers la frontiere ne s'ouvrent plus a tous pour un role
qui n'est pas le socle.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Les hyperviseurs exposaient temperatures, ventilateurs, SMART et usure NVMe sans que rien
les regarde. scripts/materiel.py porte capteurs et seuils ; Grafana en tire le tableau
Materiel, Icinga un service materiel par hyperviseur. Premier verdict : le disque sda de
gandalf (OSD Ceph) a 56 secteurs en attente, stables.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Un flux externe porte port (la machine) et port_public (l'Internet). Le devis emet la
redirection et sa regle WAN, garde qu'elles aillent ensemble ; l'applicateur reconcilie
d_nat et encode les champs imbriques. DNS public : WAN:53 -> site-dnspub-01:1053 (dnsdist).
Plan lu : 4 objets a creer, rien d'autre ; pas encore applique.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ANY UDP tronque, AXFR/NOTIFY/UPDATE refuses depuis dehors, debit par /24 (rafale 300 ->
70 reponses, 230 tronquees). PowerDNS garde le 53 pour les primaires ; le frontal ecoute
1053, ou la frontiere redirigera. Sonde par le frontal.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>