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:
parent
b3b972fb5e
commit
2ed919e914
4 changed files with 48 additions and 7 deletions
11
CHANGELOG.md
11
CHANGELOG.md
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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**
|
||||
|
|
|
|||
|
|
@ -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: {}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue