Set-OPS-Public/roles/serveur_web_frontal/README.md
Daniel Allaire af13fc37c9 Rôles web : renommer web_frontal/dorsal -> serveur_web_frontal/dorsal (convention)
Aligne sur la convention serveur_* de tous les rôles de service (vars incluses).
Le modèle presence-web (pré-existant) utilisait déjà ces noms -> il colle enfin.
Aussi : serveur_web_dorsal ne chown plus le code (reste root, lecture seule pour
l'app = plus sûr + git idempotent, fini le 'propriété douteuse' au pull).
Idempotence prouvée (2e passage changed=0). lint production.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 18:49:31 -04:00

37 lines
1.7 KiB
Markdown

# serveur_web_frontal
Hébergement de **sites web statiques** (nginx), derrière l'edge. Première brique de
la **plateforme webapp** de Set-OPS : **100 % natif** — pas de conteneur, pas de
runtime, pas de base de données. Le contenu vient d'un **dépôt git souverain**
(Forgejo). Codifié depuis le spike du 2026-07-05 (site Alliance Boréale).
## Ce que le rôle fait
Pour chaque site déclaré dans `serveur_web_frontal_sites` :
1. `git clone`/`pull` du dépôt → `/srv/web/<nom>` ;
2. vhost nginx servant `<sous_dossier>` (ex. `public/`), avec en-têtes de sécurité
+ CSP (défaut : `self` only, aucun tiers, aucun pistage), gzip, cache, `try_files`.
Exposé via `applications.yml` (champ `expose`) → l'edge proxie en HTTPS (TLS step-ca).
Les SAN du cert edge et le plancher /etc/hosts sont **auto-dérivés du plan**.
## Déclaration (group_vars du groupe serveur_web_frontal)
```yaml
serveur_web_frontal_sites:
- nom: alliance
server_name: "alliance-boreale.{{ domaine_interne }}"
depot: "https://forge.{{ domaine_interne }}/alliance/site-alliance-boreale.git"
branche: main
sous_dossier: public
# csp: "..." # optionnel, sinon serveur_web_frontal_csp_defaut
```
Et dans `applications.yml` : une app `groupe: serveur_web_frontal, hote: <noeud>, port: 80,
expose: [alliance-boreale.<domaine>]`.
## Portée
Statique seulement (le **frontal**). Les apps **dynamiques** (runtime + service
systemd + BD via resoudre_base) relèveront d'un rôle *dorsal* à venir — même éthos :
natif, systemd, zéro conteneur.
## Validation
`ansible-lint` profil production + `--syntax-check`. Éprouvé sur web-frontal-01
(site servi via l'edge, HTTPS step-ca vérifié, CSP en place).