syedur_rahman.vrf_command
vrf_command
Ta rola Ansible Network umożliwia dynamiczne wysyłanie komend sieciowych z uwzględnieniem VRF do urządzeń sieciowych. Obecnie wspierane są urządzenia IOS / EOS / NXOS.
Rola ma na celu poprawienie domyślnego działania następujących modułów:
ios_command
nxos_command
eos_command
Demonstracja
Szczegóły dotyczące przykładowego playbooka można znaleźć w Przykładzie Playbooka 2.
Wymagania
Brak.
Zmienne roli
Poniższą wartość należy zaktualizować zgodnie z Twoimi wymaganiami (zobacz defaults/main.yml
):
vrf_command_list:
- "show ip route vrf <vrf>"
- "show version"
Lista vrf_command_list
powinna być zaktualizowana o wszystkie komendy, które chcesz wykonać na swoich urządzeniach sieciowych. Aby polecenie show działało w sposób uwzględniający VRF, należy użyć składni <vrf>
, jak pokazano powyżej.
Element <vrf>
w poleceniu zostanie zastąpiony dostępnych VRF-ami na urządzeniu, w tym tabelą globalną. Na przykład, jeśli urządzenie ma VRF-y dev
i prod
, polecenie show ip route vrf <vrf>
dynamicznie rozszerzy się do następujących:
show ip route
show ip route vrf dev
show ip route vrf prod
Należy zauważyć, że za pomocą tej roli można również uruchamiać zwykłe polecenia niezwiązane z VRF.
Zmienna wyjściowa
Rola generuje niestandardową zmienną wyjściową dla wygody użytkownika, zwaną vrf_command_output
.
Format struktury danych jest następujący:
vrf_command_output:
- command: "show ip route vrf dev"
failed: False
output: "...77.77.77.0 jest bezpośrednio połączony, FastEthernet1/0\n..." (pominięto)
- command: "show blah blah"
failed: True
output: "...% Wykryto nieprawidłowe dane wejściowe w..." (pominięto)
Struktura danych zwraca listę wartości. W każdej pozycji na liście znajdują się trzy klucze.
command
- Polecenie show które zostało wykonane na urządzeniu sieciowym.failed
- Wartość logiczna, gdzietrue
oznacza, że polecenie się nie powiodło, afalse
, że polecenie zostało wykonane pomyślnie.output
- Wynik polecenia show.
Przykład Playbooka 1
Poniższy przykładowy playbook demonstruje podstawowe użycie roli.
- 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
Przykład Playbooka 2
Poniższy przykładowy playbook demonstruje manipulację vrf_command_output
, aby wyeksportować do plików tekstowych.
- 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'] }}"
Poniżej znajduje się szablon show_command.j2
.
{% for show_command_info in hostvars[item]['vrf_command_output'] %}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['command'] }}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['output'] }}
{% endfor %}
Owocuje to plikiem wyjściowym dla każdego urządzenia o takiej treści.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route vrf management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tabela routingu IP dla VRF "management"
'*' oznacza najlepszy następny krok unicast
'**' oznacza najlepszy następny krok multicast
'[x/y]' oznacza [preferencja/metryka]
'%<string>' w wyjściu wirującym oznacza VRF <string>
192.168.12.0/24, ubest/mbest: 1/0, przyłączony
*via 192.168.12.135, mgmt0, [0/0], 05:12:12, bezpośrednio
192.168.12.135/32, ubest/mbest: 1/0, przyłączony
*via 192.168.12.135, mgmt0, [0/0], 05:12:12, lokalnie
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tabela routingu IP dla VRF "default"
'*' oznacza najlepszy następny krok unicast
'**' oznacza najlepszy następny krok multicast
'[x/y]' oznacza [preferencja/metryka]
'%<string>' w wyjściu wirującym oznacza VRF <string>
2.2.2.0/24, ubest/mbest: 1/0, przyłączony
*via 2.2.2.2, Lo100, [0/0], 05:12:28, bezpośrednio
2.2.2.2/32, ubest/mbest: 1/0, przyłączony
*via 2.2.2.2, Lo100, [0/0], 05:12:28, lokalnie
2.3.4.0/24, ubest/mbest: 1/0, przyłączony
*via 2.3.4.5, Lo23, [0/0], 05:12:28, bezpośrednio
2.3.4.5/32, ubest/mbest: 1/0, przyłączony
*via 2.3.4.5, Lo23, [0/0], 05:12:28, lokalnie
Licencja
MIT
Informacje o autorze
Ta rola została stworzona w 2020 roku przez Syedur Rahmana.
VRF-aware network commands.
ansible-galaxy install syedur_rahman.vrf_command