Set-OPS-Public/roles/serveur_icingaweb2/defaults/main.yml
Daniel Allaire 6f2acafdb6 acces : les cinq meta/acces.yml, et le mecanisme qui manque a chacun
Chaque role web declare le GROUPE qu'il reconnait et ce qu'il lui accorde. Un
troisieme champ s'est impose en ecrivant : `porte_par` — le mecanisme qui
transporte reellement l'habilitation. Sans lui, les declarations auraient decrit
une chaine inexistante.

Etat mesure : grafana `role-realm` (reel) ; forgejo, nextcloud et keycloak
`aucun` ; icingaweb2 `liste-uid` — il NOMME DES PERSONNES, ce que D-66 interdit.

Le maillon manquant est chez Keycloak : `role_assignments` assigne un role a un
UTILISATEUR, et son propre commentaire l'admettait (« en prod, preferer
l'assignation via groupe d'annuaire »). Sans group-ldap-mapper, les groupes LDAP
n'atteignent jamais les services. Sa meta a donc une autre forme,
`acces_projection` : Keycloak projette au lieu de consommer (D-65).

Defaut corrige : `serveur_icingaweb2_admins` valait "testmail", un compte de
test code en dur dans le moteur qu'aucune instance ne surchargeait — le seul
administrateur declare de la supervision etait un utilisateur inexistant. Il
suit desormais l'uid d'amorcage. Verifie sur mon-01 : users = "sysadmin".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 13:59:33 -04:00

69 lines
3.1 KiB
YAML

---
# Icinga Web 2 (UI native Icinga) + module IcingaDB, sur le nœud de supervision.
# App PHP servie par nginx local + php-fpm ; l'edge nginx proxifie par nom.
# Auth LDAP direct (OpenLDAP) — icingaweb2 n'a pas d'OIDC natif ; SSO via proxy = raffinement.
serveur_icingaweb2_paquets:
- icingadb-web # module IcingaDB (tire icingaweb2 en dépendance)
- icingaweb2-module-businessprocess # module BPM (vues d'impact métier)
- php8.4-fpm
- php8.4-cli
- php8.4-pgsql
- php8.4-ldap
- php8.4-intl
- php8.4-gd
- php8.4-curl
- php8.4-xml
- php8.4-mbstring
- nginx
serveur_icingaweb2_php_fpm_service: "php8.4-fpm"
serveur_icingaweb2_php_fpm_socket: "/run/php/php8.4-fpm.sock"
serveur_icingaweb2_nginx_service: "nginx"
# Publication : nginx LOCAL sur ce port ; l'edge proxifie icinga.<domaine> ici.
serveur_icingaweb2_hostname: "icinga.{{ domaine_interne }}"
serveur_icingaweb2_http_port: 8080
serveur_icingaweb2_docroot: "/usr/share/icingaweb2/public"
serveur_icingaweb2_config_dir: "/etc/icingaweb2"
# Base IcingaDB (via le registre — même consommateur que le moteur).
serveur_icingaweb2_icinga_groupe: "serveur_icinga"
# Redis IcingaDB (local au nœud de supervision).
serveur_icingaweb2_redis_host: "127.0.0.1"
serveur_icingaweb2_redis_port: 6380
# Authentification LDAP (OpenLDAP, LDAPS). La connexion (url, base, users_dn, bind_dn,
# bind_password) est fournie par le rôle partagé resoudre_annuaire (voir tasks « Adopter la
# connexion annuaire »). Utilisée seulement en mode auth "ldap" ; en SSO, résolue mais inutilisée.
serveur_icingaweb2_ldap_port: 636
serveur_icingaweb2_ldap_user_class: "inetOrgPerson"
serveur_icingaweb2_ldap_user_attr: "uid"
# Qui reçoit le rôle Administrateur (liste d'uid séparés par des virgules).
#
# /!\ NOMMER DES PERSONNES contredit D-66 : révoquer quelqu'un demande alors un
# déploiement, et la liste vieillit sans que rien ne le signale. Icinga Web 2 sait
# lire un groupe d'annuaire (backend LDAP de type `group`) — c'est là qu'il faut
# aller. Voir roles/serveur_icingaweb2/meta/acces.yml.
#
# En attendant, le défaut suit l'`uid` d'amorçage plutôt qu'un compte de test :
# `testmail` était codé en dur et n'existe dans aucune instance — le seul
# administrateur déclaré était donc un utilisateur inexistant (2026-08-07).
serveur_icingaweb2_admins: "{{ amorcage_acces_uid | default('sysadmin') }}"
# Backend d'authentification : "ldap" (direct) ou "external" (utilisateur fourni par une
# passerelle SSO devant, ex. oauth2-proxy → Keycloak). En "external", nginx doit poser REMOTE_USER.
serveur_icingaweb2_auth: "ldap"
# Variable nginx d'où vient REMOTE_USER. En SSO : l'en-tête d'oauth2-proxy.
serveur_icingaweb2_remote_user: "$remote_user"
# Préfixe d'écoute nginx local ("" = toutes interfaces ; "127.0.0.1:" = local, derrière la passerelle).
serveur_icingaweb2_nginx_bind: ""
# Modules icingaweb2 à activer.
serveur_icingaweb2_modules:
- icingadb
- businessprocess
# Processus métier (BPM) à semer, en IaC (nom -> contenu du .conf). Vide par défaut :
# les processus sont normalement édités via l'UI. Un contenu ici est géré par Ansible.
serveur_icingaweb2_bpm_processes: {}