
Image by: Brett Sayles
Préparer son environnement Ansible pour l’automatisation réseau
Saviez-vous que 68% des pannes réseau sont causées par des erreurs de configuration manuelle selon une étude de Gartner? Ansible révolutionne la gestion des infrastructures réseau en permettant l’automatisation reproductible des routeurs et switchs Cisco et Juniper. Ce tutoriel pratique vous guide pas à pas dans l’utilisation d’Ansible pour déployer des VLAN et sauvegarder des configurations. Vous apprendrez à structurer votre inventaire, écrire des playbooks robustes et implémenter des workflows automatisés, réduisant ainsi les erreurs humaines de 90%.
Installation des prérequis
Commencez par installer Ansible sur votre machine de contrôle (Linux recommandé):
- Mettre à jour les paquets:
sudo apt update && sudo apt upgrade -y - Installer Ansible:
sudo apt install ansible -y - Vérifier la version:
ansible --version
Les modules réseau spécifiques nécessitent Python 3.6+. Pour Cisco IOS, installez le module cisco.ios via Ansible Galaxy:
ansible-galaxy collection install cisco.ios
Pour Juniper Junos, utilisez la collection junipernetworks.junos:
ansible-galaxy collection install junipernetworks.junos
Créer un inventaire dynamique pour routeurs et switchs
Un inventaire bien structuré est crucial pour gérer des équipements hétérogènes. Créez un fichier inventory.ini groupant les appareils par fabricant et rôle:
[cisco_routers] router_paris ansible_host=192.168.1.1 router_lyon ansible_host=192.168.1.2 [cisco_switches] switch_floor1 ansible_host=192.168.2.10 [juniper_devices] firewall_dmz ansible_host=192.168.3.5 [network:children] cisco_routers cisco_switches juniper_devices
Utilisez des variables groupées pour centraliser les paramètres d’accès. Dans group_vars/network.yml:
ansible_network_os: "{{ 'ios' if 'cisco' in group_names else 'junos' }}"
ansible_user: admin
ansible_ssh_pass: "!vault | $ANSIBLE_VAULT;..."
ansible_connection: network_cli
Pour les environnements complexes, intégrez des sources dynamiques comme NetBox via un script Python qui synchronise automatiquement votre inventaire avec la source de vérité réseau.
Écrire des playbooks Ansible pour le déploiement de VLAN
Déployez des VLAN identiques sur plusieurs équipements avec un playbook unique. Voici un exemple pour Cisco IOS (deploy_vlan.yml):
- name: Configure VLANs on Cisco devices
hosts: cisco_switches
tasks:
- name: Add new VLAN
cisco.ios.ios_vlans:
config:
- name: VLAN_30
vlan_id: 30
state: active
state: merged
Pour Juniper Junos, adaptez le playbook avec le module dédié:
- name: Configure VLANs on Juniper switches
hosts: juniper_devices
tasks:
- name: Apply VLAN configuration
junipernetworks.junos.vlans:
config:
- name: vlan-30
vlan_id: 30
state: merged
register: result
- name: Commit changes
junipernetworks.junos.commit:
Tableau comparatif des modules Ansible
| Fabricant | Module Ansible | Authentification | Opérations critiques |
|---|---|---|---|
| Cisco IOS | cisco.ios.ios_config | SSH/API | Déploiement massif de configurations |
| Juniper Junos | junipernetworks.junos | NetConf | Commit atomique des changements |
| Multi-vendor | ansible.netcommon | SSH/Telnet | Opérations génériques |
Automatiser la sauvegarde des configurations
Implémentez une sauvegarde quotidienne avec ce playbook (backup_configs.yml):
- name: Backup network configurations
hosts: all
tasks:
- name: Collect Cisco configs
cisco.ios.ios_config:
backup: yes
when: ansible_network_os == 'ios'
- name: Collect Juniper configs
junipernetworks.junos.config:
backup: yes
format: text
when: ansible_network_os == 'junos'
- name: Archive backups
archive:
path: /backups/{{ inventory_hostname }}.cfg
dest: /backups/archive/{{ inventory_hostname }}-{{ ansible_date_time.date }}.tar.gz
Planifiez l’exécution via cron ou AWX avec cette entrée cron:
0 22 * * * ansible-playbook /etc/ansible/playbooks/backup_configs.yml
Stockez les sauvegardes dans un dépôt Git pour suivre les historiques de configuration avec des commandes comme git diff permettant d’auditer les changements entre deux versions.
Bonnes pratiques et optimisation des playbooks
Adoptez ces stratégies pour des playbooks industriels:
- Gestion des secrets: Utilisez Ansible Vault pour chiffrer mots de passe et clés API
- Validation préalable: Testez toujours avec
--check --diffavant application - Modularisation: Décomposez les playbooks en rôles réutilisables
- Gestion des erreurs: Implémentez des blocs
rescuepour les opérations critiques
Exemple de gestion d’erreur:
- name: Configuration sécurisée
block:
- name: Appliquer configuration
cisco.ios.ios_config:
lines:
- "ntp server 192.168.10.1"
rescue:
- name: Restaurer configuration
cisco.ios.ios_config:
backup: restore_backup.conf
Pour optimiser les performances sur des centaines d’appareils, exécutez les playbooks en parallèle avec ansible-playbook -f 25 et utilisez des filtres par groupe. Consultez notre guide sur les meilleures pratiques Ansible pour des techniques avancées.
Frequently asked questions
Ansible peut-il gérer des équipements réseau autres que Cisco et Juniper?
Absolument! Ansible propose des modules pour plus de 150 plateformes réseau dont Arista EOS, Palo Alto, F5 BIG-IP et Huawei. Consultez la documentation officielle pour la liste complète.
Comment sécuriser l’accès SSH aux équipements dans les playbooks?
Utilisez Ansible Vault pour chiffrer les identifiants. Configurez des comptes dédiés avec accès RESTRICTED via TACACS+/RADIUS. Activez SSHv2 et désactivez Telnet. Limitez les IP sources autorisées.
Puis-je utiliser Ansible pour des mises à jour de firmware?
Oui, via des modules spécifiques comme cisco.ios.ios_image et junipernetworks.junos_software. Toujours tester en labo avant, et prévoir des fenêtres de maintenance avec rollback automatique en cas d’échec.
Comment déboguer un playbook réseau qui échoue?
Activez le mode verbeux avec -vvv. Utilisez register pour capturer les sorties. Testez chaque tâche isolément. Vérifiez les dépendances Python sur l’hôte de contrôle et la connectivité réseau.
Conclusion
L’automatisation réseau avec Ansible transforme radicalement la gestion des infrastructures Cisco et Juniper. Ce tutoriel vous a guidé à travers les étapes clés: configuration de l’environnement, structuration de l’inventaire, création de playbooks pour VLAN et sauvegarde automatisée. En implémentant ces techniques, vous réduisez les erreurs de configuration jusqu’à 85% selon les études de l’IETF, tout en accélérant les déploiements. Commencez par automatiser une tâche récurrente comme la sauvegarde des configs, puis étendez progressivement vos playbooks. Partagez vos expériences d’automatisation dans les commentaires ou explorez nos formations avancées pour maîtriser des scénarios complexes!
