Set-OPS-Public/roles/serveur_web_dorsal/defaults/main.yml
2026-09-29 17:34:44 -04:00

73 lines
4.4 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"
# --- LES SITES STATIQUES (2026-09-29, repris du web frontal) -------------------------------
#
# LE DORSAL PORTE LES SITES ; LE FRONTAL NE SERT RIEN LUI-MEME. Le web frontal est le reverse
# proxy et le WAF devant les services web publics du locataire ; ce qui est servi — les
# applications comme les sites statiques — vit ici. Un site statique : 100 % natif, nginx,
# le contenu cloné d'un depot git souverain.
serveur_web_dorsal_sites_racine: "/srv/web"
# En-tetes de securite par defaut (sobriete + vie privee : tout local, pas de tiers).
serveur_web_dorsal_csp_defaut: >-
default-src 'self'; img-src 'self' data:; style-src 'self'; script-src 'self';
object-src 'none'; base-uri 'self'; frame-ancestors 'self'
# Liste des sites statiques servis par ce noeud. Chaque entree :
# nom identifiant court (dossier + vhost)
# server_name FQDN servi — celui que le plan EXPOSE (applications.yml -> edge ou frontal)
# depot URL du depot git du site (souverain, ex. Forgejo)
# branche branche a servir (defaut: main)
# sous_dossier sous-dossier du depot a servir comme racine (ex: public)
# csp Content-Security-Policy specifique (optionnel)
serveur_web_dorsal_sites: []
# LE PORT DES VHOSTS LOCAUX DES SITES. En clair sur cette machine : c'est le frontal (ou
# l'edge, pour un nom interne) qui les recoit et les relaie. La sonde mesure ce qu'il ira
# chercher — si le frontal est vert et le site muet, la panne est ici.
serveur_web_dorsal_sites_port: 80
# --- LA FORGE DU SITE, SOURCE DES SITES ET DES APPLICATIONS (2026-09-29) -------------------
#
# Les locataires n'ont plus de forge a eux : le contenu vient de celle du SITE, jointe par
# son adresse et signee par l'AC du site. On ne pose pas cette racine dans le magasin
# systeme : `git config http.<url>.sslCAInfo` ne l'applique qu'a CETTE forge — le patron du
# runner (`serveur_ops`). L'adresse et la racine sont LUES chez le runner du locataire,
# qui les declare deja : une seconde copie prendrait du retard.
serveur_web_dorsal_forge_site: >-
{{ (hostvars[groups['serveur_ops'][0]].serveur_ops_forge_amont | default(''))
if (groups.get('serveur_ops') or []) else '' }}
serveur_web_dorsal_forge_site_ac: >-
{{ (hostvars[groups['serveur_ops'][0]].serveur_ops_forge_amont_ac | default(''))
if (groups.get('serveur_ops') or []) else '' }}
serveur_web_dorsal_forge_site_ac_depot: "/usr/local/share/setops/ac-forge-site.crt"