life-noc/docs/architecture.md
2026-03-13 16:13:37 -04:00

85 lines
2 KiB
Markdown

# Architecture
## Vue d'ensemble
Le dépôt repose sur une architecture déclarative simple :
```text
domains.yaml
├── scripts/generate_services.py -> icinga/services/*.conf
└── scripts/generate_bpm.py -> bpm/life-noc.json
```
Le déploiement Ansible transfère le projet sur l'hôte Icinga, régénère les artefacts, installe le plugin mock, valide la configuration puis recharge Icinga.
## Composants
### 1. `domains.yaml`
Source de vérité métier.
Chaque domaine contient une liste d'éléments. Chaque élément peut inclure :
- `name`
- `date`
- `notes`
- `notes_url`
- `action_url`
- `mock_state`
- `mock_message`
### 2. `scripts/generate_services.py`
Produit un fichier `.conf` par domaine pour Icinga.
Les services générés :
- importent le template `service_echeance` ;
- conservent les métadonnées utiles ;
- définissent un comportement mock par défaut.
### 3. `checks/check_life_noc_mock.sh`
Plugin de sonde mockée.
Il accepte un état simulé et un message simulé.
Mappage :
- `OK` -> code 0
- `WARNING` -> code 1
- `CRITICAL` -> code 2
- autre valeur -> `UNKNOWN`
### 4. `icinga/templates/service_echeance.conf`
Template de service par défaut pour les éléments Life-NOC.
Il référence le check mock et fournit des valeurs par défaut cohérentes.
### 5. `scripts/generate_bpm.py`
Construit le BPM à partir du même modèle YAML afin de conserver la cohérence de la hiérarchie.
### 6. `ansible/roles/life_noc`
Rôle de déploiement automatisé.
Responsabilités :
- copier le projet ;
- installer les dépendances Python minimales ;
- générer les services Icinga ;
- générer le BPM ;
- déployer la configuration Icinga ;
- installer le plugin mock ;
- valider Icinga ;
- recharger Icinga.
## Principes de conception
- une seule source de vérité ;
- génération automatique plutôt que duplication ;
- mocks explicites plutôt que fausse logique réelle ;
- déploiement reproductible ;
- remplacement futur progressif des mocks.