Stage de 2ème année au Conseil Départemental de la Dordogne (CD24) — pipeline Python qui collecte la configuration de plusieurs Citrix NetScaler ADC (API NITRO) puis injecte automatiquement l'inventaire dans Mercator, l'outil de cartographie SI de l'ANSSI.
Outil d'industrialisation de la cartographie SI développé pendant mon stage de 2e année au Conseil Départemental de la Dordogne (CD24), pour remplacer la maintenance manuelle de la cartographie réseau par un import automatique.
Le pipeline fonctionne en deux étapes orchestrées par un script Python unique :
Collecte NITRO : pour chacune des appliances Citrix NetScaler ADC du parc (DMZ edge, DMZ gateway, DMZ qualif, production), authentification via l'API NITRO et parcours complet de la configuration : virtual servers de Load Balancing (lbvserver), services backend et leurs IPs/ports/états, virtual servers de Content Switching (csvserver), policies (cspolicy) et leurs actions (csaction) avec leurs lbvserver cibles. Les données sont normalisées en JSON par hôte.
Import Mercator : authentification à l'API Mercator (Bearer token), récupération des inventaires existants pour dédoublonner, puis création/mise à jour des Logical Servers (un par IP backend), des Application Services (un par couple IP:port_protocole) et des Applications (une par lbvserver/csvserver). Les services sont automatiquement reliés à leur serveur logique. Gestion du rate-limit Mercator avec back-off automatique.
Résultat : une cartographie SI à jour en quelques minutes au lieu de plusieurs jours, exécutable périodiquement en cron pour suivre l'évolution de l'infrastructure.
Le projet a pour but explicite de recenser et identifier les ressources numériques : chaque appliance Citrix NetScaler ADC du parc est interrogée pour découvrir l'ensemble de ses virtual servers de load balancing, ses services backend, ses serveurs logiques et leurs IPs/ports, ainsi que la chaîne content switching (csvserver → cspolicy → csaction → lbvserver cible). Cette cartographie est ensuite consolidée dans Mercator.
Le projet a démarré par une analyse du processus existant (cartographie maintenue à la main, sujette aux oublis et au décalage avec la réalité) et des objectifs de l'équipe DSI : industrialiser, garantir la fraîcheur des données, rester compatible avec Mercator. Cette analyse a défini le découpage en deux étapes (collecte puis import) et le périmètre fonctionnel (LB + CS).
Le service a été industrialisé pour un usage en production : configuration externalisée dans des fichiers .env, dépendances figées dans requirements.txt, orchestration via un script unique run.py exécutable périodiquement en cron. La cartographie peut désormais être rafraîchie automatiquement sans intervention manuelle.