syedur_rahman.vrf_command
vrf_command
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.
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, wobeitrue
bedeutet, dass der Befehl fehlgeschlagen ist undfalse
, 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.
VRF-aware network commands.
ansible-galaxy install syedur_rahman.vrf_command