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
- le rôle 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
- Installez toutes les exigences Ansible, avec la commande suivante :
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
etaoscx_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'environnementANSIBLE_PERSISTENT_COMMAND_TIMEOUT
à une valeur plus élevée. Consultez la documentation d'Ansible ici.
- Si vous rencontrez régulièrement l'erreur
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 formatA.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 formatplaintext
ansible_password
: mot de passe pour le commutateur au formatplaintext
ansible_network_os
: doit toujours être défini suraoscx
ansible_connection
: défini surhttpapi
pour utiliser les modules API REST, surnetwork_cli
pour utiliser les modules SSH/CLI et suraoscx
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 êtreTrue
car AOS-CX utilise le port 443 pour RESTansible_httpapi_validate_certs
: (Uniquement requis pour les modules API REST) DéfiniTrue
ouFalse
selon que Ansible doit tenter de valider les certificatsansible_acx_no_proxy
: définissez surTrue
ouFalse
selon que Ansible doit contourner les proxys d'environnement pour se connecter à AOS-CXansible_aoscx_validate_certs
: définissez surTrue
ouFalse
selon que Ansible doit contourner la validation des certificats pour se connecter à AOS-CX. Requis uniquement lorsqueansible_connection
est défini suraoscx
ansible_aoscx_use_proxy
: définissez surTrue
ouFalse
selon que Ansible doit contourner les proxys d'environnement pour se connecter à AOS-CX. Requis uniquement lorsqueansible_connection
est défini suraoscx
.
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 :
- Définir les variables d'hôte afin qu'Ansible se connecte à l'hôte via l'API REST, comme vu ci-dessus.
- Dans le playbook, dans chaque jeu où les modules SSH/CLI sont utilisés, définissez
ansible_connection
surnetwork_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)
Ansible modules for configuring AOS-CX switches. (github repo - https://github.com/aruba/aoscx-ansible-role)
ansible-galaxy install arubanetworks.aoscx_role