Set-OPS-Public/roles/serveur_web_frontal
Daniel Allaire aac74f6043 supervision : les huit derniers roles, et deux defauts que l epreuve a trouves
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
2026-09-14 15:43:52 -04:00
..
defaults supervision : les huit derniers roles, et deux defauts que l epreuve a trouves 2026-09-14 15:43:52 -04:00
handlers Rôles web : renommer web_frontal/dorsal -> serveur_web_frontal/dorsal (convention) 2026-07-05 18:49:31 -04:00
meta supervision : les huit derniers roles, et deux defauts que l epreuve a trouves 2026-09-14 15:43:52 -04:00
tasks supervision : les huit derniers roles, et deux defauts que l epreuve a trouves 2026-09-14 15:43:52 -04:00
templates supervision : les huit derniers roles, et deux defauts que l epreuve a trouves 2026-09-14 15:43:52 -04:00
README.md Rôles web : renommer web_frontal/dorsal -> serveur_web_frontal/dorsal (convention) 2026-07-05 18:49:31 -04:00

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)

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