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

182 lines
3.9 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.
## Cible de ce dépôt
Cette version vise désormais explicitement le scénario suivant :
> **Debian 12 vanille + utilisateur `ansible` + clé SSH = plateforme Life-NOC complète**
Le dépôt automatise :
- l'ajout du dépôt officiel Icinga
- l'installation de MariaDB
- l'installation d'Icinga 2
- l'installation et la configuration d'IDO MySQL
- l'installation d'Apache et d'Icinga Web 2
- l'installation du module Business Process
- le déploiement de Life-NOC
- la génération des services Icinga et de l'artefact BPM
## État fonctionnel
La modélisation métier reste **mock-first** :
- les domaines et éléments de vie sont décrits dans `domains.yaml`
- les services Icinga sont générés automatiquement
- les sondes sont **mockées** par défaut
- l'état par défaut est **OK**
Autrement dit, la POC valide :
- le modèle déclaratif
- la génération des artefacts
- le bootstrap complet de la plateforme
- le déploiement automatisé par Ansible
- l'affichage Icinga Web 2
- l'évolution future vers de vraies sondes
## Structure du dépôt
```text
life-noc/
├── ansible/
│ ├── group_vars/
│ ├── inventory.example
│ ├── roles/
│ │ ├── base/
│ │ ├── mariadb/
│ │ ├── icinga2/
│ │ ├── icingaweb2/
│ │ ├── businessprocess/
│ │ └── life_noc/
│ ├── deploy_life_noc.yml
│ └── site.yml
├── bpm/
├── checks/
├── docs/
├── icinga/
│ ├── commands/
│ ├── hosts/
│ ├── services/
│ └── templates/
├── scripts/
├── domains.yaml
├── Makefile
└── ansible.cfg
```
## 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`
## Déploiement from scratch
Depuis la machine de contrôle Debian 12 :
```bash
cp ansible/inventory.example ansible/inventory
cp ansible/group_vars/all.yml.example ansible/group_vars/all.yml
```
Modifier ensuite :
- l'hôte cible dans `ansible/inventory`
- les mots de passe dans `ansible/group_vars/all.yml`
Puis lancer :
```bash
make bootstrap
```
ou :
```bash
ansible-playbook -i ansible/inventory ansible/site.yml
```
## Génération locale
### Générer les services Icinga
```bash
python3 scripts/generate_services.py
```
### Générer l'artefact 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 bootstrap
make deploy-with-bpm
make package
```
Pour la liste complète :
```bash
make help
```
## Accès web attendus
Une fois le playbook terminé, les chemins utiles sont typiquement :
```text
/icingaweb2
/icingaweb2/monitoring/host/show?host=life-noc
/icingaweb2/monitoring/list/services?host_name=life-noc
```
## Documentation complémentaire
- `docs/concept.md`
- `docs/architecture.md`
- `docs/deploiement-from-scratch.md`
## 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 bootstrap serveur
- le déploiement
- l'intégration Icinga Web 2
Les vraies sondes viendront plus tard, en remplacement progressif des mocks.