syedur_rahman.vrf_command

vrf_command

Ansible Galaxy

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.

Przykład 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, gdzie true oznacza, że polecenie się nie powiodło, a false, ż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.

Zainstaluj
ansible-galaxy install syedur_rahman.vrf_command
Licencja
mit
Pobrania
87
Właściciel
A network engineer with a passion for all things automation.