syedur_rahman.vrf_command
comando_vrf
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.
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 dondetrue
indica que el comando falló yfalse
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.
VRF-aware network commands.
ansible-galaxy install syedur_rahman.vrf_command