arubanetworks.aruba_central_role

aruba-central-ansible-role

Diese Ansible-Netzwerkrolle bietet eine Reihe von plattformspezifischen Modulen und Plugins zur Konfigurationsverwaltung, die speziell für Aruba Central entwickelt wurden, ein cloudbasiertes Netzwerkmanagement-System.

Anforderungen

  • Python 3.5+

  • Ansible 2.9 oder höher

    • Ansible 2.10+ erfordert die Installation der ansible.netcommon Sammlung
  • Mindestens unterstützte Aruba Central Firmware ist 2.5.2

  • Installieren Sie alle Ansible-Anforderungen mit folgendem Befehl:

    ansible-galaxy install -r requirements.yml
    
  • Installieren Sie alle Python-Anforderungen mit folgendem Befehl:

    pip install -r requirements.txt
    

Installation

Über Galaxy:

ansible-galaxy install arubanetworks.aruba_central_role

Über Github, verwenden Sie den folgenden Befehl. Verwenden Sie die Option -f, um die aktuelle Rollenversion zu überschreiben:

ansible-galaxy install git+https://github.com/aruba/aruba-central-ansible-role.git

Hinweise

  • Die Module in dieser Rolle nutzen die REST-API von Central. Für Informationen zur REST-API und wie man Zugang zur Nutzung der REST-API erhält, besuchen Sie das Aruba Developer Hub: Erste Schritte mit der REST-API
  • Ein API-Token muss für einen Benutzer im API-Gateway von Aruba Central erstellt werden, und ein gültiges, nicht abgelaufenes access_token muss verwendet werden. Für weitere Informationen darüber, wie man mit dem API-Gateway beginnt, können Sie ebenfalls dieses YouTube-Video ansehen.
  • Ein gültiges Access Token kann in einer Inventardatei, wie im Abschnitt Inventar beschrieben, verwendet werden.
  • Stellen Sie sicher, dass das Access Token mit „Netzwerkoperationen“ in der Dropdown-Liste der Anwendungen ausgewählt wurde, während ein neues Token im API-Gateway hinzugefügt wird.
  • Sobald ein neues Token generiert wird, hat es ein access_token und ein refresh_token.
  • Ein Access Token ist für einen Zeitraum von 7200 Sekunden oder zwei Stunden gültig. Nach zwei Stunden läuft es ab und ein neues Token muss erstellt werden. Die Ablaufzeit des Tokens ist derzeit nicht konfigurierbar.
  • Das refresh_token zusammen mit client_id und client_secret wird verwendet, um das Access Token zu erneuern. Diese Funktionalität ist in dieser Rolle durch die Verwendung eines Inventar-Plugins implementiert. Sie können entweder eine Inventardatei oder eine Konfigurationsdatei für das Inventar-Plugin verwenden.
  • Weitere Einzelheiten zur Verwendung dieser Plugin-Konfigurationsdatei mit Tokens und anderen Anmeldeinformationen zur automatischen Erneuerung von Tokens finden Sie im Abschnitt Inventar-Plugin-Konfigurationsdatei weiter unten.

Inventar/Host-Datei

Es gibt zwei Möglichkeiten, wie Sie eine Inventar- oder Host-Datei mit der Aruba Central Ansible-Rolle verwenden können:

  1. Inventar
    • Host-Datei, die Ansible das erforderliche httpapi-Plugin mit einigen anderen Details und dem Access Token mitteilt.
  2. Inventar-Plugin-Konfigurationsdatei oder Inventarquelle
    • Eine Inventarquelldatei, die vom Inventar-Plugin verwendet wird.
    • Eine typische Implementierung eines Inventar-Plugins hat ein Pluginskript (normalerweise in Python geschrieben) und eine Inventarquelle (in diesem Fall eine YAML-Datei).
    • Gemäß der Ansible-Dokumentation sind Inventarquellen die Eingabestrings, mit denen Inventar-Plugins arbeiten. Eine Inventarquelle kann ein Pfad zu einer Datei oder einem Skript oder Rohdaten sein, die das Plugin interpretieren kann, um dynamisch Inventarvariablen zu generieren.
    • Nur .yml-Dateien mit Variablen für die Inventar-Plugin-Konfigurationsdatei werden als Inventarquelle vom Inventar-Plugin für diese Rolle akzeptiert.
  • Sie können je nach Bedarf eines der obigen Dateien verwenden.
    • Wenn Sie keine automatische Erneuerung von Tokens benötigen, verwenden Sie die einfache Inventardatei
    • Oder, wenn Sie eine automatische Erneuerung von Tokens wünschen, verwenden Sie eine Inventar-Plugin-Konfigurationsdatei für das Inventar-Plugin.

Inventar

Inventarvariablen

Die Variablen, die in Ihrem Inventar für Ihr Aruba Central-Konto definiert werden sollten, sind:

  • ansible_host: Cluster-spezifische Basis-URL für das API-Gateway auf Aruba Central im FQDN-Format, die in der API-Dokumentation des API-Gateways gefunden werden kann
  • ansible_connection: Muss immer auf httpapi gesetzt werden
  • ansible_network_os: Muss immer auf aruba_central gesetzt werden
  • ansible_httpapi_use_ssl: Muss immer auf True gesetzt werden
  • ansible_httpapi_central_access_token: API-Zugangstoken von Aruba Central

Beispielinventar:

YAML
all:
  hosts:
    central:
      ansible_host: apigw-prod2.central.arubanetworks.com
      ansible_connection: httpapi
      ansible_network_os: aruba_central
      ansible_httpapi_use_ssl: True
      ansible_httpapi_central_access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
INI
arubacentral ansible_host=apigw-prod2.central.arubanetworks.com ansible_connection=httpapi ansible_network_os=aruba_central ansible_httpapi_use_ssl=True ansible_httpapi_central_access_token=CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx

Inventar-Plugin-Konfigurationsdatei

  • Dies ist eine Inventarquelldatei, die vom Inventar-Plugin verwendet wird, um dynamisch ein Inventar mit allen Optionen zu generieren (wie oben in der einfachen Inventardatei gezeigt), die vom HttpAPI-Verbindungs-Plugin benötigt werden.
  • Der Benutzer muss eine Konfigurationsdatei erstellen, die den Plugin-Namen und andere zentrale Anmeldeinformationen enthält.

Hinweise

  • Konventionell kann ein Inventar-Plugin nicht innerhalb einer Rolle ausgeliefert werden, da Ansible das Inventar-Plugin vor der Ausführung des Playbooks oder der Rolle ausführt. Weitere Informationen finden Sie in der Ansible-Dokumentation.
    • Daher müssen Sie, bis wir die Aruba Central Ansible Collection veröffentlichen, den folgenden Workaround verwenden, um das benutzerdefinierte Inventar-Plugin für diese Ansible-Rolle für Central zu verwenden - das sich um die automatische Erneuerung von Tokens kümmert.

Methode 1:

  • Kopieren Sie die Datei central_inventory.py des Inventar-Plugins von GitHub und speichern Sie sie in einem Verzeichnis inventory_plugins in Ihrem Playbook-Verzeichnis.
  • Ihr Playbook-Verzeichnis sollte die folgende Struktur haben:
playbooks_dir
+-- playbook1.yml
+-- playbook2.yml
+-- inv_src.yml
+-- inventory_plugins/
|   +-- central_inventory.py
  • Wo **inv_src.yml** oder eine andere **.yml**-Datei mit einem anderen Namen als die Inventar-Plugin-Konfigurationsdatei fungieren kann. Beispiel für eine Inventar-Plugin-Konfigurationsdatei und die verwendeten Variablen sind unten angegeben.
  • Die Inventar-Plugin-Konfigurationsdatei sollte nicht mit Ansible Vault verwendet werden, da das Inventar-Plugin die erneuerten Refresh- und Access-Tokens zurück in die Plugin-Konfigurationsdatei schreiben muss.
  • Zunächst muss der Benutzer sicherstellen, dass ein gültiges Access- und Refresh-Token zum ersten Mal in die Inventar-Plugin-Konfigurationsdatei eingegeben wurde. Wenn beide Tokens ungültig sind, wird die Inventar-Plugin-Konfigurationsdatei mit der Nachricht <Geben Sie ein gültiges Access/Refresh-Token ein> geändert, und die Ausführung schlägt mit einem „Unauthorized“-Fehler fehl.
  • Das refresh_token von Central ist für einen Zeitraum von 14 Tagen gültig. Wenn es innerhalb von 14 Tagen nicht verwendet wird, wird das Token widerrufen und ein neues Token muss erstellt werden. Die Gültigkeit des Refresh-Tokens ist derzeit nicht konfigurierbar.

Methode 2:

  • Sobald die Rolle installiert ist, gehen Sie zum Rollenverzeichnis. Verwenden Sie die folgenden Befehle, um den Pfad zu ermitteln, wo die Rolle installiert ist, und verschieben Sie das Verzeichnis inventory_plugins mit der Plugin-Datei.
$ ansible-galaxy role list 

------------------output-----------------
# /home/admin/.ansible/roles
- arubanetworks.aruba_central_role, 0.2.1
  • Wählen Sie den Pfad aus und gehen Sie zum Rollenverzeichnis
  • Der Rollenname kann je nach Installationswahl variieren
  • Sobald Sie den Pfad haben, verschieben Sie das Inventar-Plugin-Verzeichnis in Ihr Playbook-Verzeichnis
$ cd /home/admin/.ansible/roles

$ cd arubanetworks.aruba_central_role
oder
$ cd aruba-central-ansible-role

$ mv inventory_plugins/ <path_to_playbooks_directory>

Inventar-Plugin-Konfigurationsvariablen

Die Variablen, die in Ihrer Inventar-Plugin-Konfigurationsdatei für Ihr Aruba Central-Konto definiert werden sollten, sind:

  • access_token: API-Zugangstoken von Aruba Central.
  • api_gateway: Cluster-spezifische Basis-URL für das API-Gateway auf Aruba Central im FQDN-Format, die in der API-Dokumentation des API-Gateways gefunden werden kann
  • client_id: API-Client-ID von Aruba Central
  • client_secret: API-Client-Geheimnis von Aruba Central
  • host: Muss immer auf central gesetzt werden
  • plugin: Muss immer auf central_inventory gesetzt werden
  • refresh_token: API-Refresh-Token von Aruba Central

Beispiel für eine Inventar-Plugin-Konfigurationsdatei:

YAML
access_token: CnjDaXXxvnjrvJRwxxxxXXxxXXXXxxxx
api_gateway: apigw-prod2.central.arubanetworks.com
client_id: FOqWxx124ASdfS36HqKIeXXzZ
client_secret: O2RfdKgiS13GhswdrWAIEueMPOxxZxX
host: central
plugin: central_inventory
refresh_token: X12daE6BFhk8QqqzzeifHTYxxZZ12XxX

Beispiel-Playbooks

Die Rolle einbinden

Wenn die Rolle über Galaxy installiert wurde, setzen Sie die Rolle auf arubanetworks.aruba_central_role:

---
-  hosts: all
   roles:
     - role: arubanetworks.aruba_central_role
   tasks:
   - name: Alle UI- und Template-Gruppen auf Central abrufen
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

Wenn die Rolle über Github installiert wurde, setzen Sie die Rolle auf aruba-central-ansible-role:

---
-  hosts: all
   roles:
     - role: aruba-central-ansible-role
   tasks:
   - name: Alle UI- und Template-Gruppen auf Central abrufen
     central_groups:
       action: get_groups
       limit: 20
       offset: 0

Playbook-Ausführung

ansible-playbook playbook.yml -i inventory.yml
  • Wo inventory.yml entweder eine einfache Inventardatei oder eine Konfigurationsdatei für das Inventar-Plugin (Inventarquelle) sein könnte.
  • Stellen Sie sicher, dass sich die central_inventory.py im Verzeichnis inventory_plugins/ befindet, bevor Sie das Playbook unter Verwendung der Inventar-Plugin-Konfigurationsdatei ausführen.

Beiträge

Bei Aruba Networks sind wir bestrebt, die Qualität unserer Produkte zu gewährleisten. Wenn Sie auf irgendwelche Probleme stoßen, öffnen Sie bitte ein Problem auf unserem Github, und wir werden umgehend antworten!

Für weitere Beitragsmöglichkeiten folgen Sie bitte unseren Richtlinien, die in unserem CONTRIBUTING.md festgelegt sind.

Lizenz

MIT

Autoreninformationen

  • Jay Pathak (@jayp193)
  • Derek Wang (@derekwangHPEAruba)
Über das Projekt

Ansible modules for automating various monitoring and configuration constructs on Aruba Central, which is used to manage network devices (github repo - https://github.com/aruba/aruba-central-ansible-role)

Installieren
ansible-galaxy install arubanetworks.aruba_central_role
Lizenz
mit
Downloads
83.8k