Automatisation réseau et APIs
Définition
L'automatisation réseau consiste à utiliser des outils logiciels pour configurer, provisionner, tester et gérer les équipements réseau sans intervention manuelle CLI. Elle repose sur des APIs (Application Programming Interfaces) qui exposent les fonctionnalités des équipements de manière programmable. Les protocoles clés sont NETCONF, RESTCONF et les APIs REST, avec des modèles de données YANG.
Contexte
La gestion manuelle par CLI ne passe pas à l'échelle dans les réseaux modernes (centaines/milliers d'équipements). L'automatisation apporte cohérence, rapidité, reproductibilité et réduit les erreurs humaines. La certification CCST attend du candidat qu'il comprenne les concepts fondamentaux de l'automatisation et du réseau programmable.
Détails techniques
Gestion traditionnelle vs automatisée
| Critère |
CLI manuelle |
Automatisé |
| Vitesse |
Lente (équipement par équipement) |
Rapide (en parallèle) |
| Cohérence |
Risque d'erreur humaine |
Configuration identique garantie |
| Reproductibilité |
Difficile |
Un script = même résultat à chaque exécution |
| Scalabilité |
~10 équipements max |
Centaines/milliers |
| Audit |
Dépend de la documentation |
Automatique (version control, logs) |
APIs réseau — types
| API |
Transport |
Format |
Standard |
| SNMP (legacy) |
UDP 161/162 |
MIB |
IETF |
| NETCONF |
SSH (TCP 830) |
XML |
IETF RFC 6241 |
| RESTCONF |
HTTPS |
JSON ou XML |
IETF RFC 8040 |
| gNMI (gRPC Network Management Interface) |
gRPC / HTTP/2 |
Protobuf |
OpenConfig |
| REST API propre |
HTTPS |
JSON |
Propriétaire (Cisco DNA Center, Meraki) |
YANG — modèle de données
YANG (Yet Another Next Generation) est un langage de modélisation qui décrit la structure des données de configuration et d'état d'un équipement réseau :
module ietf-interfaces {
container interfaces {
list interface {
key "name";
leaf name { type string; }
leaf type { type identityref { base interface-type; } }
leaf enabled { type boolean; default true; }
}
}
}
Les modèles YANG sont utilisés par NETCONF et RESTCONF pour structurer les requêtes et les réponses.
NETCONF — opérations
| Opération |
Description |
<get> |
Lire la configuration et l'état opérationnel |
<get-config> |
Lire uniquement la configuration |
<edit-config> |
Modifier la configuration |
<copy-config> |
Copier une configuration (running → startup) |
<lock> / <unlock> |
Verrouiller la config pour éviter les modifications concurrentes |
<commit> |
Appliquer les changements (candidate → running) |
RESTCONF — méthodes HTTP
| Méthode |
Opération |
Équivalent NETCONF |
GET |
Lire |
<get> |
POST |
Créer |
<edit-config> (merge) |
PUT |
Créer ou remplacer |
<edit-config> (replace) |
PATCH |
Modifier partiellement |
<edit-config> (merge) |
DELETE |
Supprimer |
<edit-config> (delete) |
Outils d'automatisation
| Outil |
Type |
Description |
| Ansible |
Agentless, YAML |
Playbooks déclaratifs, modules réseau (ios_config, nxos_config) |
| Python + Netmiko |
Script |
Bibliothèque Python pour SSH vers des équipements réseau |
| Python + NAPALM |
Script |
Abstraction multi-vendeur pour configuration réseau |
| Terraform |
IaC |
Infrastructure as Code pour cloud et réseau (providers Cisco, AWS) |
| Cisco DNA Center |
Plateforme |
Intent-based networking — API REST pour automatisation campus |
| Cisco Meraki Dashboard API |
API REST |
Gestion cloud des équipements Meraki |
Architecture SDN (Software-Defined Networking)
┌───────────────────────────┐
│ Application Layer │ (Dashboard, scripts, orchestrateurs)
│ (Northbound API) │
├───────────────────────────┤
│ Control Layer │ (Contrôleur SDN : Cisco DNA Center, OpenDaylight)
│ (Southbound API) │
├───────────────────────────┤
│ Infrastructure Layer │ (Switches, routeurs, APs)
└───────────────────────────┘
| Interface |
Direction |
Exemples |
| Northbound API |
Contrôleur → Applications |
REST API |
| Southbound API |
Contrôleur → Équipements |
NETCONF, OpenFlow, CLI |
Exemple concret
Scénario : un administrateur doit configurer un VLAN 50 (« Serveurs ») sur 40 switches d'accès Catalyst 9300.
- Sans automatisation : se connecter en SSH à chaque switch, taper les commandes → ~2 heures, risque d'erreur.
- Avec Ansible : un playbook YAML de 15 lignes :
- name: Créer VLAN 50 sur tous les switches
hosts: access_switches
gather_facts: no
tasks:
- name: Configurer VLAN 50
cisco.ios.ios_vlans:
config:
- vlan_id: 50
name: Serveurs
state: active
state: merged
ansible-playbook vlan50.yml → les 40 switches sont configurés en parallèle en ~30 secondes.
- Ansible génère un rapport de changements (changed/ok/failed) pour chaque switch.
- Le playbook est versionné dans Git → auditabilité complète.