Réalisation : NetDevOps
Automatisation backup réseau
4 heures de backup manuel par mois à zéro. Scripts Python, API REST Meraki, API Palo Alto pour sauvegarder automatiquement les configurations d'équipements réseaux mondiaux.
Présentation du projet
La gestion manuelle des sauvegardes de configuration sur un parc réseau mondial induit des risques réels : oublis, incohérences de version, et en cas de remplacement d'équipement non planifié ou de besoin de rollback suite à un change mal effectué, une reconfiguration depuis zéro. J'ai développé une solution NetDevOps pour automatiser l'extraction des configurations de l'ensemble des réseaux Criteo via l'API REST Meraki, l'API Palo Alto et du scripting avec un task scheduler pour le backup de Kemp et la création d'ARM templates.
Ce projet a été mené en autonomie totale de l'analyse du besoin au déploiement en production, avec la supervision de mon maître d'apprentissage via une présentation finale du code et de la documentation à l'équipe Network pour validation.
Points clés
Périmètre : 11 réseaux, 350+ devices
Meraki (API REST), Palo Alto (API), ASA (4 nœuds VPN), Kemp (2 VM, backup natif FTP). Couverture mondiale complète.
JSON/XML/natif versionné sur FTP + ARM templates
Stockage horodaté sur serveur FTP FileZilla derrière firewall. ARM templates pour sauvegarder aussi les VMs hébergeant les appliances.
Monitoring + mail récapitulatif auto
Baseline par comptage de fichiers, mail envoyé à toute l'équipe réseau chaque weekend avec le statut de chaque équipement.
Objectifs, enjeux et risques
L'objectif principal était d'automatiser la sauvegarde hebdomadaire des configurations des différentes network appliances, avec zéro intervention manuelle et une intégrité garantie des données (format JSON versionné). L'enjeu sous-jacent était la rédaction du Disaster Recovery Plan : en cas de remplacement d'équipement d'urgence, la configuration doit être disponible immédiatement.
Le risque était de ne pas interférer avec les autres opérations en cours sur les équipements. Il fallait aussi un serveur de stockage dédié : la mise en place d'un serveur FTP derrière notre firewall a été faite pour stocker les dossiers de backups.
Points clés
Zéro intervention manuelle
Sauvegarde hebdomadaire entièrement automatique, le samedi à 3 h via task scheduler. 4 h de travail manuel par mois éliminées.
Disaster Recovery Plan
En cas de remplacement d'urgence ou de rollback post-change, la configuration est disponible immédiatement sur le FTP.
Risque : interférence et isolation
Ne pas perturber les opérations en cours sur les équipements. Clé Read/Write Palo Alto à isoler. Stockage FTP derrière firewall, hors réseau data.
Étapes et acteurs
Ce projet a été mené en autonomie totale. La première étape a été de faire l'inventaire précis de tout ce qu'il fallait couvrir : 11 réseaux Meraki à l'échelle mondiale (plus de 350 devices au total), 1 firewall Palo Alto, 4 nœuds VPN ASA et 2 VM Kemp. À partir de là, j'ai défini le périmètre fonctionnel avec mon maître d'apprentissage et j'ai commencé l'étude des APIs disponibles sur chaque plateforme.
L'étude a mis en évidence des contraintes différentes selon les constructeurs. Pour Meraki, l'API REST est bien documentée et une clé Read Only suffit. Pour Palo Alto, c'est plus délicat : il n'existe pas de clé Read Only possible pour les exports de config, ce qui m'a obligé à utiliser une clé Read/Write et à gérer le risque associé (isolation des permissions, stockage sécurisé), confirmé avec le support Palo Alto. Pour Kemp, pas d'API REST exploitable pour ce cas d'usage : j'ai utilisé la fonction native des LoadMasters permettant de pousser leur configuration directement vers un serveur FTP de backup, sans passer par le script Python.
Plutôt que de monter un nouveau serveur, j'ai réutilisé un ancien serveur FTP déjà en place (sous FileZilla), derrière notre firewall, pour stocker les backups de façon sécurisée et isolée du reste du réseau. J'y ai défini la structure des dossiers : un répertoire par type d'appliance, avec un fichier de configuration par équipement horodaté pour garder l'historique et détecter toute dérive entre deux backups.
Le script est développé en Python 3.x avec la librairie Requests. Les clés API sont stockées en variables d'environnement pour éviter toute fuite dans le code. Il appelle les endpoints de chaque constructeur, récupère la configuration au format natif (JSON pour Meraki, XML pour Palo Alto), et dépose le fichier sur le FTP avec un nommage incluant le nom de l'équipement et la date d'exécution. Son exécution est planifiée via le task scheduler du serveur, le samedi vers 3 h du matin. Les Kemp alimentent le même FTP en direct via leur option de backup native. En complément, j'ai produit des ARM templates pour sauvegarder non seulement la configuration des appliances, mais aussi les machines (VM) sur lesquelles elles tournent.
Le monitoring était un point critique : les backups s'exécutent une fois par semaine sans personne pour surveiller. J'ai développé un script de vérification qui maintient une baseline du nombre de fichiers attendus par dossier. Si chaque dossier contient bien X+1 fichiers après exécution, le backup est considéré comme réussi et un mail récapitulatif est envoyé automatiquement à toute l'équipe réseau avec le statut de chaque équipement.
Une fois le code stabilisé sur plusieurs exécutions, j'ai présenté la solution à l'équipe Network avec la documentation associée. Mon maître d'apprentissage a validé avant la mise en production. Le script tourne depuis en automatique chaque weekend, sans aucune intervention manuelle.
Points clés
Phase 1 · Inventaire et cadrage
Inventaire précis : 11 réseaux Meraki mondiaux (350+ devices), 1 firewall Palo Alto, 4 nœuds VPN ASA et 2 VM Kemp. Identification du risque réel : aucune sauvegarde automatique, reconfiguration depuis zéro en cas de remplacement d'urgence.
Phase 2 · Étude des APIs par constructeur
Meraki : clé Read Only suffisante. Palo Alto : clé Read/Write obligatoire pour les exports de config (pas de Read Only possible, confirmé avec le support). Kemp : pas d'API REST exploitable, backup natif vers FTP utilisé.
Phase 3 · Serveur FTP (FileZilla)
Réutilisation d'un ancien serveur FTP sous FileZilla, derrière firewall. Structure des dossiers définie : un répertoire par type d'appliance, un fichier par équipement horodaté pour garder l'historique.
Phase 4 · Développement Python + ARM templates
Script Python 3.x avec Requests pour les appels API. Clés API en variables d'environnement. Export JSON (Meraki), XML (Palo Alto), backup natif FTP (Kemp). Exécution planifiée le samedi à 3 h via task scheduler. ARM templates pour sauvegarder aussi les VMs hébergeant les appliances.
Phase 5 · Monitoring et alerting
Script de check : baseline du nombre de fichiers attendus par dossier. Au lancement, si X+1 fichiers détectés dans chaque dossier → backup considéré comme réussi → mail récap envoyé à toute l'équipe réseau.
Phase 6 · Mise en production
Présentation du code et de la documentation à l'équipe Network pour validation. Planification via task scheduler en exécution hebdomadaire le weekend. Suivi sur les premières semaines pour s'assurer de la stabilité.
Résultats et lendemains
Le script est fonctionnel en production et a réduit le temps de backup d'environ 4 heures par mois à zéro, tout en améliorant la fiabilité et la traçabilité. La comparaison des backups successifs permet désormais de détecter toute dérive de configuration non planifiée sur le parc et de répondre rapidement en cas de besoin.
La migration du stockage FTP vers un Azure Storage Account (moins cher qu'une VM dédiée, natif à l'infrastructure cloud de Criteo, avec versioning activé nativement) est pour l'instant en standby : Azure Storage n'accepte pas le format de backup des Kemp. C'est ce qui a motivé un projet parallèle "Kill KEMP" visant à sortir ces équipements du périmètre ; une fois cette dépendance levée, la bascule vers Azure Storage pourra reprendre.
Points clés
4 h/mois → 0 min
Le temps de backup manuel a été réduit à zéro, le script s'exécute de façon planifiée sans intervention.
Fiabilité et traçabilité
Les backups successifs permettent de détecter toute dérive de configuration non planifiée sur le parc.
Réponse rapide en cas de besoin
En cas de remplacement d'urgence ou de rollback, la configuration est disponible immédiatement.
Mon regard critique
Ce projet a validé ma capacité à lier développement et réseau, ce qu'on appelle aujourd'hui le NetDevOps. Il est né d'un risque concret et non couvert : en cas de remplacement d'urgence d'un équipement, on n'avait aucune config disponible. J'ai proposé la solution, développé le script, et mis en production sans aide directe. Le script tourne chaque weekend en autonomie depuis.
Si c'était à refaire, j'aurais renforcé la logique de validation dès le départ. La baseline fonctionne par comptage de fichiers : si le répertoire contient X+1 fichiers après l'exécution, le backup est considéré comme réussi. C'est efficace, mais ça ne détecte pas un fichier tronqué ou corrompu. Une prochaine version intégrerait une vérification de la structure JSON et un contrôle de taille minimale par équipement, pour garantir que le fichier est réellement exploitable et pas juste présent sur le FTP.
Points clés
Démarche autonome NetDevOps
Risque non couvert identifié, solution proposée et déployée sans aide, de l'analyse du besoin à la mise en production et à la présentation à l'équipe.
Limite à corriger : baseline par comptage
La baseline détecte un fichier manquant mais pas un fichier tronqué ou corrompu. Une prochaine version inclurait une vérification de structure JSON et un contrôle de taille minimale.
Prochaine étape conditionnée
Migration vers Azure Storage bloquée par le format Kemp, ce qui a motivé le projet parallèle 'Kill KEMP'. La bascule reprendra une fois cette dépendance levée.
Compétences mises en œuvre
Points clés
Automatisation & scripting
Python 3.x, API REST Meraki et Palo Alto, task scheduler, variables d'environnement, monitoring par mail.
Autonomie & initiative
Projet initié et mené de bout en bout en autonomie, de l'identification du besoin au déploiement en production.
Gestion d'équipements réseau
Connaissance approfondie des API Meraki, Palo Alto et Kemp pour l'extraction de configurations.
