Lisez ceci dans d’autres langues : English,
日本語,
Español,
Français.
Si vous utilisez un environnement composé uniquement de routeurs Cisco (les quatre routeurs sont des routeurs Cisco IOS), veuillez consulter ces instructions.
Démonstration de l’utilisation des modules de ressources réseau Ansible.
Les modules de ressources réseau Ansible simplifient et standardisent la gestion de différents dispositifs réseau. Les dispositifs réseau séparent leur configuration en sections (comme les interfaces et les VLANs) applicables à un service réseau.
Les modules de ressources offrent une expérience uniforme sur différents dispositifs réseau. Par exemple, le module VLANs fonctionne de manière identique pour les modules suivants :
arista.eos.eos_vlans
cisco.ios.ios_vlans
cisco.nxos.nxos_vlans
cisco.iosxr.iosxr_vlans
junipernetworks.junos.junos_vlans
Configurer des VLANs sur des dispositifs réseau est une tâche très courante, et des erreurs de configuration peuvent causer des problèmes et des interruptions. Les configurations VLAN sont souvent identiques sur plusieurs commutateurs réseau, ce qui en fait un cas d’utilisation parfait pour l’automatisation.
Cet exercice couvrira :
state: merged
state: gathered
Connectez-vous à un commutateur Arista et vérifiez la configuration actuelle des VLANs.
Depuis le terminal du nœud de contrôle, utilisez ssh rtr2
et tapez enable
$ ssh rtr2
Last login: Wed Sep 1 13:44:55 2021 from 44.192.105.112
rtr2>enable
Utilisez la commande show vlan
pour examiner la configuration des VLANs :
rtr2#show vlan
VLAN Name Status Ports
----- -------------------------------- --------- -------------------------------
1 default active
Utilisez show run | s vlan
pour examiner la configuration en cours sur le dispositif Arista :
rtr2#show run | s vlan
rtr2#
Comme vous pouvez le voir dans la sortie ci-dessus, il n’y a aucune configuration VLAN en dehors du VLAN par défaut 1 (qui n’est attribué à aucun port).
Créez un nouveau fichier dans Visual Studio Code nommé resource.yml
Copiez le playbook Ansible suivant dans votre fichier resource.yml
---
- name: Configurer les VLANs
hosts: arista
gather_facts: false
tasks:
- name: Utiliser le module de ressource VLANs
arista.eos.eos_vlans:
state: merged
config:
- name: postes
vlan_id: 20
- name: serveurs
vlan_id: 30
- name: imprimantes
vlan_id: 40
- name: DMZ
vlan_id: 50
La configuration ressemblera à ceci dans Visual Studio Code :
Examinons d’abord les quatre premières lignes :
---
- name: Configurer les VLANs
hosts: arista
gather_facts: false
---
désigne qu’il s’agit d’un fichier YAML, le format utilisé pour les playbooks.name
est une description de ce que fait ce playbook.hosts: arista
exécutera ce playbook uniquement sur les dispositifs réseau Arista.gather_facts: false
désactive la collecte de facts pour ce play, activée par défaut.La seconde partie contient une tâche utilisant le module arista.eos.eos_vlans
tasks:
- name: Utiliser le module de ressource VLANs
arista.eos.eos_vlans:
state: merged
config:
- name: postes
vlan_id: 20
- name: serveurs
vlan_id: 30
- name: imprimantes
vlan_id: 40
- name: DMZ
vlan_id: 50
name:
- tout comme le play, chaque tâche a une descriptionstate: merged
- C’est le comportement par défaut des modules de ressources. Cela impose simplement que la configuration fournie existe sur le dispositif réseau.config:
- liste de la configuration VLAN fournie. Si le module était changé de arista.eos.vlans
à junipernetworks.junos.vlans
, il fonctionnerait de manière identique. Cela permet aux ingénieurs réseau de se concentrer sur la configuration réseau plutôt que sur la syntaxe et l’implémentation du fournisseur.Exécutez le playbook avec ansible-navigator run
. Comme il n’y a qu’une seule tâche, nous pouvons utiliser --mode stdout
$ ansible-navigator run resource.yml --mode stdout
La sortie sera similaire à ceci :
$ ansible-navigator run resource.yml --mode stdout
PLAY [configurer les VLANs] ***************************************************
TASK [utiliser le module de ressource VLANs] **********************************
changed: [rtr4]
changed: [rtr2]
PLAY RECAP ********************************************************************
rtr2 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
rtr4 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Réexécuter le playbook illustrera le concept d’idempotence
$ ansible-navigator run resource.yml --mode stdout
PLAY [configurer les VLANs] ***************************************************
TASK [utiliser le module de ressource VLANs] **********************************
ok: [rtr2]
ok: [rtr4]
PLAY RECAP ********************************************************************
rtr2 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
rtr4 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Comme vous pouvez le voir dans la sortie, tout retourne ok=1
, indiquant qu’aucun changement n’a été effectué.
Connectez-vous à un commutateur Arista et vérifiez la configuration actuelle des VLANs.
Depuis le terminal du nœud de contrôle, utilisez ssh rtr2
et tapez enable
$ ssh rtr2
Last login: Wed Sep 1 13:44:55 2021 from 44.192.105.112
rtr2>enable
Utilisez la commande show vlan
pour examiner la configuration des VLANs :
rtr2#show vlan
VLAN Name Status Ports
----- -------------------------------- --------- -------------------------------
1 default active
20 postes active
30 serveurs active
40 imprimantes active
50 DMZ active
Utilisez show run | s vlan
pour examiner la configuration en cours sur le dispositif Arista :
rtr2#sh run | s vlan
vlan 20
name postes
!
vlan 30
name serveurs
!
vlan 40
name imprimantes
!
vlan 50
name DMZ
Comme vous pouvez le constater, le module de ressource a configuré le dispositif réseau Arista EOS avec la configuration fournie. Il y a maintenant cinq VLANs au total (y compris le VLAN par défaut 1).
Créez un nouveau playbook nommé gathered.yml
---
- name: Configurer les VLANs
hosts: arista
gather_facts: false
tasks:
- name: Utiliser le module de ressource VLANs
arista.eos.eos_vlans:
state: gathered
register: vlan_config
- name: Copier la configuration VLAN dans un fichier
ansible.builtin.copy:
content: ""
dest: "/_vlan.yml"
mode: "644"
La première tâche est identique sauf que state: merged
a été remplacé par state: gathered
. La clé config
n’est plus nécessaire car nous lisons la configuration au lieu de l’appliquer sur le dispositif réseau. Nous utilisons register
pour sauvegarder la sortie du module dans une variable nommée vlan_config
.
La seconde tâche copie la variable vlan_config
dans un fichier plat. Les doubles accolades indiquent une variable.
Le | to_nice_yaml
est un filtre qui transforme la sortie JSON (par défaut) en YAML.
Les variables spéciales playbook_dir
et inventory_hostname
(appelées variables magiques) indiquent respectivement le répertoire où le playbook a été exécuté et le nom du dispositif dans notre inventaire. Cela signifie que les fichiers seront sauvegardés sous ~/network-workshop/rtr2_vlan.yml
et ~/network-workshop/rtr4_vlan.yml
pour les deux dispositifs Arista.
Exécutez le playbook en utilisant ansible-navigator run
.
$ ansible-navigator run gathered.yml --mode stdout
La sortie ressemblera à ceci :
$ ansible-navigator run gathered.yml --mode stdout
PLAY [Configurer les VLANs] ***************************************************
TASK [Utiliser le module de ressource VLANs] **********************************
ok: [rtr4]
ok: [rtr2]
TASK [Copier la configuration VLAN dans un fichier] **************************
changed: [rtr2]
changed: [rtr4]
PLAY RECAP ********************************************************************
rtr2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
rtr4 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Ouvrez les fichiers nouvellement créés qui contiennent la configuration VLAN recueillie des dispositifs réseau Arista.
Les deux fichiers ont été sauvegardés sous ~/network-workshop/rtr2_vlan.yml
et ~/network-workshop/rtr4_vlan.yml
.
Voici une capture d’écran :
Les playbooks Ansible finaux sont fournis ici à titre de référence :
Vous avez terminé l’exercice 4.
Comme mentionné précédemment, seuls deux des paramètres des modules de ressource ont été couverts dans cet exercice, mais d’autres sont disponibles dans les exercices supplémentaires.