syedur_rahman.vrf_command

vrf_command

Ansible Galaxy

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.

Exemple Playbook 2

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é et false 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.

Installer
ansible-galaxy install syedur_rahman.vrf_command
Licence
mit
Téléchargements
87
Propriétaire
A network engineer with a passion for all things automation.