Mise en place de l’environnement et de l’infrastructure
Voici le sous-module Infrastructure du parcours Ingénierie système de l’Échange HIC : mise en place du serveur et de l’environnement, Docker, PostgreSQL, la stack d’entrepôt de données et le déploiement. C’est le runbook unique et unifié pour monter la plateforme d’entrepôt de données MNCH depuis l’infrastructure nue jusqu’à une stack analytique en fonctionnement — il regroupe le playbook de provisionnement de la VM, les playbooks Ansible utilitaires et la documentation de déploiement de l’entrepôt en un seul flux continu.
Partie 1 sur 4 — Atelier 1 : Provisionner et configurer · Atelier 2 : Déployer et livrer · Exploitation et dépannage
Remarque sur les valeurs de ce guide. Les hôtes, noms d’utilisateur, IP et comptes de base de
données concrets des documents sources sont présentés ici comme des valeurs de substitution
(p. ex. <DEPLOY_HOST>, <DEPLOY_USER>, <DB_USER>, <VM_STATIC_IP>). Remplacez-les par les
vraies valeurs de votre environnement au moment d’exécuter les commandes — conservez les vraies
valeurs dans votre coffre de secrets / gestionnaire de mots de passe, pas dans ces pages.
Vue d’ensemble
La plateforme est construite en quatre couches empilées. Chaque couche est provisionnée une fois puis largement laissée telle quelle ; les changements du quotidien passent par le pipeline CI/CD au sommet.
Déployée sous forme de 3 conteneurs Docker via la CI/CD GitHub Actions
Mises à jour, pare-feu, nginx, Docker, client PostgreSQL, SSL
IP privée statique · redirection de ports sur l’hôte · reverse proxy · snapshot
IP publique · pont NAT virbr0 (192.168.122.0/24) · virt-install
Et voici le flux des requêtes et des données une fois que tout est en service :
Où vivent les bases de données
L’entrepôt utilise un seul serveur PostgreSQL externe (non conteneurisé), qui héberge quatre bases de données distinctes. Retenez bien cette distinction — c’est la source de confusion la plus fréquente :
| Base de données | Appartient à | Rôle |
|---|---|---|
prefect_db | Prefect | Les métadonnées d’orchestration propres à Prefect |
superset_db | Superset | L’état de l’application Superset (utilisateurs, graphiques, tableaux de bord) |
dagster_db | Dagster | Le stockage Dagster des runs, du journal d’événements et des planifications |
<warehouse_db> (par défaut mnch_main_db) | le pipeline | Le véritable entrepôt de données : landing → staging → intermediate → marts |
Phase 0 — Liste de vérification des prérequis
Avant de commencer, confirmez que vous disposez de tout ce qui suit.
Sur l’hôte KVM :
- KVM + libvirt installés (
virsh,virt-install) - Un pont NAT libvirt (par défaut
virbr0,192.168.122.0/24) - Une IP publique statique avec la possibilité de rediriger des ports
- L’ISO Ubuntu 22.04 LTS Server disponible sur l’hôte
- Outils :
virsh,virt-install,iptables,netplan,nginx - Accès SSH + sudo à l’hôte ; accès à la console série pour l’installation de l’OS
Sur votre machine de contrôle (portable) :
- Ansible 2.9+ installé (pour la Phase 2)
- La CLI GitHub (
gh), authentifiée (gh auth login) — pour la Phase 3 - Le matériel de clés SSH pour l’utilisateur de déploiement de la VM
Dépendances externes :
- Un serveur PostgreSQL joignable pour les quatre bases de données ci-dessus
- Les identifiants des API sources eBuzima et HMIS/DHIS2
- (Optionnel mais recommandé) un nom de domaine pointant vers l’IP publique, pour du vrai TLS
La suite
Les prérequis en main, rendez-vous à Atelier 1 : Provisionner la VM et configurer avec Ansible pour créer la VM invitée sur l’hôte KVM et amener son OS à un socle sécurisé et prêt pour Docker.