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
- Ansible 2.10+ erfordert die Installation der
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 einrefresh_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 mitclient_id
undclient_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:
- Inventar
- Host-Datei, die Ansible das erforderliche httpapi-Plugin mit einigen anderen Details und dem Access Token mitteilt.
- 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 kannansible_connection
: Muss immer aufhttpapi
gesetzt werdenansible_network_os
: Muss immer aufaruba_central
gesetzt werdenansible_httpapi_use_ssl
: Muss immer aufTrue
gesetzt werdenansible_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 Verzeichnisinventory_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 kannclient_id
: API-Client-ID von Aruba Centralclient_secret
: API-Client-Geheimnis von Aruba Centralhost
: Muss immer aufcentral
gesetzt werdenplugin
: Muss immer aufcentral_inventory
gesetzt werdenrefresh_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 Verzeichnisinventory_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)
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)
ansible-galaxy install arubanetworks.aruba_central_role