
Image by: Brett Sayles
Pourquoi automatiser la configuration des commutateurs Cisco ?
Imaginez devoir configurer manuellement 50 commutateurs Cisco après une panne réseau majeure. Selon Cisco, 95% des interruptions réseau sont causées par des erreurs humaines lors de configurations répétitives. L’automatisation n’est plus un luxe mais une nécessité pour les ingénieurs réseau. Ce tutoriel vous montrera comment concevoir un script Python robuste pour automatiser la configuration de commutateurs Cisco, éliminant les erreurs manuelles et gagnant un temps précieux. Vous apprendrez à maîtriser les bibliothèques spécialisées, sécuriser vos accès et gérer les imprévus efficacement.
L’automatisation apporte des bénéfices tangibles :
- Réduction de 70% du temps de déploiement (étude Gartner)
- Diminution de 80% des erreurs de configuration
- Homogénéité des paramètres sur l’ensemble du parc
Un cas réel : un technicien réseau a automatisé la configuration VLAN sur 200 switches, passant de 8 heures à 15 minutes d’intervention. Cette efficacité transforme radicalement la gestion d’infrastructures critiques.
Présentation des bibliothèques Netmiko et Napalm
Deux bibliothèques Python dominent l’automatisation réseau : Netmiko et Napalm. Netmiko, extension de Paramiko, simplifie les connexions SSH aux équipements. Napalm (Network Automation and Programmability Abstraction Layer) offre une couche d’abstraction unifiée avec des fonctions avancées. Voici leur comparaison technique :
| Fonctionnalité | Netmiko | Napalm |
|---|---|---|
| Protocoles supportés | SSH, Telnet | SSH, API REST |
| Constructeurs de commandes | Bas niveau | Abstraction multi-vendor |
| Rollback automatique | Non | Oui |
| Temps d’apprentissage | 1-2 jours | 3-5 jours |
| Support Cisco IOS | Excellent | Bon |
Netmiko excelle pour l’envoi direct de commandes CLI, tandis que Napalm brille dans les opérations complexes comme les sauvegardes de configuration ou les comparaisons d’états. Pour débuter l’automatisation de commutateurs Cisco, Netmiko est plus accessible selon l’expert Kirk Byers, créateur de la bibliothèque. Napalm nécessite une courbe d’apprentissage plus raide mais offre une gestion unifiée des équipements multi-vendeurs.
Cas d’utilisation typiques
Avec Netmiko :
- Configuration basique VLAN/ports
- Collecte d’informations (show interfaces, show version)
- Déploiement massif de configurations similaires
Avec Napalm :
- Gestion des configurations avec validation
- Surveillance des performances réseau
- Intégration avec des outils comme Ansible
Mise en place d’un script Python avec Netmiko
Implémentons un script d’automatisation de base pour configurer un commutateur Cisco 2960. Première étape : installer Netmiko via pip (pip install netmiko). Créez un fichier configurateur.py avec cette structure :
from netmiko import ConnectHandler
cisco_switch = {
‘device_type’: ‘cisco_ios’,
‘host’: ‘192.168.1.1’,
‘username’: ‘admin’,
‘password’: ‘secret’,
‘port’: 22
}
connection = ConnectHandler(**cisco_switch)
Pour configurer un VLAN et activer un port :
- Préparez les commandes dans une liste Python
- Envoyez-les avec
connection.send_config_set() - Toujours fermer la session avec
connection.disconnect()
Exemple complet :
config_commands = [‘vlan 100’, ‘name Serveurs’, ‘interface gig0/1’, ‘switchport access vlan 100’]
output = connection.send_config_set(config_commands)
print(output)
connection.disconnect()
Ce script basique réduit une tâche récurrente de 10 minutes à 2 secondes. Pour gérer plusieurs appareils, utilisez une boucle sur un fichier CSV d’adresses IP. Consultez notre guide complet sur Python réseau pour des cas complexes.
Gestion sécurisée des identifiants et des erreurs
Stocker des mots de passe en clair dans un script est une faille critique. Utilisez plutôt :
- Le module getpass pour saisie interactive
- Le chiffrement avec cryptography.fernet
- Les variables d’environnement (dotenv)
Implémentation sécurisée type :
from os import getenv
from dotenv import load_dotenv
load_dotenv()
password = getenv(‘SWITCH_PASSWORD’)
Pour la gestion d’erreurs, encapsulez les opérations dans des blocs try/except :
try:
connection.send_command(‘bad_command’)
except NetmikoTimeoutException:
print(« Échec de connexion »)
except NetmikoAuthenticationException:
print(« Erreur d’authentification »)
Ajoutez toujours un timeout (ex: global_delay_factor=2) pour éviter les blocages. Un bon script doit gérer ces scénarios :
- Équipement non joignable
- Commande non supportée
- Dépassement de capacité mémoire
Des outils comme Python logging journalisent les incidents pour audit. Notre guide de bonnes pratiques couvre ces techniques en détail.
Avancé : Utilisation de Napalm pour une gestion plus robuste
Napalm apporte une approche déclarative à l’automatisation de commutateurs Cisco. Après l’installation (pip install napalm), utilisez les drivers IOS :
from napalm import get_network_driver
driver = get_network_driver(‘ios’)
device = driver(‘192.168.1.1’, ‘admin’, ‘secret’)
device.open()
Avantages clés :
- Comparaison de configurations avec
device.compare_config() - Rollback automatique en cas d’échec
- Collecte structurée de données (JSON)
Exemple de déploiement avec validation :
device.load_merge_candidate(filename=’new_config.txt’)
diff = device.compare_config()
if diff:
print(diff)
device.commit_config()
else:
device.discard_config()
Pour les environnements complexes, intégrez Napalm avec Ansible ou SaltStack. Cela permet des déploiements à l’échelle du datacenter avec des playbooks réutilisables. Napalm supporte aussi les appareils Juniper et Arista, idéal pour les réseaux multi-vendeurs.
Frequently asked questions
Quelle bibliothèque choisir entre Netmiko et Napalm pour débuter ?
Netmiko est recommandée pour les débutants grâce à sa simplicité d’utilisation et sa documentation abondante. Commencez par automatiser des tâches ponctuelles (sauvegarde de config, déploiement VLAN) avant de passer à Napalm pour des workflows complexes.
Comment tester mes scripts sans risquer d’affecter le réseau ?
Utilisez GNS3 ou Cisco Packet Tracer pour simuler un environnement réseau complet. Pour les tests en production, appliquez toujours le mode dry-run (–dry-run dans Napalm) et commencez hors des heures de pointe. Les labs virtuels EVE-NG sont aussi excellents pour valider vos scripts.
Python est-il suffisant pour automatiser un réseau entier ?
Python est idéal pour des automatisations ciblées, mais pour les grands réseaux, intégrez-le à des outils comme Ansible ou Terraform. Ces plateformes gèrent mieux l’orchestration, l’inventaire et les dépendances entre équipements, comme le recommande l’approche d’automatisation réseau.
Comment sécuriser l’accès aux commutateurs dans mes scripts ?
Privilégiez les comptes à privilèges limités avec accès uniquement aux commandes nécessaires. Combine cela avec : 1) Chiffrement AES-256 des identifiants, 2) Rotation automatique des mots de passe, 3) Authentification par clé SSH plutôt que mots de passe. Jamais de credentials en clair dans le code !
Conclusion
L’automatisation Python des commutateurs Cisco via Netmiko et Napalm transforme radicalement l’efficacité des ingénieurs réseau. En maîtrisant les techniques présentées – connexion sécurisée, gestion d’erreurs et déploiement déclaratif – vous réduirez les erreurs de configuration jusqu’à 80% tout en accélérant les déploiements. Commencez par automatiser une tâche récurrente simple (comme les sauvegardes de configuration), puis étendez progressivement vos scripts à des workflows complexes. Partagez vos expériences d’automatisation dans les commentaires et consultez notre bibliothèque de scripts réseau pour gagner des heures de travail chaque semaine !
