syedur_rahman.vrf_command

comando_vrf

Ansible Galaxy

Este rol de Ansible Network permite enviar comandos de red conscientes de VRF a dispositivos de red de forma dinámica. Actualmente, esto es compatible con dispositivos IOS / EOS / NXOS.

El rol está destinado a mejorar el comportamiento por defecto de los siguientes módulos:

  • ios_command
  • nxos_command
  • eos_command

Demostración

Consulta el Ejemplo de Playbook 2 para los detalles del playbook en esta demostración.

Ejemplo de Playbook 2

Requisitos

Ninguno.

Variable del Rol

El siguiente valor debe actualizarse según tus requisitos (ver defaults/main.yml):

vrf_command_list:
  - "show ip route vrf <vrf>"
  - "show version"

La vrf_command_list debe actualizarse para incluir todos los comandos que deseas ejecutar en tus dispositivos de red. Para hacer que un comando de muestra se comporte de manera consciente de VRF, se debe usar la sintaxis <vrf> como se muestra arriba.

El <vrf> en el comando será reemplazado por los VRFs disponibles en el dispositivo, incluida la tabla global. Por ejemplo, si un dispositivo tiene los VRFs dev y prod, el comando show ip route vrf <vrf> se expandirá dinámicamente a lo siguiente:

  • show ip route
  • show ip route vrf dev
  • show ip route vrf prod

Ten en cuenta que también puedes ejecutar comandos regulares no relacionados con VRF a través de este rol.

Variable de Salida

El rol genera una variable de salida personalizada para conveniencia del usuario llamada vrf_command_output.

El formato de la estructura de datos es el siguiente:

vrf_command_output:
  - command: "show ip route vrf dev"
      failed: False
      output: "...77.77.77.0 está directamente conectado, FastEthernet1/0\n..." (omitido)
  - command: "show blah blah"
      failed: True
      output: "...% Entrada inválida detectada en..." (omitido)

La estructura de datos devuelve una lista de valores. Dentro de cada elemento de la lista hay tres claves.

  • command - El comando de muestra que se ejecutó en el dispositivo de red.
  • failed - Booleano donde true indica que el comando falló y false que el comando se ejecutó con éxito.
  • output - La salida del comando de muestra.

Ejemplo de Playbook 1

El siguiente ejemplo de playbook demuestra el uso básico de cómo se puede utilizar el rol.

- 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

Ejemplo de Playbook 2

El siguiente ejemplo de playbook demuestra cómo manipular la vrf_command_output para volcar en archivos de texto.

- 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'] }}"

Con lo siguiente como la plantilla show_command.j2.

{% for show_command_info in hostvars[item]['vrf_command_output'] %}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['command'] }}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['output'] }}
{% endfor %}

Esto resulta en el siguiente tipo de archivo de salida por dispositivo.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route vrf management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tabla de Rutas IP para el VRF "management"
'*' denota el mejor siguiente salto unicast
'**' denota el mejor siguiente salto multicast
'[x/y]' denota [preferencia/métrica]
'%<cadena>' en la salida vía denota VRF <cadena>

192.168.12.0/24, ubest/mbest: 1/0, adjunto
    *via 192.168.12.135, mgmt0, [0/0], 05:12:12, directo
192.168.12.135/32, ubest/mbest: 1/0, adjunto
    *via 192.168.12.135, mgmt0, [0/0], 05:12:12, local

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tabla de Rutas IP para el VRF "default"
'*' denota el mejor siguiente salto unicast
'**' denota el mejor siguiente salto multicast
'[x/y]' denota [preferencia/métrica]
'%<cadena>' en la salida vía denota VRF <cadena>

2.2.2.0/24, ubest/mbest: 1/0, adjunto
    *via 2.2.2.2, Lo100, [0/0], 05:12:28, directo
2.2.2.2/32, ubest/mbest: 1/0, adjunto
    *via 2.2.2.2, Lo100, [0/0], 05:12:28, local
2.3.4.0/24, ubest/mbest: 1/0, adjunto
    *via 2.3.4.5, Lo23, [0/0], 05:12:28, directo
2.3.4.5/32, ubest/mbest: 1/0, adjunto
    *via 2.3.4.5, Lo23, [0/0], 05:12:28, local

Licencia

MIT

Información del Autor

Este rol fue creado en 2020 por Syedur Rahman.

Instalar
ansible-galaxy install syedur_rahman.vrf_command
Licencia
mit
Descargas
87
Propietario
A network engineer with a passion for all things automation.