arubanetworks.aoscx_role
aoscx
Dieses Ansible-Netzrollen-Modul bietet eine Reihe von plattformabhängigen Konfigurationsmanagement-Modulen, die speziell für das AOS-CX-Netzwerkgerät entwickelt wurden.
Anforderungen
- Python 3 oder später
- Ansible 2.8.1 oder später
- Siehe Ansible-Dokumentation für Installationsschritte
- Ansible 2.10+ benötigt die
ansible.netcommon
-Sammlung
- Mindestens unterstützte AOS-CX-Firmware-Version 10.04.
- Aktivieren Sie REST auf Ihrem AOS-CX-Gerät mit den folgenden Befehlen:
switch(config)# https-server rest access-mode read-write switch(config)# https-server vrf mgmt
Installation
Über Galaxy:
ansible-galaxy install arubanetworks.aoscx_role
Beispielausgabe:
Starte den Installationsprozess für die Galaxy-Rolle
- Rolle 'aoscx_role' von arubanetworks wird heruntergeladen
- Rolle wird von https://github.com/aruba/aoscx-ansible-role/archive/3.0.1.tar.gz heruntergeladen
- Extrahiere arubanetworks.aoscx_role nach /users/chiapuzi/.ansible/roles/arubanetworks.aoscx_role
- arubanetworks.aoscx_role (3.0.1) wurde erfolgreich installiert
ansible-control-machine$
Wechseln Sie in das Rollenverzeichnis, in dem die Ansible-Rolle installiert wurde, und führen Sie
ansible-galaxy role list
aus, um Folgendes zu finden:ansible-control-machine$ansible-galaxy role list # /users/chiapuzi/.ansible/roles - arubanetworks.aoscx_role, 3.0.1 - arubanetworks.aruba_central_role, 0.1.0 [WARNUNG]: - der konfigurierte Pfad /usr/share/ansible/roles existiert nicht. [WARNUNG]: - der konfigurierte Pfad /etc/ansible/roles existiert nicht. ansible-control-machine$cd /users/chiapuzi/.ansible/roles/arubanetworks.aoscx_role/ ansible-control-machine$ls cliconf_plugins httpapi_plugins README.md terminal_plugins connection_plugins library RELEASE-NOTES.md CONTRIBUTING.md meta requirements.txt docs module_utils requirements.yml ansible-control-machine$
- Installieren Sie alle Ansible-Anforderungen mit dem folgenden Befehl:
ansible-galaxy install -r requirements.yml
- Installieren Sie alle Python-Anforderungen mit dem folgenden Befehl:
python3 -m pip install -r requirements.txt
- Installieren Sie alle Ansible-Anforderungen mit dem folgenden Befehl:
Wechseln Sie zurück in Ihr Arbeitsverzeichnis und beginnen Sie mit der Automatisierung!
ansible-control-machine$cd /users/chiapuzi/Desktop/sandbox/
SSH/CLI-Module
- Um die SSH/CLI-Module
aoscx_config
undaoscx_command
zu verwenden, muss der SSH-Zugriff auf Ihrem AOS-CX-Gerät aktiviert sein. Dieser ist standardmäßig aktiviert.- Bei Bedarf können Sie den SSH-Zugriff mit dem folgenden Befehl erneut aktivieren:
switch(config)# ssh server vrf mgmt
- Die
known_hosts
-Datei der Steuerung muss den öffentlichen Schlüssel des Zielgeräts enthalten.- Alternativ kann die Überprüfung des Hostschlüssels durch die Steuerung deaktiviert werden, obwohl dies nicht empfohlen wird.
- Um die Hostschlüsselüberprüfung zu deaktivieren, ändern Sie die ansible.cfg-Datei (standardmäßig /etc/ansible/ansible.cfg) und fügen Sie hinzu:
host_key_checking = false
Einschränkungen und Hinweise
- Die standardmäßige Befehlszeitüberschreitung beträgt 30 Sekunden. Wenn ein Befehl mehr als 30 Sekunden benötigt, um ausgeführt zu werden, wird die Aufgabe zeitlich überschritten.
- Wenn Sie regelmäßig auf den Fehler
command timeout triggered, timeout value is 30 secs
stoßen, sollten Sie die UmgebungsvariableANSIBLE_PERSISTENT_COMMAND_TIMEOUT
auf einen größeren Wert setzen. Siehe Ansible-Dokumentation hier.
- Wenn Sie regelmäßig auf den Fehler
Inventarvariablen
Die Variablen, die in Ihrem Inventar für Ihren AOS-CX-Host definiert werden sollten, sind:
ansible_host
: IP-Adresse des Switches im FormatA.B.C.D
. Bei IPv6-Hosts verwenden Sie eine Zeichenfolge und setzen Sie in eckige Klammern, z. B.'[2001::1]'
.ansible_user
: Benutzername für den Switch implaintext
-Formatansible_password
: Passwort für den Switch implaintext
-Formatansible_network_os
: Muss immer aufaoscx
gesetzt werdenansible_connection
: Setzen Sie aufhttpapi
, um REST API-Module zu verwenden, aufnetwork_cli
, um SSH/CLI-Module zu verwenden, und aufaoscx
, um pyaoscx-Module zu verwendenansible_httpapi_use_ssl
: (Nur erforderlich für REST API-Module) Muss immerTrue
sein, da AOS-CX Port 443 für REST verwendetansible_httpapi_validate_certs
: (Nur erforderlich für REST API-Module) Setzen SieTrue
oderFalse
, je nachdem, ob Ansible versuchen soll, die Zertifikate zu validierenansible_acx_no_proxy
: Setzen Sie aufTrue
oderFalse
, je nachdem, ob Ansible Umgebungsproxys umgehen soll, um eine Verbindung zu AOS-CX herzustellenansible_aoscx_validate_certs
: Setzen Sie aufTrue
oderFalse
, je nachdem, ob Ansible die Validierung von Zertifikaten umgehen soll, um eine Verbindung zu AOS-CX herzustellen. Nur erforderlich, wennansible_connection
aufaoscx
gesetzt istansible_aoscx_use_proxy
: Setzen Sie aufTrue
oderFalse
, je nachdem, ob Ansible Umgebungsproxys umgehen soll, um eine Verbindung zu AOS-CX herzustellen. Nur erforderlich, wennansible_connection
aufaoscx
gesetzt ist.
pyaoscx-Module
Um unser kürzlich aktualisiertes Python-SDK für AOS-CX Pyaoscx zu nutzen, haben wir unsere Ansible-Integration umgestaltet, indem wir pyaoscx für alle REST-API-basierten Module verwenden.
Was bedeutet das, wenn ich Ansible mit AOS-CX REST API-Modulen verwendet habe?
Unsere vorherige Implementierung wird weiterhin funktionieren, aber nicht mehr für künftige Module unterstützt. Das bedeutet, dass Sie Ihre Ansible-Inventarvariablen aktualisieren sollten, um ansible_network_os=aoscx
und zusätzliche Variablen festzulegen sowie das pyaoscx-Python-Paket mit Python3 pip zu installieren, alle Playbooks bleiben gleich:pip3 install pyaoscx
Die AOS-CX-Ansible-Rolle wird automatisch feststellen, ob Sie pyaoscx installiert haben, und diese Methode verwenden, wenn ansible_network_os
auf aoscx
gesetzt ist. Wenn es auf httpapi
gesetzt ist, wird die vorherige Implementierungsmethode weiterhin verwendet.
Beispiel-Inventare:
Nur REST-API-Module:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=aoscx ansible_aoscx_validate_certs=False ansible_aoscx_use_proxy=False
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: aoscx # REST-API über pyaoscx-Verbindungsmethode
ansible_aoscx_validate_certs: False
ansible_aoscx_use_proxy: False
ansible_acx_no_proxy: True
Alte REST-API-Module:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=httpapi ansible_httpapi_validate_certs=False ansible_httpapi_use_ssl=True ansible_acx_no_proxy=True
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: httpapi # REST-API-Verbindungsmethode
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
Nur SSH/CLI-Module:
INI
aoscx_1 ansible_host=10.0.0.1 ansible_user=admin ansible_password=password ansible_network_os=aoscx ansible_connection=network_cli
YAML
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: network_cli # SSH-Verbindungsmethode
Beispiel-Playbooks
Rolle einbeziehen
Wenn die Rolle über Galaxy installiert wurde, fügen Sie arubanetworks.aoscx_role
zu Ihrer Liste der Rollen hinzu:
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
facts sammeln: False
tasks:
- name: Erstelle L3-Schnittstelle 1/1/3
aoscx_l3_interface:
interface: 1/1/3
description: Uplink_Interface
ipv4: ['10.20.1.3/24']
ipv6: ['2001:db8::1234/64']
Verwendung sowohl von REST-API- als auch von SSH/CLI-Modulen auf einem Host
Um sowohl REST-API- als auch SSH/CLI-Module auf demselben Host zu verwenden,
müssen Sie separate Plays erstellen,
so dass jedes Play entweder nur REST-API-Module oder nur SSH/CLI-Module verwendet.
Ein Play kann keine REST-API- und SSH/CLI-Modulaufrufe kombinieren.
In jedem Play muss ansible_connection
den entsprechenden Wert gemäß den verwendeten Modulen haben.
Wenn das Play REST-API-Module verwendet, sollte der Wert aoscx
sein.
Wenn das Play SSH/CLI-Module verwendet, sollte der Wert network_cli
sein.
Ein empfohlener Ansatz zur erfolgreichen Verwendung beider Modularten für einen Host ist wie folgt:
- Setzen Sie die Hostvariablen so, dass Ansible über die REST-API mit dem Host verbindet, wie oben gezeigt.
- Im Playbook, in jedem Play, in dem die SSH/CLI
Module verwendet werden, setzen Sie
ansible_connection
aufnetwork_cli
.
Das Inventar sollte etwa so aussehen:
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: aoscx # REST-API-Verbindungsmethode
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
Und das Playbook so (beachten Sie, wie das zweite Play, das das SSH/CLI-Modul aoscx_command
verwendet,
den Wert von ansible_connection
entsprechend festlegt):
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
gather_facts: False
tasks:
- name: Banner hinzufügen oder aktualisieren
aoscx_banner:
banner_type: banner
banner: "Hallo!"
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_connection: network_cli
gather_facts: False
tasks:
- name: Führe show run auf dem Switch aus
aoscx_command:
commands: ['show run']
Beitrag
Bei Aruba Networks sind wir bestrebt, die Qualität unserer Produkte sicherzustellen. Wenn Sie irgendwelche Probleme finden, öffnen Sie bitte ein Ticket auf unserem Github und wir werden umgehend reagieren!
Für weitere Beitragmöglichkeiten folgen Sie bitte unseren Richtlinien in unserer CONTRIBUTING.md
Lizenz
Apache 2.0
Autoreninformationen
- Madhusudan Pranav Venugopal (@madhusudan-pranav-venugopal)
- Yang Liu (@yliu-aruba)
- Tiffany Chiapuzio-Wong (@tchiapuziowong)
- Derek Wang (@derekwangHPEAruba)
- Daniel Alvarado Bonilla (@daniel-alvarado)
Ansible modules for configuring AOS-CX switches. (github repo - https://github.com/aruba/aoscx-ansible-role)
ansible-galaxy install arubanetworks.aoscx_role