arubanetworks.aoscx_role

aoscx

Ce rôle Ansible pour le réseau fournit un ensemble de modules de gestion de configuration dépendants de la plateforme, spécifiquement conçus pour l'appareil réseau AOS-CX.

Exigences

  • Python 3 ou version ultérieure
  • Ansible 2.8.1 ou version ultérieure
    • Consultez la documentation d'Ansible pour les étapes d'installation
    • Ansible 2.10+ nécessite l'installation de la collection ansible.netcommon
  • Version minimale du firmware AOS-CX prise en charge : 10.04.
  • Activez REST sur votre appareil AOS-CX avec les commandes suivantes :
    switch(config)# https-server rest access-mode read-write
    switch(config)# https-server vrf mgmt
    

Installation

Via Galaxy :

ansible-galaxy install arubanetworks.aoscx_role

Sortie d'exemple :

Démarrage du processus d'installation du rôle galaxy
- téléchargement du rôle 'aoscx_role', détenu par arubanetworks
- téléchargement du rôle depuis https://github.com/aruba/aoscx-ansible-role/archive/3.0.1.tar.gz
- extraction de arubanetworks.aoscx_role vers /users/chiapuzi/.ansible/roles/arubanetworks.aoscx_role
- lele arubanetworks.aoscx_role (3.0.1) a été installé avec succès
ansible-control-machine$
  • Changez de répertoire vers le dossier des rôles où le rôle Ansible a été installé, exécutez ansible-galaxy role list pour trouver :

    ansible-control-machine$ansible-galaxy role list
    # /users/chiapuzi/.ansible/roles
    - arubanetworks.aoscx_role, 3.0.1
    - arubanetworks.aruba_central_role, 0.1.0
    [AVERTISSEMENT] : - le chemin configuré /usr/share/ansible/roles n'existe pas.
    [AVERTISSEMENT] : - le chemin configuré /etc/ansible/roles n'existe pas.
    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$
    
    • Installez toutes les exigences Ansible, avec la commande suivante :
      ansible-galaxy install -r requirements.yml
      
    • Installez toutes les exigences Python avec la commande suivante :
      python3 -m pip install -r requirements.txt
      
  • Retournez dans votre répertoire de travail et commencez l'automatisation !

    ansible-control-machine$cd /users/chiapuzi/Desktop/sandbox/
    

Modules SSH/CLI

  • Pour utiliser les modules SSH/CLI aoscx_config et aoscx_command, l'accès SSH doit être activé sur votre appareil AOS-CX. Il est activé par défaut.
    • Si nécessaire, réactivez l'accès SSH sur l'appareil avec la commande suivante :
    switch(config)# ssh server vrf mgmt
    
  • Le fichier known_hosts de la machine de contrôle doit contenir la clé publique de l'appareil cible.
    • Alternativement, la vérification des clés d'hôte par la machine de contrôle peut être désactivée, bien que cela ne soit pas recommandé.
    • Pour désactiver la vérification des clés d'hôte, modifiez le fichier ansible.cfg (par défaut /etc/ansible/ansible.cfg) pour inclure : host_key_checking = false

Limitations et Remarques

  • Le délai d'attente par défaut des commandes est de 30 secondes. Si une commande prend plus de 30 secondes pour s'exécuter, la tâche atteindra la limite de temps.
    • Si vous rencontrez régulièrement l'erreur délai d'attente de commande déclenché, la valeur de délai d'attente est de 30 secs, envisagez de définir la variable d'environnement ANSIBLE_PERSISTENT_COMMAND_TIMEOUT à une valeur plus élevée. Consultez la documentation d'Ansible ici.

Variables d'Inventaire

Les variables qui doivent être définies dans votre inventaire pour votre hôte AOS-CX sont :

  • ansible_host : adresse IP du commutateur au format A.B.C.D. Pour les hôtes IPv6, utilisez une chaîne et mettez-la entre crochets par exemple ‘[2001::1]’.
  • ansible_user : nom d'utilisateur pour le commutateur au format plaintext
  • ansible_password : mot de passe pour le commutateur au format plaintext
  • ansible_network_os : doit toujours être défini sur aoscx
  • ansible_connection : défini sur httpapi pour utiliser les modules API REST, sur network_cli pour utiliser les modules SSH/CLI et sur aoscx pour utiliser les modules pyaoscx
    • Consultez ci-dessous pour des informations sur notre nouvelle implémentation pyaoscx des modules Ansible AOS-CX qui seront la norme à l'avenir
    • Consultez ci-dessous pour des informations sur l'utilisation des modules API REST et des modules SSH/CLI sur un hôte
  • ansible_httpapi_use_ssl : (Uniquement requis pour les modules API REST) Doit toujours être True car AOS-CX utilise le port 443 pour REST
  • ansible_httpapi_validate_certs : (Uniquement requis pour les modules API REST) Défini True ou False selon que Ansible doit tenter de valider les certificats
  • ansible_acx_no_proxy : définissez sur True ou False selon que Ansible doit contourner les proxys d'environnement pour se connecter à AOS-CX
  • ansible_aoscx_validate_certs : définissez sur True ou False selon que Ansible doit contourner la validation des certificats pour se connecter à AOS-CX. Requis uniquement lorsque ansible_connection est défini sur aoscx
  • ansible_aoscx_use_proxy : définissez sur True ou False selon que Ansible doit contourner les proxys d'environnement pour se connecter à AOS-CX. Requis uniquement lorsque ansible_connection est défini sur aoscx.

Modules pyaoscx

Dans un effort pour utiliser notre SDK Python récemment mis à jour pour AOS-CX Pyaoscx, nous avons repensé notre intégration Ansible en utilisant pyaoscx pour tous les modules basés sur l'API REST.
Que signifie cela si j'ai utilisé Ansible avec des modules API REST AOS-CX ?
Notre implémentation précédente continuera à fonctionner mais ne sera pas prise en charge pour les futurs modules. Cela signifie que vous devez et devrez finalement mettre à jour vos variables d'inventaire Ansible pour spécifier ansible_network_os=aoscx et d'autres variables ainsi qu'installer le package Python pyaoscx en utilisant pip Python3, tous les playbooks resteront les mêmes :
pip3 install pyaoscx
Le rôle AOS-CX Ansible déterminera automatiquement si vous avez pyaoscx installé et utilisera cette méthode lorsque ansible_network_os est défini sur aoscx. S'il est défini sur httpapi, il continuera d'utiliser l'ancienne méthode d'implémentation.

Exemples d'Inventaire :

Modules API REST uniquement :

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  # Méthode de connexion API REST via pyaoscx
      ansible_aoscx_validate_certs: False
      ansible_aoscx_use_proxy: False
      ansible_acx_no_proxy: True

Modules API REST Hérités :

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  # Méthode de connexion API REST
      ansible_httpapi_validate_certs: False
      ansible_httpapi_use_ssl: True
      ansible_acx_no_proxy: True

Modules SSH/CLI uniquement :

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  # Méthode de connexion SSH

Exemples de Playbooks

Inclure le Rôle

Si le rôle est installé via Galaxy ajoutez arubanetworks.aoscx_role à votre liste de rôles :

- hosts: all
  roles:
    - role: arubanetworks.aoscx_role
  vars:
    ansible_python_interpreter: /usr/bin/python3
  gather_facts: False     
  tasks:
  - name: Créer l’Interface 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']

Utiliser à la fois des Modules API REST et SSH/CLI sur un Hôte

Pour utiliser à la fois les modules API REST et SSH/CLI sur le même hôte, vous devez créer des jeux séparés pour que chaque jeu utilise soit uniquement les modules API REST soit uniquement les modules SSH/CLI. Un jeu ne peut pas mélanger les appels de modules API REST et SSH/CLI. Dans chaque jeu, ansible_connection doit avoir la valeur appropriée selon les modules utilisés. Si le jeu utilise des modules API REST, la valeur doit être aoscx. Si le jeu utilise des modules SSH/CLI, la valeur doit être network_cli.

Une approche recommandée pour utiliser avec succès les deux types de modules pour un hôte est la suivante :

  1. Définir les variables d'hôte afin qu'Ansible se connecte à l'hôte via l'API REST, comme vu ci-dessus.
  2. Dans le playbook, dans chaque jeu où les modules SSH/CLI sont utilisés, définissez ansible_connection sur network_cli.

L'inventaire devrait ressembler à ceci :

all:
  hosts:
    aoscx_1:
      ansible_host: 10.0.0.1
      ansible_user: admin
      ansible_password: password
      ansible_network_os: aoscx
      ansible_connection: aoscx  # Méthode de connexion API REST
      ansible_httpapi_validate_certs: False
      ansible_httpapi_use_ssl: True
      ansible_acx_no_proxy: True

et le playbook comme ceci (notez comment le deuxième jeu, qui utilise le module SSH/CLI aoscx_command, définit la valeur de ansible_connection en conséquence) :

- hosts: all
  roles: 
    - role: arubanetworks.aoscx_role
  vars:
     ansible_python_interpreter: /usr/bin/python3
  gather_facts: False     
  tasks:
  - name: Ajouter ou Mettre à Jour la Bannière
    aoscx_banner:
      banner_type: banner
      banner: "Salut !"

- hosts: all
  roles: 
    - role: arubanetworks.aoscx_role
  vars:
    ansible_connection: network_cli
  gather_facts: False    
  tasks:
    - name: Exécuter show run sur le commutateur
      aoscx_command:
        commands: ['show run']

Contribution

Chez Aruba Networks, nous sommes dédiés à garantir la qualité de nos produits, donc si vous trouvez des problèmes, veuillez ouvrir un ticket sur notre Github et nous répondrons rapidement !

Pour plus d'opportunités de contribution, suivez nos directives décrites dans notre CONTRIBUTING.md

Licence

Apache 2.0

Informations sur l'Auteur

  • Madhusudan Pranav Venugopal (@madhusudan-pranav-venugopal)
  • Yang Liu (@yliu-aruba)
  • Tiffany Chiapuzio-Wong (@tchiapuziowong)
  • Derek Wang (@derekwangHPEAruba)
  • Daniel Alvarado Bonilla (@daniel-alvarado)
À propos du projet

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

Installer
ansible-galaxy install arubanetworks.aoscx_role
Licence
Unknown
Téléchargements
97.4k
Propriétaire