Set-OPS-Public/roles/web_frontal
Daniel Allaire 72b7579c6e web_frontal : git clone superficiel (depth 1) + git installé + fix nom de tâche
Chemin git prouvé de bout en bout : le rôle clone le site depuis le Forgejo
souverain (depth 1 — pas l'historique lourd) et le sert derrière l'edge.
Éprouvé sur web-frontal-01 (Alliance Boréale servi via edge depuis /srv/web,
cloné de Forgejo). ansible-lint production : 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 18:22:11 -04:00
..
defaults web_frontal : rôle sites statiques (1re brique plateforme webapp, 100% natif) 2026-07-05 18:12:19 -04:00
handlers web_frontal : rôle sites statiques (1re brique plateforme webapp, 100% natif) 2026-07-05 18:12:19 -04:00
meta web_frontal : rôle sites statiques (1re brique plateforme webapp, 100% natif) 2026-07-05 18:12:19 -04:00
tasks web_frontal : git clone superficiel (depth 1) + git installé + fix nom de tâche 2026-07-05 18:22:11 -04:00
templates web_frontal : rôle sites statiques (1re brique plateforme webapp, 100% natif) 2026-07-05 18:12:19 -04:00
README.md web_frontal : rôle sites statiques (1re brique plateforme webapp, 100% natif) 2026-07-05 18:12:19 -04:00

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 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 web_frontal)

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 web_frontal_csp_defaut

Et dans applications.yml : une app groupe: 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).