arubanetworks.aruba_central_role
Aruba Central Ansible Role
Ten Ansible Network Role dostarcza zestaw modułów i wtyczek do zarządzania konfiguracją, dostosowanych do systemu Aruba Central, który jest chmurowym systemem zarządzania siecią.
Wymagania
Python 3.5+
Ansible 2.9 lub nowszy
- Ansible 2.10+ wymaga zainstalowania kolekcji
ansible.netcommon
- Ansible 2.10+ wymaga zainstalowania kolekcji
Minimalna wspierana wersja oprogramowania Aruba Central to 2.5.2
Zainstaluj wszystkie wymagania Ansible, używając następującego polecenia:
ansible-galaxy install -r requirements.yml
Zainstaluj wszystkie wymagania dla Pythona, używając następującego polecenia:
pip install -r requirements.txt
Instalacja
Przez Galaxy:
ansible-galaxy install arubanetworks.aruba_central_role
Przez GitHub, użyj następującego polecenia. Użyj opcji -f
, aby nadpisać obecną wersję roli:
ansible-galaxy install git+https://github.com/aruba/aruba-central-ansible-role.git
Uwagi
- Moduły w tej roli korzystają z REST API Central. Aby uzyskać informacje na temat REST API oraz jak uzyskać dostęp do korzystania z REST API, odwiedź Aruba Developer Hub: Wprowadzenie do REST API
- Należy utworzyć token API dla użytkownika w API Gateway Aruba Central, a następnie użyć ważnego, aktualnego
access_token
. Więcej informacji na temat rozpoczęcia pracy z API Gateway można również znaleźć w tym filmie na YouTube. - Ważny token dostępu można wykorzystać w pliku Inwentaryzacyjnym, jak opisano w sekcji Inwentaryzacja.
- Upewnij się, że token dostępu został utworzony z wybraną "Operacją w sieci" w rozwijanym menu aplikacji podczas dodawania nowego tokena w API Gateway.
- Po wygenerowaniu nowego tokena, będzie on miał
access_token
irefresh_token
. - Token dostępu jest ważny przez 7200 sekund (dwie godziny). Po dwóch godzinach wygasa i trzeba utworzyć nowy token. Czas ważności tokena nie jest obecnie konfigurowalny.
refresh_token
razem zclient_id
iclient_secret
są używane do odnowienia tokena dostępu. Ta funkcjonalność została zaimplementowana w tej roli za pomocą wtyczki inwentaryzacyjnej. Możesz użyć albo pliku inwentaryzacyjnego, albo pliku konfiguracyjnego wtyczki inwentaryzacyjnej.- Więcej szczegółów na temat korzystania z tego pliku konfiguracyjnego wtyczki z tokenami i innymi poświadczeniami do automatycznego odnawiania tokenów znajduje się w sekcji Plik konfiguracyjny wtyczki inwentaryzacyjnej.
Plik inwentaryzacyjny/hosta
Są dwa sposoby, w jakie można użyć pliku inwentaryzacyjnego lub hosta z rolą Aruba Central Ansible:
- Inwentaryzacja
- Plik hosta, który informuje Ansible, jaki plugin httpapi użyć oraz inne szczegóły i token dostępu.
- Plik konfiguracyjny wtyczki inwentaryzacyjnej lub Źródło inwentaryzacyjne:
- Plik źródłowy, który jest używany przez wtyczkę inwentaryzacyjną.
- Typowa implementacja wtyczki inwentaryzacyjnej zawiera skrypt wtyczki (zazwyczaj napisany w Pythonie) oraz źródło inwentaryzacyjne (w tym przypadku jest to plik YAML).
- Zgodnie z dokumentacją Ansible, źródła inwentaryzacyjne to ciągi wejściowe, z którymi pracują wtyczki inwentaryzacyjne. Źródło inwentaryzacyjne może być ścieżką do pliku lub skryptu, lub też może być surowymi danymi, które wtyczka może interpretować w celu dynamicznego generowania zmiennych inwentaryzacyjnych.
- Tylko pliki
.yml
z zmiennymi pliku konfiguracyjnego wtyczki inwentaryzacyjnej są akceptowane jako źródło inwentaryzacyjne przez wtyczkę inwentaryzacyjną dla tej roli.
- Możesz użyć jednego z powyższych plików w zależności od potrzeb.
- Jeśli nie potrzebujesz automatycznego odnawiania tokenów, użyj prostego pliku inwentaryzacyjnego.
- Jeśli chcesz mieć automatyczne odnawianie tokenów, użyj pliku konfiguracyjnego wtyczki inwentaryzacyjnej.
Inwentaryzacja
Zmienne inwentaryzacyjne
Zmiennymi, które powinny być zdefiniowane w Twojej inwentaryzacji dla konta Aruba Central, są:
ansible_host
: Specyficzny dla klastra Base-URL dla API Gateway na Aruba Central w formacie FQDN, który można znaleźć w URL dokumentacji API na API Gateway.ansible_connection
: Zawsze musi być ustawione nahttpapi
.ansible_network_os
: Zawsze musi być ustawione naaruba_central
.ansible_httpapi_use_ssl
: Zawsze musi być ustawione naTrue
.ansible_httpapi_central_access_token
: Token dostępu API Aruba Central.
Przykładowa inwentaryzacja:
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
Plik konfiguracyjny wtyczki inwentaryzacyjnej
- Jest to plik źródłowy inwentaryzacji, który jest wykorzystywany przez wtyczkę inwentaryzacyjną do dynamicznego generowania inwentaryzacji z wszystkimi opcjami (jak pokazano powyżej w prostym pliku inwentaryzacyjnym) wymaganymi przez wtyczkę połączenia HttpAPI.
- Użytkownik musi stworzyć plik konfiguracyjny, który zawiera nazwę wtyczki oraz inne poświadczenia centralne.
Uwagi
- Zwykle wtyczka inwentaryzacyjna nie może być dostarczana w ramach roli, ponieważ Ansible wykonuje wtyczkę inwentaryzacyjną przed wykonaniem playbooka lub roli. Więcej informacji można znaleźć w Dokumentacji Ansible.
- Dlatego, dopóki nie opublikujemy Kolekcji Ansible dla Aruba Central, będziesz musiał wykonać następujący sposób, aby korzystać z niestandardowej wtyczki inwentaryzacyjnej dla tej roli Ansible dla Central - co zajmie się automatycznym odnawianiem tokenów.
Metoda 1:
- Skopiuj plik wtyczki inwentaryzacyjnej
central_inventory.py
z GitHub i przechowuj go w kataloguinventory_plugins
w swoim katalogu playbooków. - Twój katalog playbooków powinien mieć następującą strukturę:
playbooks_dir
+-- playbook1.yml
+-- playbook2.yml
+-- inv_src.yml
+-- inventory_plugins/
| +-- central_inventory.py
- Gdzie
**inv_src.yml**
lub inny plik**.yml**
o innej nazwie może działać jako plik konfiguracyjny wtyczki inwentaryzacyjnej. Przykładowy plik konfiguracyjny wtyczki inwentaryzacyjnej i używane przez nie zmienne są podane poniżej. - Plik konfiguracyjny wtyczki inwentaryzacyjnej nie powinien być używany z Ansible Vault, ponieważ wtyczka inwentaryzacyjna musi zapisywać odnowione tokeny refresh i access z powrotem do pliku konfiguracyjnego wtyczki.
- Użytkownik musi początkowo upewnić się, że ważny token dostępu i token odświeżania zostały wprowadzone w pliku konfiguracyjnym wtyczki inwentaryzacyjnej po raz pierwszy. Jeśli oba tokeny są nieważne, wtyczka inwentaryzacyjna zmodyfikuje plik, wpisując <Wprowadź ważny token dostępu/odświeżania> w pliku konfiguracyjnym wtyczki inwentaryzacyjnej, a wykonanie zakończy się niepowodzeniem z komunikatem "Nieautoryzowany".
- Token
refresh_token
jest ważny przez 14 dni. Jeśli nie będzie używany przez 14 dni, token zostanie anulowany i będzie trzeba utworzyć nowy token. Ważność tokena odświeżającego nie jest obecnie konfigurowalna.
Metoda 2:
- Po zainstalowaniu roli, przejdź do katalogu ról. Użyj poniższych poleceń, aby uzyskać ścieżkę, w której zainstalowano rolę i przenieść katalog inventory_plugins z plikiem wtyczki.
$ ansible-galaxy role list
------------------output-----------------
# /home/admin/.ansible/roles
- arubanetworks.aruba_central_role, 0.2.1
- Wybierz ścieżkę i przejdź do katalogu ról
- Nazwa roli może się różnić, w zależności od sposobu, w jaki zdecydowałeś się ją zainstalować
- Po uzyskaniu ścieżki przenieś katalog wtyczki inwentaryzacyjnej do katalogu swoich playbooków
$ cd /home/admin/.ansible/roles
$ cd arubanetworks.aruba_central_role
lub
$ cd aruba-central-ansible-role
$ mv inventory_plugins/ <ścieżka_do_katalogu_playbooków>
Zmienne pliku konfiguracyjnego wtyczki inwentaryzacyjnej
Zmiennymi, które powinny być zdefiniowane w Twoim pliku konfiguracyjnym wtyczki inwentaryzacyjnej dla Twojego konta Aruba Central, są:
access_token
: Token dostępu API Aruba Central.api_gateway
: Specyficzny dla klastra Base-URL dla API Gateway na Aruba Central w formacie FQDN, który można znaleźć w URL dokumentacji API na API Gateway.client_id
: ID klienta API Aruba Central.client_secret
: Tajny klucz klienta API Aruba Central.host
: Zawsze należy ustawić nacentral
.plugin
: Zawsze należy ustawić nacentral_inventory
.refresh_token
: Token odświeżania API Aruba Central.
Przykładowy plik konfiguracyjny wtyczki inwentaryzacyjnej:
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
Przykłady playbooków
Dołączenie roli
Jeśli rola została zainstalowana przez Galaxy, ustaw rolę na arubanetworks.aruba_central_role
:
---
- hosts: all
roles:
- role: arubanetworks.aruba_central_role
tasks:
- name: Pobierz wszystkie grupy UI i szablonów w Central
central_groups:
action: get_groups
limit: 20
offset: 0
Jeśli rola została zainstalowana przez GitHub, ustaw rolę na aruba-central-ansible-role
:
---
- hosts: all
roles:
- role: aruba-central-ansible-role
tasks:
- name: Pobierz wszystkie grupy UI i szablonów w Central
central_groups:
action: get_groups
limit: 20
offset: 0
Wykonanie playbooka
ansible-playbook playbook.yml -i inventory.yml
- Gdzie
inventory.yml
może być prostym plikiem inwentaryzacyjnym lub plikiem konfiguracyjnym wtyczki inwentaryzacyjnej (źródło inwentaryzacyjne). - Upewnij się, że masz plik
central_inventory.py
w kataloguinventory_plugins/
, zanim wykonasz playbook, korzystając z pliku konfiguracyjnego wtyczki inwentaryzacyjnej.
Wkład
W Aruba Networks dbamy o jakość naszych produktów, więc jeśli znajdziesz jakiekolwiek problemy, otwórz zgłoszenie na naszym GitHubie i na pewno szybko odpowiemy!
Aby uzyskać więcej możliwości wkładu, zapoznaj się z naszymi wytycznymi zawartymi w CONTRIBUTING.md
Licencja
MIT
Informacje o autorze
- 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