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

135 lines
3.1 KiB
Markdown

# Life-NOC
Life-NOC applique la logique d'un centre d'opérations (NOC) à la vie quotidienne.
Le but du projet est de transformer la charge mentale invisible en état observable, afin de savoir rapidement ce qui est sous contrôle, ce qui approche d'une échéance et ce qui mérite de l'attention.
## État actuel du dépôt
Cette version est une **POC fonctionnelle mock-first**.
Cela signifie que :
- la structure métier est réelle ;
- les domaines et éléments de vie sont décrits dans `domains.yaml` ;
- les services Icinga sont générés automatiquement ;
- le BPM est généré automatiquement ;
- les sondes sont **mockées** par défaut et retournent **OK** tant qu'aucun état simulé n'est forcé.
Autrement dit, la POC valide :
- le modèle déclaratif ;
- la génération des artefacts ;
- le déploiement automatisé par Ansible ;
- la visualisation Icinga/BPM ;
- le remplacement futur des mocks par de vraies sondes.
## Structure du dépôt
```text
life-noc/
├── ansible/
│ ├── deploy_life_noc.yml
│ └── roles/life_noc/
├── bpm/
├── checks/
├── docs/
├── icinga/
│ ├── commands/
│ ├── hosts/
│ ├── services/
│ └── templates/
├── scripts/
└── domains.yaml
```
## Source of truth
Le fichier central est :
- `domains.yaml`
Chaque entrée décrit un élément Life-NOC avec :
- `name` : identifiant lisible
- `date` : métadonnée d'échéance ou de repère
- `notes` : contexte humain
- `mock_state` : état simulé (`OK`, `WARNING`, `CRITICAL`) — optionnel
- `mock_message` : message simulé — optionnel
Par défaut :
- `mock_state = OK`
- `mock_message = Sous contrôle`
## Génération
### Générer les services Icinga
```bash
python3 scripts/generate_services.py
```
### Générer le BPM
```bash
python3 scripts/generate_bpm.py
```
## Makefile
Le dépôt fournit un `Makefile` pour les gestes courants.
Exemples :
```bash
make generate
make validate
make check
make deploy
make deploy-with-bpm
make package
```
```bash
make help
```
affiche la liste complète des cibles disponibles.
## Déploiement Ansible
Le déploiement repose sur le rôle `life_noc`.
Exemple :
```bash
cd ansible
ansible-playbook -i inventory deploy_life_noc.yml
```
Variables importantes :
- `life_noc_project_root` : chemin de déploiement du projet sur l'hôte cible
- `life_noc_icinga_conf_root` : racine de configuration Icinga pour Life-NOC
- `life_noc_plugin_dir` : répertoire des plugins Icinga
- `life_noc_validate_icinga` : valide la configuration avant reload
- `life_noc_reload_icinga` : recharge Icinga après déploiement
- `life_noc_bpm_deploy_enabled` : active le déploiement BPM vers le module Icinga Web 2
- `life_noc_bpm_target_file` : destination du fichier BPM généré
## Philosophie de cette POC
Cette POC ne prétend pas encore mesurer le réel.
Elle sert à construire proprement :
- l'ossature du système ;
- la hiérarchie des domaines ;
- les conventions de nommage ;
- la chaîne de génération ;
- le déploiement ;
- l'intégration visuelle Icinga/BPM.
Les vraies sondes viendront plus tard, en remplacement progressif des mocks.