arubanetworks.aoscx_role
aoscx
Ten rola Ansible dla sieci dostarcza zestaw modułów do zarządzania konfiguracją, które są dostosowane do urządzenia sieciowego AOS-CX.
Wymagania
- Python 3 lub nowszy
- Ansible 2.8.1 lub nowszy
- Sprawdź dokumentację Ansible w celu uzyskania szczegółów instalacji
- Ansible 2.10+ wymaga zainstalowanej kolekcji
ansible.netcommon
- Minimalna wspierana wersja oprogramowania AOS-CX to 10.04.
- Włącz REST na swoim urządzeniu AOS-CX, wykonując następujące polecenia:
switch(config)# https-server rest access-mode read-write switch(config)# https-server vrf mgmt
Instalacja
Przez Galaxy:
ansible-galaxy install arubanetworks.aoscx_role
Przykład wyjścia:
Rozpoczynam proces instalacji roli galaxy
- pobieranie roli 'aoscx_role', należącej do arubanetworks
- pobieranie roli z https://github.com/aruba/aoscx-ansible-role/archive/3.0.1.tar.gz
- rozpakowywanie arubanetworks.aoscx_role do /users/chiapuzi/.ansible/roles/arubanetworks.aoscx_role
- arubanetworks.aoscx_role (3.0.1) został pomyślnie zainstalowany
ansible-control-machine$
Przejdź do katalogu ról, gdzie zainstalowano rolę Ansible, i wykonaj
ansible-galaxy role list
, aby znaleźć:ansible-control-machine$ansible-galaxy role list # /users/chiapuzi/.ansible/roles - arubanetworks.aoscx_role, 3.0.1 - arubanetworks.aruba_central_role, 0.1.0 [OSTRZEŻENIE]: - skonfigurowana ścieżka /usr/share/ansible/roles nie istnieje. [OSTRZEŻENIE]: - skonfigurowana ścieżka /etc/ansible/roles nie istnieje. 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$
- Zainstaluj wszystkie wymagania Ansible, używając następującego polecenia:
ansible-galaxy install -r requirements.yml
- Zainstaluj wszystkie wymagania Pythona, używając następującego polecenia:
python3 -m pip install -r requirements.txt
- Zainstaluj wszystkie wymagania Ansible, używając następującego polecenia:
Wróć do swojego roboczego katalogu i zaczynaj automatyzować!
ansible-control-machine$cd /users/chiapuzi/Desktop/sandbox/
Moduły SSH/CLI
- Aby korzystać z modułów SSH/CLI
aoscx_config
iaoscx_command
, dostęp SSH musi być włączony na twoim urządzeniu AOS-CX. Jest włączony domyślnie.- W razie potrzeby włącz ponownie dostęp SSH na urządzeniu, używając następującego polecenia:
switch(config)# ssh server vrf mgmt
- Plik
known_hosts
maszyny kontrolnej musi zawierać klucz publiczny docelowego urządzenia.- Alternatywnie, można wyłączyć sprawdzanie kluczy hostów przez maszynę kontrolną, chociaż nie jest to zalecane.
- Aby wyłączyć sprawdzanie kluczy hostów, zmodyfikuj plik ansible.cfg (domyślnie /etc/ansible/ansible.cfg), aby zawierał:
host_key_checking = false
Ograniczenia i uwagi
- Czas oczekiwania na domyślne polecenie wynosi 30 sekund. Jeśli polecenie zajmie więcej niż 30 sekund, zadanie wygasło.
- Jeśli regularnie napotykasz błąd
command timeout triggered, timeout value is 30 secs
, rozważ ustawienie zmiennej środowiskowejANSIBLE_PERSISTENT_COMMAND_TIMEOUT
na większą wartość. Zobacz dokumentację Ansible tutaj.
- Jeśli regularnie napotykasz błąd
Zmienne inwentarza
Zmiennymi, które należy zdefiniować w swoim inwentarzu dla hosta AOS-CX są:
ansible_host
: Adres IP przełącznika w formacieA.B.C.D
. Dla hostów IPv6 użyj ciągu znaków i zamknij go w nawiasach kwadratowych, np.'[2001::1]'
.ansible_user
: Nazwa użytkownika dla przełącznika w formacieplain text
ansible_password
: Hasło dla przełącznika w formacieplain text
ansible_network_os
: Zawsze należy ustawiać naaoscx
ansible_connection
: Ustaw nahttpapi
, aby używać modułów REST API, nanetwork_cli
, aby używać modułów SSH/CLI i naaoscx
, aby używać modułów pyaoscxansible_httpapi_use_ssl
: (Wymagane tylko dla modułów REST API) Zawsze musi byćTrue
, ponieważ AOS-CX używa portu 443 do RESTansible_httpapi_validate_certs
: (Wymagane tylko dla modułów REST API) UstawTrue
lubFalse
, w zależności od tego, czy Ansible powinien próbować weryfikować certyfikatyansible_acx_no_proxy
: Ustaw naTrue
lubFalse
, w zależności od tego, czy Ansible powinien omijać środowiskowe serwery proxy, aby połączyć się z AOS-CXansible_aoscx_validate_certs
: Ustaw naTrue
lubFalse
, w zależności od tego, czy Ansible powinien omijać weryfikację certyfikatów, aby połączyć się z AOS-CX. Wymagane tylko, gdyansible_connection
jest ustawione naaoscx
ansible_aoscx_use_proxy
: Ustaw naTrue
lubFalse
, w zależności od tego, czy Ansible powinien omijać środowiskowe serwery proxy, aby połączyć się z AOS-CX. Wymagane tylko, gdyansible_connection
jest ustawione naaoscx
.
Moduły pyaoscx
W ramach wysiłków mających na celu wykorzystanie naszego niedawno zaktualizowanego zestawu SDK dla AOS-CX Pyaoscx zmodernizowaliśmy naszą integrację Ansible, korzystając z pyaoscx w przypadku wszystkich modułów opartych na REST API.
Co to oznacza, jeśli używam Ansible z modułami REST API AOS-CX?
Nasza poprzednia implementacja będzie działać, ale nie będziemy jej wspierać w przyszłych modułach. To oznacza, że powinieneś, a w końcu będziesz musiał zaktualizować swoje zmienne inwentarza Ansible, aby określić ansible_network_os=aoscx
oraz dodatkowe zmienne, a także zainstalować pakiet Pyaoscx za pomocą pip dla Pythona, wszystkie playbooki pozostaną takie same:pip3 install pyaoscx
Rola Ansible AOS-CX automatycznie sprawdzi, czy masz zainstalowane pyaoscx i użyje tej metody, gdy ansible_network_os
jest ustawione na aoscx
. Jeśli jest ustawione na httpapi
, będzie nadal korzystać z poprzedniej metody implementacji.
Przykładowe inwentarze:
Tylko moduły REST API:
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 przy użyciu metody połączenia pyaoscx
ansible_aoscx_validate_certs: False
ansible_aoscx_use_proxy: False
ansible_acx_no_proxy: True
Moduły REST API w wersji Legacy:
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 # Metoda połączenia REST API
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
Tylko moduły SSH/CLI:
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 # Metoda połączenia SSH
Przykłady playbooków
Uwzględnienie roli
Jeśli rola została zainstalowana przez Galaxy, dodaj arubanetworks.aoscx_role
do swojej listy ról:
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
gather_facts: False
tasks:
- name: Utwórz interfejs L3 1/1/3
aoscx_l3_interface:
interface: 1/1/3
description: Uplink_Interface
ipv4: ['10.20.1.3/24']
ipv6: ['2001:db8::1234/64']
Korzystanie zarówno z modułów REST API, jak i SSH/CLI na hoście
Aby używać zarówno modułów REST API, jak i SSH/CLI na tym samym hoście,
musisz stworzyć oddzielne zadania, tak aby każde zadanie używało tylko modułów REST API lub tylko modułów SSH/CLI.
Zadanie nie może łączyć wywołań modułów REST API i SSH/CLI.
W każdym zadaniu, ansible_connection
musi mieć odpowiednią wartość
w zależności od używanych modułów.
Jeśli zadanie używa modułów REST API, wartość powinna być aoscx
.
Jeśli zadanie używa modułów SSH/CLI, wartość powinna być network_cli
.
Zalecanym podejściem do skutecznego używania obu typów modułów dla hosta jest następujące:
- Ustaw zmienne hosta w taki sposób, aby Ansible połączył się z hostem używając REST API, tak jak widać to powyżej.
- W playbooku, w każdym zadaniu, w którym są używane moduły SSH/CLI,
ustaw
ansible_connection
nanetwork_cli
.
Inwentarz powinien wyglądać mniej więcej tak:
all:
hosts:
aoscx_1:
ansible_host: 10.0.0.1
ansible_user: admin
ansible_password: password
ansible_network_os: aoscx
ansible_connection: aoscx # Metoda połączenia REST API
ansible_httpapi_validate_certs: False
ansible_httpapi_use_ssl: True
ansible_acx_no_proxy: True
a playbook wyglądałby tak (zauważ, że drugie zadanie, które używa modułu SSH/CLI aoscx_command
,
ustawia wartość ansible_connection
odpowiednio):
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_python_interpreter: /usr/bin/python3
gather_facts: False
tasks:
- name: Dodaj lub zaktualizuj baner
aoscx_banner:
banner_type: banner
banner: "Cześć!"
- hosts: all
roles:
- role: arubanetworks.aoscx_role
vars:
ansible_connection: network_cli
gather_facts: False
tasks:
- name: Wykonaj show run na przełączniku
aoscx_command:
commands: ['show run']
Wkład
W Aruba Networks jesteśmy zdeterminowani, aby zapewnić jakość naszych produktów, więc jeśli znajdziesz jakiekolwiek problemy, proszę otwieraj zgłoszenia na naszym Githubie, a na pewno odpowiemy szybko!
Aby uzyskać więcej możliwości współpracy, postępuj zgodnie z naszymi wytycznymi przedstawionymi w naszym CONTRIBUTING.md.
Licencja
Apache 2.0
Informacje o autorach
- 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