# 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.