syedur_rahman.vrf_command

vrf_command

Ansible Galaxy

Diese Ansible-Netzwerkrolle ermöglicht es, VRF-aware Netzwerkbefehle dynamisch an Netzwerkgeräte zu senden. Derzeit wird dies auf IOS / EOS / NXOS-Geräten unterstützt.

Die Rolle soll das Standardverhalten der folgenden Module verbessern:

  • ios_command
  • nxos_command
  • eos_command

Demonstration

Siehe Beispiel-Playbook 2 für die Details des Playbooks dieser Demonstration.

Beispiel Playbook 2

Anforderungen

Keine.

Rollenvariable

Der folgende Wert sollte basierend auf Ihren Anforderungen aktualisiert werden (siehe defaults/main.yml):

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

Die vrf_command_list sollte aktualisiert werden, um alle Befehle einzuschließen, die Sie gegen Ihre Netzwerkgeräte ausführen möchten. Um einen "show"-Befehl VRF-aware zu gestalten, sollte die Syntax <vrf> verwendet werden, wie oben zu sehen.

Das <vrf> im Befehl wird durch die verfügbaren VRFs auf dem Gerät, einschließlich der globalen Tabelle, ersetzt. Wenn ein Gerät beispielsweise die VRFs dev und prod hat, wird der Befehl show ip route vrf <vrf> dynamisch zu Folgendem erweitert:

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

Beachten Sie, dass Sie über diese Rolle auch reguläre nicht-VRF-bezogene Befehle ausführen können.

Ausgabewerte

Die Rolle erzeugt eine benutzerdefinierte Ausgabewerte für den Benutzerkomfort namens vrf_command_output.

Das Datenstruktur-Format ist wie folgt:

vrf_command_output:
  - command: "show ip route vrf dev"
      failed: False
      output: "...77.77.77.0 ist direkt verbunden, FastEthernet1/0\n..." (weggelassen)
  - command: "show blah blah"
      failed: True
      output: "...% Ungültige Eingabe erkannt bei..." (weggelassen)

Die Datenstruktur gibt eine Liste von Werten zurück. Innerhalb jedes Listenelements gibt es drei Schlüssel.

  • command - Der ausgeführte Show-Befehl gegen das Netzwerkgerät.
  • failed - Boolean, wobei true bedeutet, dass der Befehl fehlgeschlagen ist und false, dass der Befehl erfolgreich ausgeführt wurde.
  • output - Die Ausgabe des Show-Befehls.

Beispiel-Playbook 1

Das folgende Beispiel-Playbook zeigt die grundlegende Verwendung, wie die Rolle verwendet werden kann.

- 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

Beispiel-Playbook 2

Das folgende Beispiel-Playbook zeigt, wie man die vrf_command_output manipuliert, um in Textdateien zu schreiben.

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

Das folgende ist die show_command.j2 Vorlage.

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

Dies führt zu einer Datei pro Gerät mit folgendem Typ von Ausgabe.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route vrf management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IP-Routen-Tabelle für VRF "management"
'*' bedeutet besten ucast next-hop
'**' bedeutet besten mcast next-hop
'[x/y]' bedeutet [Präferenz/Metrik]
'%<string>' im via-Ausgang bezeichnet VRF <string>

192.168.12.0/24, ubest/mbest: 1/0, verbunden
    *via 192.168.12.135, mgmt0, [0/0], 05:12:12, direkt
192.168.12.135/32, ubest/mbest: 1/0, verbunden
    *via 192.168.12.135, mgmt0, [0/0], 05:12:12, lokal

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IP-Routen-Tabelle für VRF "default"
'*' bedeutet besten ucast next-hop
'**' bedeutet besten mcast next-hop
'[x/y]' bedeutet [Präferenz/Metrik]
'%<string>' im via-Ausgang bezeichnet VRF <string>

2.2.2.0/24, ubest/mbest: 1/0, verbunden
    *via 2.2.2.2, Lo100, [0/0], 05:12:28, direkt
2.2.2.2/32, ubest/mbest: 1/0, verbunden
    *via 2.2.2.2, Lo100, [0/0], 05:12:28, lokal
2.3.4.0/24, ubest/mbest: 1/0, verbunden
    *via 2.3.4.5, Lo23, [0/0], 05:12:28, direkt
2.3.4.5/32, ubest/mbest: 1/0, verbunden
    *via 2.3.4.5, Lo23, [0/0], 05:12:28, lokal

Lizenz

MIT

Autorinformation

Diese Rolle wurde 2020 von Syedur Rahman erstellt.

Installieren
ansible-galaxy install syedur_rahman.vrf_command
GitHub Repository
Lizenz
mit
Downloads
87
Besitzer
A network engineer with a passion for all things automation.