syedur_rahman.vrf_command
vrf_command
Ce rôle Ansible pour les réseaux permet d'envoyer des commandes réseau sensibles au VRF aux appareils réseau de manière dynamique. Actuellement, cela est supporté sur les appareils IOS / EOS / NXOS.
Le rôle vise à améliorer le comportement par défaut des modules suivants :
ios_command
nxos_command
eos_command
Démonstration
Voir Exemple de Playbook 2 pour les détails du playbook de cette démonstration.
Exigences
Aucune.
Variable du rôle
La valeur suivante doit être mise à jour en fonction de vos besoins (voir defaults/main.yml
):
vrf_command_list:
- "show ip route vrf <vrf>"
- "show version"
La vrf_command_list
doit être mise à jour pour inclure toutes les commandes que vous souhaitez exécuter sur vos appareils réseau. Pour faire en sorte qu'une commande s'affiche de manière sensible au VRF, la syntaxe <vrf>
doit être utilisée, comme montré ci-dessus.
Le <vrf>
dans la commande sera remplacé par les VRFs disponibles sur l'appareil, y compris la table globale. Par exemple, si un appareil a les VRFs dev
et prod
, la commande show ip route vrf <vrf>
sera dynamiquement développée comme suit :
show ip route
show ip route vrf dev
show ip route vrf prod
Notez que vous pouvez également exécuter des commandes régulières non liées au VRF via ce rôle.
Variable de sortie
Le rôle génère une variable de sortie personnalisée pour la commodité de l'utilisateur appelée vrf_command_output
.
Le format de la structure de données est le suivant :
vrf_command_output:
- command: "show ip route vrf dev"
failed: False
output: "...77.77.77.0 est directement connecté, FastEthernet1/0\n..." (omitted)
- command: "show blah blah"
failed: True
output: "...% Entrée invalide détectée à..." (omitted)
La structure de données retourne une liste de valeurs. Dans chaque élément de la liste, il y a trois clés.
command
- La commande affichée qui a été exécutée sur l'appareil réseau.failed
- Booléen oùtrue
signifie que la commande a échoué etfalse
signifie que la commande a été exécutée avec succès.output
- La sortie de la commande affichée.
Exemple de Playbook 1
L'exemple de playbook ci-dessous démontre l'utilisation basique du rôle.
- hosts: all
vars:
vrf_command_list:
- "show ip interface brief vrf <vrf>"
- "show ip route vrf <vrf>"
- "show interface status"
- "show version"
roles:
- syedur_rahman.vrf_command
Exemple de Playbook 2
L'exemple de playbook ci-dessous montre comment manipuler le vrf_command_output
pour le sauvegarder dans des fichiers texte.
- hosts: all
vars:
vrf_command_list:
- "show ip route vrf <vrf>"
roles:
- syedur_rahman.vrf_command
- hosts: localhost
tasks:
- template:
src: "show_command.j2"
dest: "{{ item }}.txt"
loop: "{{ groups['all'] }}"
Avec le modèle show_command.j2
ci-dessous.
{% for show_command_info in hostvars[item]['vrf_command_output'] %}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['command'] }}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['output'] }}
{% endfor %}
Cela donne le type de fichier de sortie suivant par appareil.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route vrf management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Table de routage IP pour le VRF "management"
'*' désigne le meilleur prochain saut unicast
'**' désigne le meilleur prochain saut multicast
'[x/y]' désigne [préférence/métrique]
'%<string>' dans la sortie via désigne le VRF <string>
192.168.12.0/24, ubest/mbest: 1/0, attaché
*via 192.168.12.135, mgmt0, [0/0], 05:12:12, direct
192.168.12.135/32, ubest/mbest: 1/0, attaché
*via 192.168.12.135, mgmt0, [0/0], 05:12:12, local
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Table de routage IP pour le VRF "default"
'*' désigne le meilleur prochain saut unicast
'**' désigne le meilleur prochain saut multicast
'[x/y]' désigne [préférence/métrique]
'%<string>' dans la sortie via désigne le VRF <string>
2.2.2.0/24, ubest/mbest: 1/0, attaché
*via 2.2.2.2, Lo100, [0/0], 05:12:28, direct
2.2.2.2/32, ubest/mbest: 1/0, attaché
*via 2.2.2.2, Lo100, [0/0], 05:12:28, local
2.3.4.0/24, ubest/mbest: 1/0, attaché
*via 2.3.4.5, Lo23, [0/0], 05:12:28, direct
2.3.4.5/32, ubest/mbest: 1/0, attaché
*via 2.3.4.5, Lo23, [0/0], 05:12:28, local
Licence
MIT
Informations sur l'auteur
Ce rôle a été créé en 2020 par Syedur Rahman.
VRF-aware network commands.
ansible-galaxy install syedur_rahman.vrf_command