Module 1 : Fondations DevOps – Versioning et collaboration avec Git & GitHub
Partie théorique
Pourquoi versionner : traçabilité, retour arrière, travail d’équipe. VCS centralisé vs distribué.
Modèle interne de Git : commits, arbre, blobs, graphe (DAG), références et HEAD. Les trois zones : working directory, index (staging), dépôt.
Local vs distant : remote, origin/upstream, clone, fetch vs pull, push, fork.
Branches et stratégies de branching : GitHub Flow, GitFlow, trunk-based.
Intégration des changements : merge (fast-forward, 3-way) vs rebase, origine des conflits.
Qualité de l’historique : commits atomiques, Conventional Commits, tags et versionnement sémantique.
Collaboration sur GitHub : issues, labels, milestones, Pull Requests, revue de code, CODEOWNERS.
Gouvernance et sécurité : protection de branches (rulesets), status checks obligatoires, commits signés, gestion des secrets (.gitignore, secret scanning).
Travaux pratiques
TP 1 : Git en local – Cycle de vie d’un dépôt
Initialisation, staging, commits, lecture de l’historique (log, diff, show), annulation (restore, reset, revert) et .gitignore. Fil rouge : versionner des fichiers de configuration d’équipements réseau (exports MikroTik, configs Cisco).
TP 4 : Pull Requests, revue de code et protection de branches
Workflow d’équipe complet en binôme : PR avec templates, revues croisées, CODEOWNERS. Règles de protection de main : reviews obligatoires, status checks, historique linéaire, commits signés, interdiction du force-push.
Module 2 : Fondamentaux des API REST et de l’embarqué
Partie théorique
De la CLI manuelle à l’API : limites de la configuration à la main, plan de gestion des équipements.
TP 8 : OpenWrt – L’écosystème IoT et Edge
Découverte du micro-bus système : interrogation des interfaces et modification de la configuration réseau via des requêtes JSON-RPC (ubus) en Python.
Module 3 : Standards industriels (YANG) et approche Cloud/SDN
Partie théorique
Programmabilité réseau : plans de gestion, de contrôle et de données. Limites de SNMP et de la CLI.
Modélisation des données avec YANG : modules, containers, lists, leafs. Modèles natifs vs OpenConfig.
TP 13 : Netmiko – Le pont vers le réseau Legacy
Automatisation CLI via SSH : extraction (scraping) d’états opérationnels et configuration conditionnelle pour les équipements dépourvus d’API modernes.
TP 14 : Nornir – Orchestration Multi-Constructeurs
Création d’un script d’orchestration global en pur Python pour exécuter des tâches en parallèle sur une topologie hétérogène (par exemple : collecte d’inventaire simultanée sur MikroTik, VyOS et Cisco).
Module 5 : NetSecDevOps et Sécurité Automatisée
Partie théorique
DevSecOps appliqué au réseau : shift-left, étapes d’un pipeline CI/CD (lint, validation, tests, déploiement).
Firewall-as-Code : tests de non-régression sur les flux, revue et déploiement contrôlés (lien avec les PR et les status checks du Module 1).
Zero Trust : principes, ZTNA vs VPN classique, réseau overlay WireGuard, moindre privilège.
Micro-segmentation Kubernetes : NetworkPolicy, default deny, sélecteurs de labels, rôle du CNI.
Compliance-as-Code : benchmarks de sécurité (CIS), audit continu, rapports automatisés.
Travaux pratiques
TP 15 : CI/CD & Firewall-as-Code (FaC) avec FortiGate
Intégration de la configuration d’un pare-feu dans un pipeline DevOps (GitLab CI, GitHub Actions ou Jenkins). Automatisation de la validation syntaxique, exécution de tests de non-régression sur les ouvertures de flux réseau, et déploiement continu des règles via l’API REST FortiOS.
TP 16 : Déploiement Zero Trust Network Access (ZTNA) avec NetBird
Automatisation d’une architecture réseau overlay sécurisée (basée sur WireGuard). Utilisation des API REST (par exemple, avec NetBird) pour provisionner dynamiquement des pairs, gérer les clés de routage, et appliquer des politiques de contrôle d’accès strictes entre les serveurs.
TP 17 : Réponse Automatisée aux Incidents (Auto-Remédiation)
Création d’un script Python agissant comme un outil SOAR (Security Orchestration, Automation, and Response). Écoute d’alertes de sécurité réseau (via un webhook depuis un IDS/IPS) et interaction avec l’API REST d’OPNsense pour blacklister ou isoler dynamiquement une adresse IP compromise.
TP 18 : Micro-segmentation et Sécurité des Réseaux Kubernetes
Automatisation de la sécurité réseau pour les environnements cloud-native. Déploiement programmatique de Network Policies Kubernetes en Python pour restreindre les flux de trafic entrants et sortants, isolant ainsi efficacement les communications inter-microservices.
TP 19 : Compliance-as-Code (Audit Réseau Continu)
Développement d’un scanner d’audit en Python qui interroge régulièrement l’API d’un équipement (MikroTik, Cisco) pour vérifier que la configuration respecte les normes de sécurité de l’entreprise : détection des services d’administration exposés sur internet, vérification de la robustesse des tunnels IPsec, et génération d’un rapport automatisé.