Les 33 roles serveur_* declarent maintenant une sonde. Les huit qui manquaient
sont ceux dont la verite ne ressemble pas a « ce service repond-il ».
Quatre marqueurs du site : ce que tasks/main.yml verifie UNE FOIS au deploiement
cesse d etre vrai sans que rien ne tombe. La racine du cache se retrouve chainee,
la forge du genome repond en n ayant plus rien dedans, un locataire n est plus
admis a resoudre, l isolation d un depot glisse.
serveur_ops_site ne sert rien : il detient un pouvoir. La sonde verifie que la
carte est la, que la voute du site est chiffree et que sa cle est en 0600 — sans
lire le contenu d aucun des trois.
serveur_icingaweb2 surveille la vitrine de la supervision elle-meme : si la
console meurt, tout reste vert et l exploitant est aveugle.
DEFAUT 1 — quatre gabarits qu Ansible aurait refuse de rendre. Jinja lit le
{# de ${#tableau[@]} comme un debut de commentaire. Le depot connaissait le
remede et l appliquait la ou quelqu un s etait fait prendre, nulle part ailleurs.
P76 rend desormais chaque gabarit de role, avec les delimiteurs qu Ansible en
tirerait — pas une recherche de motif.
DEFAUT 2 — la doctrine promettait 54 greffons et citait check_pgsql. La flotte a
monitoring-plugins-basic : 53, sans check_pgsql ni check_dns ni check_ldap. Le
paquet qui les porte traine samba et snmp sur chaque machine. Un greffon absent
sort en 127, qui n est pas un code Nagios.
21 controles negatifs sur les machines reelles du site. ansible-lint production
0/91, harnais 75 OK.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
31 lines
2 KiB
YAML
31 lines
2 KiB
YAML
---
|
|
# =========================================================================
|
|
# serveur_web_dorsal — webapps DYNAMIQUES (runtime + service systemd), derriere l'edge.
|
|
# 2e brique de la plateforme webapp : 100% natif (venv/paquets + systemd + nginx),
|
|
# ZERO conteneur. L'app ecoute en localhost ; un vhost nginx local la fronte ;
|
|
# l'edge proxie vers ce nginx. BD reseau (PG) via resoudre_base si l'app en a une ;
|
|
# les apps a etat local (SQLite) utilisent un data_dir persistant.
|
|
# Codifie depuis le spike du 2026-07-05 (monregistraire, FastAPI + uvicorn + SQLite).
|
|
# =========================================================================
|
|
serveur_web_dorsal_racine: "/srv/webapp"
|
|
serveur_web_dorsal_utilisateur: "webapp"
|
|
|
|
# Liste des webapps servies par ce noeud. Chaque entree :
|
|
# nom identifiant court (dossier + service + vhost)
|
|
# server_name FQDN servi (doit etre expose via applications.yml -> edge, port 80)
|
|
# depot URL du depot git de l'app (souverain, ex. Forgejo)
|
|
# branche branche a deployer (defaut: main)
|
|
# port port local ecoute par l'app (127.0.0.1:<port>)
|
|
# commande ExecStart, relatif au dossier de l'app (ex: .venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8001)
|
|
# requirements fichier pip (defaut: requirements.txt) ; venv cree automatiquement
|
|
# env dict de variables d'environnement (secrets via voute)
|
|
# data_dir repertoire d'etat persistant (optionnel ; cree, possede par webapp)
|
|
serveur_web_dorsal_apps: []
|
|
|
|
# LES CODES QU'UNE WEBAPP SAINE PEUT RENDRE A LA RACINE, sans etre authentifie.
|
|
#
|
|
# 200 quand elle sert, 302 quand elle renvoie vers une page de connexion, 401/403 quand
|
|
# elle exige une identite, 404 quand la racine n'est pas une route — une API sous
|
|
# `/api/...` est parfaitement saine sans rien servir a `/`. Ce qui reste exclu : les 5xx
|
|
# et l'absence de reponse, c'est-a-dire l'app coincee ou morte.
|
|
serveur_web_dorsal_sonde_codes: "HTTP/1.1 200,HTTP/1.1 302,HTTP/1.1 401,HTTP/1.1 403,HTTP/1.1 404"
|