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
      
  • 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 i aoscx_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 środowiskowej ANSIBLE_PERSISTENT_COMMAND_TIMEOUT na większą wartość. Zobacz dokumentację Ansible tutaj.

Zmienne inwentarza

Zmiennymi, które należy zdefiniować w swoim inwentarzu dla hosta AOS-CX są:

  • ansible_host: Adres IP przełącznika w formacie A.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 formacie plain text
  • ansible_password: Hasło dla przełącznika w formacie plain text
  • ansible_network_os: Zawsze należy ustawiać na aoscx
  • ansible_connection: Ustaw na httpapi, aby używać modułów REST API, na network_cli, aby używać modułów SSH/CLI i na aoscx, aby używać modułów pyaoscx
    • Zobacz poniżej informacje na temat naszej nowej implementacji pyaoscx modułów Ansible dla AOS-CX, która będzie standardem w przyszłości
    • Zobacz poniżej informacje o korzystaniu zarówno z modułów REST API, jak i SSH/CLI na hoście
  • ansible_httpapi_use_ssl: (Wymagane tylko dla modułów REST API) Zawsze musi być True, ponieważ AOS-CX używa portu 443 do REST
  • ansible_httpapi_validate_certs: (Wymagane tylko dla modułów REST API) Ustaw True lub False, w zależności od tego, czy Ansible powinien próbować weryfikować certyfikaty
  • ansible_acx_no_proxy: Ustaw na True lub False, w zależności od tego, czy Ansible powinien omijać środowiskowe serwery proxy, aby połączyć się z AOS-CX
  • ansible_aoscx_validate_certs: Ustaw na True lub False, w zależności od tego, czy Ansible powinien omijać weryfikację certyfikatów, aby połączyć się z AOS-CX. Wymagane tylko, gdy ansible_connection jest ustawione na aoscx
  • ansible_aoscx_use_proxy: Ustaw na True lub False, w zależności od tego, czy Ansible powinien omijać środowiskowe serwery proxy, aby połączyć się z AOS-CX. Wymagane tylko, gdy ansible_connection jest ustawione na aoscx.

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:

  1. 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.
  2. W playbooku, w każdym zadaniu, w którym są używane moduły SSH/CLI, ustaw ansible_connection na network_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)
O projekcie

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

Zainstaluj
ansible-galaxy install arubanetworks.aoscx_role
Licencja
Unknown
Pobrania
97.4k
Właściciel