Module BPM éprouvé + codifié — pile Icinga complète

serveur_icingaweb2 installe + active businessprocess, crée le répertoire
des processus (éditable UI) et sème des processus BPM en IaC
(serveur_icingaweb2_bpm_processes). Format host;service éprouvé via les
fixtures du module.

Prouvé : processus « Supervision Chezlepro » (roll-up load/procs/swap/
ping4/ssh en ET) rend un état dans l'UI, backend IcingaDB (pas d'IDO).
Rôle re-prouvé (reset → recrée le processus). Pile Icinga = moteur +
Web 2 + BPM.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Daniel Allaire 2026-07-03 17:04:34 -04:00
parent b3b972fb5e
commit 2ed919e914
4 changed files with 48 additions and 7 deletions

View file

@ -12,7 +12,16 @@
`testmail` (LDAP) se connecte (`/dashboard`), et le **module IcingaDB affiche la supervision**
(hôte `icinga`). Déploiement `failed=0` (le rôle est bon ; les frictions étaient dans le
simulateur de login curl : contrôle de cookie `_checkCookie`, champs `uid`/`submit_login`,
valeur CSRF avant `name`). **Reste de la pile Icinga : le module BPM.**
valeur CSRF avant `name`).
- **Module BPM (Business Process) éprouvé + codifié — pile Icinga complète.** `serveur_icingaweb2`
installe + active `icingaweb2-module-businessprocess` (`serveur_icingaweb2_modules`), crée le
répertoire des processus (éditable via l'UI, groupe `icingaweb2`, setgid) et **sème des processus
métier en IaC** (`serveur_icingaweb2_bpm_processes`, nom → contenu `.conf`). Format des feuilles
`host;service` (éprouvé via les fixtures du module). **Prouvé** : un processus « Supervision
Chezlepro » (agrège load/procs/swap/ping4/ssh du host `icinga` en logique ET) **rend un état**
dans l'UI (`testmail` connecté), **avec le backend IcingaDB** (pas d'IDO). Rôle re-prouvé (reset
→ recrée le processus, idempotent). BPM n'est **pas remplaçable par Grafana** (roll-up d'impact
métier). Pile Icinga = **moteur + Web 2 + BPM**, complète.
- **Cœur Icinga éprouvé (supervision active).** `serveur_icinga` (cœur : `icinga2` + `icingadb` +
`icingadb-redis`) déployé sur `sup-01` (🔧→⭐), base `icingadb` PostgreSQL via le registre.
**Prouvé** : 3 services actifs, et le moteur **supervise** — IcingaDB peuplée (1 hôte, 12

View file

@ -44,9 +44,9 @@ sur `forge-01`, PostgreSQL via registre, **branché au SSO OIDC** — 2e app : `
compte auto-créé). Et **`serveur_redis`** (sur `data-sql-01`, cache réseau, auth obligatoire —
SET/GET prouvé, accès sans mot de passe refusé). Et le **cœur `serveur_icinga`** (sur `sup-01` :
icinga2 + icingadb + redis dédié, base PostgreSQL via registre — supervise, IcingaDB peuplée) +
**`serveur_icingaweb2`** (UI native, PHP/nginx local, module IcingaDB, **auth LDAP** `testmail`
se connecte et voit la supervision ; **reste le module BPM**). Restent « code non éprouvé » :
`serveur_sendmail`.
**`serveur_icingaweb2`** (UI native, PHP/nginx local, module IcingaDB + **module BPM**, **auth LDAP**
`testmail` se connecte, voit la supervision, et un processus métier BPM rend un état).
**Pile Icinga complète : moteur + Web 2 + BPM.** Restent « code non éprouvé » : `serveur_sendmail`.
> **Lacunes connues sur Keycloak** (déployé mais pas complet) : la **fédération LDAP** (Keycloak
> → OpenLDAP, modèle d'identité A) n'est **pas encore automatisée** dans le rôle ; l'**edge nginx**

View file

@ -4,6 +4,7 @@
# 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
@ -43,3 +44,12 @@ serveur_icingaweb2_ldap_user_attr: "uid"
# Qui reçoit le rôle Administrateur (liste d'uid séparés par des virgules).
serveur_icingaweb2_admins: "testmail"
# 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: {}

View file

@ -45,12 +45,34 @@
label: "{{ item.d }}"
notify: Redémarrer php-fpm
- name: Activer le module IcingaDB
ansible.builtin.command: icingacli module enable icingadb
- name: Activer les modules icingaweb2 (IcingaDB, BPM)
ansible.builtin.command: "icingacli module enable {{ item }}"
args:
creates: "{{ serveur_icingaweb2_config_dir }}/enabledModules/icingadb"
creates: "{{ serveur_icingaweb2_config_dir }}/enabledModules/{{ item }}"
loop: "{{ serveur_icingaweb2_modules }}"
when: not ansible_check_mode
- name: Assurer le répertoire des processus BPM (éditable via l'UI)
ansible.builtin.file:
path: "{{ serveur_icingaweb2_config_dir }}/modules/businessprocess/processes"
state: directory
owner: root
group: icingaweb2
mode: "2770"
when: "'businessprocess' in serveur_icingaweb2_modules"
- name: Semer les processus métier BPM (IaC, optionnel)
ansible.builtin.copy:
content: "{{ item.value }}"
dest: "{{ serveur_icingaweb2_config_dir }}/modules/businessprocess/processes/{{ item.key }}.conf"
owner: root
group: icingaweb2
mode: "0660"
loop: "{{ serveur_icingaweb2_bpm_processes | dict2items }}"
loop_control:
label: "{{ item.key }}"
when: serveur_icingaweb2_bpm_processes | length > 0
- name: Déployer le vhost nginx local d'Icinga Web 2
ansible.builtin.template:
src: nginx.conf.j2