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

2 KiB

Architecture

Vue d'ensemble

Le dépôt repose sur une architecture déclarative simple :

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.