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
      
  • 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 und aoscx_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 Umgebungsvariable ANSIBLE_PERSISTENT_COMMAND_TIMEOUT auf einen größeren Wert setzen. Siehe Ansible-Dokumentation hier.

Inventarvariablen

Die Variablen, die in Ihrem Inventar für Ihren AOS-CX-Host definiert werden sollten, sind:

  • ansible_host: IP-Adresse des Switches im Format A.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 im plaintext-Format
  • ansible_password: Passwort für den Switch im plaintext-Format
  • ansible_network_os: Muss immer auf aoscx gesetzt werden
  • ansible_connection: Setzen Sie auf httpapi, um REST API-Module zu verwenden, auf network_cli, um SSH/CLI-Module zu verwenden, und auf aoscx, um pyaoscx-Module zu verwenden
    • Siehe unten für Informationen zur neuen pyaoscx-Implementierung der AOS-CX-Ansible-Module, die zukünftig der Standard sein wird
    • Siehe unten für Informationen zur gleichzeitigen Verwendung von REST API- und SSH/CLI-Modulen auf einem Host
  • ansible_httpapi_use_ssl: (Nur erforderlich für REST API-Module) Muss immer True sein, da AOS-CX Port 443 für REST verwendet
  • ansible_httpapi_validate_certs: (Nur erforderlich für REST API-Module) Setzen Sie True oder False, je nachdem, ob Ansible versuchen soll, die Zertifikate zu validieren
  • ansible_acx_no_proxy: Setzen Sie auf True oder False, je nachdem, ob Ansible Umgebungsproxys umgehen soll, um eine Verbindung zu AOS-CX herzustellen
  • ansible_aoscx_validate_certs: Setzen Sie auf True oder False, je nachdem, ob Ansible die Validierung von Zertifikaten umgehen soll, um eine Verbindung zu AOS-CX herzustellen. Nur erforderlich, wenn ansible_connection auf aoscx gesetzt ist
  • ansible_aoscx_use_proxy: Setzen Sie auf True oder False, je nachdem, ob Ansible Umgebungsproxys umgehen soll, um eine Verbindung zu AOS-CX herzustellen. Nur erforderlich, wenn ansible_connection auf aoscx 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:

  1. Setzen Sie die Hostvariablen so, dass Ansible über die REST-API mit dem Host verbindet, wie oben gezeigt.
  2. Im Playbook, in jedem Play, in dem die SSH/CLI Module verwendet werden, setzen Sie ansible_connection auf network_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)
Über das Projekt

Ansible modules for configuring AOS-CX switches. (github repo - https://github.com/aruba/aoscx-ansible-role)

Installieren
ansible-galaxy install arubanetworks.aoscx_role
Lizenz
Unknown
Downloads
97.4k