arubanetworks.aruba_central_role
aruba-central-ansible-role
Este rol de Ansible para redes proporciona un conjunto de módulos y complementos de gestión de configuración dependientes de la plataforma, diseñados específicamente para Aruba Central, que es un sistema de gestión de redes basado en la nube.
Requisitos
Python 3.5 o superior
Ansible 2.9 o posterior
- Ansible 2.10 o superior requiere que se instale la colección
ansible.netcommon
- Ansible 2.10 o superior requiere que se instale la colección
La versión mínima de firmware soportada de Aruba Central es 2.5.2
Instala todos los requisitos de Ansible con el siguiente comando:
ansible-galaxy install -r requirements.yml
Instala todos los requisitos de Python con el siguiente comando:
pip install -r requirements.txt
Instalación
A través de Galaxy:
ansible-galaxy install arubanetworks.aruba_central_role
A través de Github, usa el siguiente comando. Usa la opción -f
para sobrescribir la versión actual del rol:
ansible-galaxy install git+https://github.com/aruba/aruba-central-ansible-role.git
Notas
- Los módulos en este rol utilizan la API REST de Central. Para información sobre la API REST y cómo obtener acceso para usarla, visita el Aruba Developer Hub: Introducción a la API REST
- Debe crearse un token de API para un usuario en el Gateway de API de Aruba Central y se debe usar un
access_token
válido y no expirado. Para más información sobre cómo comenzar con el Gateway de API, también puedes ver este Video de YouTube. - Un token de acceso válido se puede usar en un archivo de inventario como se menciona en la sección de Inventario.
- Asegúrate de que el token de acceso fue creado con "Operaciones de Red" seleccionado en la lista desplegable de Aplicaciones al agregar un nuevo token en el Gateway de API.
- Una vez que se genera un nuevo token, tendrá un
access_token
y unrefresh_token
. - Un token de acceso es válido por un período de 7200 segundos o dos horas. Después de dos horas, caducará y se necesita crear un nuevo token. El tiempo de caducidad del token actualmente no es configurable.
- El
refresh_token
junto con elclient_id
y elclient_secret
se utilizan para renovar el token de acceso. Esta funcionalidad está implementada en este rol utilizando un complemento de inventario. Puedes usar un archivo de inventario o un archivo de configuración del complemento de inventario para utilizar el complemento. - Más detalles sobre cómo usar este archivo de configuración del complemento con tokens y otras credenciales para la renovación automática de tokens se mencionan a continuación en la sección de Archivo de Configuración del Complemento de Inventario.
Archivo de Inventario/Host
Hay dos formas en las que puedes usar un archivo de inventario o host con el Rol de Ansible para Aruba Central:
- Inventario
- Archivo de host que indica a Ansible el complemento httpapi requerido junto con algunos otros detalles y el token de acceso.
- Archivo de Configuración del Complemento de Inventario o Fuente del Inventario
- Un archivo de fuente de inventario utilizado por el complemento de inventario.
- Una implementación típica del complemento de inventario tiene un script de complemento (generalmente escrito en Python) y una fuente de inventario (en este caso es un archivo YAML).
- Según la documentación de Ansible, las fuentes de inventario son las cadenas de entrada con las que trabajan los complementos de inventario. Una fuente de inventario puede ser una ruta a un archivo o a un script, o puede ser datos en bruto que el complemento puede interpretar para generar variables de inventario dinámicamente.
- Solo se aceptan archivos
.yml
con variables del Archivo de Configuración del Complemento de Inventario como fuente de inventario por el complemento de inventario para este rol.
- Puedes usar cualquiera de los archivos anteriores dependiendo de tus necesidades.
- Si no requieres la renovación automática de tokens, usa el simple Archivo de Inventario
- O, si deseas tener la renovación automática de tokens, usa un Archivo de Configuración del Complemento de Inventario para el Complemento de Inventario.
Inventario
Variables del Inventario
Las variables que deben ser definidas en tu inventario para tu cuenta de Aruba Central son:
ansible_host
: URL base específica del clúster para el API Gateway en Aruba Central en formato FQDN, que se puede encontrar en la URL de Documentación de la API en el API Gatewayansible_connection
: Siempre debe estar establecido enhttpapi
ansible_network_os
: Siempre debe estar establecido enaruba_central
ansible_httpapi_use_ssl
: Siempre debe estar establecido enTrue
ansible_httpapi_central_access_token
: Token de acceso a la API de Aruba Central
Ejemplo de Inventario:
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
Archivo de Configuración del Complemento de Inventario
- Este es un archivo de fuente de inventario que es utilizado por el complemento de inventario para generar dinámicamente un inventario con todas las opciones (como se muestra arriba en el archivo simple de Inventario) requeridas por el Complemento de Conexión HttpAPI.
- El usuario necesita crear un archivo de configuración que contenga el nombre del complemento y otras credenciales de Central.
Advertencias
- Convencionalmente, un complemento de inventario no puede ser incluido dentro de un rol ya que Ansible ejecuta el complemento de inventario antes de la ejecución del Playbook o Rol. Más información se puede encontrar en la Documentación de Ansible.
- Por lo tanto, hasta que publiquemos la Colección de Ansible para Aruba Central, debes realizar el siguiente método alternativo para usar el complemento de inventario personalizado para este rol de Ansible para Central, lo cual se encargará de la renovación automática de tokens.
Método 1:
- Copia el archivo del complemento de inventario
central_inventory.py
de GitHub y guárdalo dentro de un directorioinventory_plugins
en tu directorio de playbooks. - Tu directorio de playbooks debería tener la siguiente estructura:
playbooks_dir
+-- playbook1.yml
+-- playbook2.yml
+-- inv_src.yml
+-- inventory_plugins/
| +-- central_inventory.py
- Donde
**inv_src.yml**
o cualquier otro archivo**.yml**
con un nombre diferente puede actuar como el Archivo de Configuración del Complemento de Inventario. Ejemplo de Archivo de Configuración del Complemento de Inventario y las variables que usa se dan a continuación. - El Archivo de Configuración del Complemento de Inventario no debe usarse con Ansible Vault ya que el complemento de inventario necesita escribir los tokens de acceso y de renovación renovados de nuevo en el archivo de configuración del complemento.
- Inicialmente, el usuario debe asegurarse de que un Token de Acceso y un Token de Renovación válidos han sido ingresados en el Archivo de Configuración del Complemento de Inventario por primera vez. Si ambos tokens son inválidos, el complemento de inventario modificará el archivo con el mensaje <Ingrese un Token de Acceso/Renovación Válido> en el Archivo de Configuración del Complemento de Inventario y la ejecución fallará con un error de "No autorizado".
- El
refresh_token
de Central es válido por un período de 14 días. Si no se usa en 14 días, el token será revocado y se deberá crear un nuevo token. La validez del token de renovación no es configurable en este momento.
Método 2:
- Una vez que el rol está instalado, ve al directorio de roles. Usa los siguientes comandos para obtener la ruta donde está instalado el rol y mueve el directorio inventory_plugins con el archivo del complemento.
$ ansible-galaxy role list
------------------output-----------------
# /home/admin/.ansible/roles
- arubanetworks.aruba_central_role, 0.2.1
- Selecciona la ruta y ve al directorio de roles
- El nombre del rol puede diferir según cómo decidiste instalarlo
- Una vez que tengas la ruta, mueve el directorio del complemento de inventario a tu directorio de playbooks
$ cd /home/admin/.ansible/roles
$ cd arubanetworks.aruba_central_role
o
$ cd aruba-central-ansible-role
$ mv inventory_plugins/ <ruta_a_directorio_de_playbooks>
Variables del Archivo de Configuración del Complemento de Inventario
Las variables que deben ser definidas en tu archivo de configuración del complemento de inventario para tu cuenta de Aruba Central son:
access_token
: Token de Acceso a la API de Aruba Central.api_gateway
: URL base específica del clúster para el API Gateway en Aruba Central en formato FQDN, que se puede encontrar en la URL de Documentación de la API en el API Gatewayclient_id
: ID del Cliente de la API de Aruba Centralclient_secret
: Secreto del Cliente de la API de Aruba Centralhost
: Siempre debe estar establecido encentral
plugin
: Siempre debe estar establecido encentral_inventory
refresh_token
: Token de renovación de la API de Aruba Central
Ejemplo de Archivo de Configuración del Complemento de Inventario:
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
Ejemplo de Playbooks
Incluir el Rol
Si el rol se instaló a través de Galaxy establece el rol en arubanetworks.aruba_central_role
:
---
- hosts: all
roles:
- role: arubanetworks.aruba_central_role
tasks:
- name: Obtener todos los Grupos de UI y Plantillas en Central
central_groups:
action: get_groups
limit: 20
offset: 0
Si el rol se instaló a través de Github establece el rol en aruba-central-ansible-role
:
---
- hosts: all
roles:
- role: aruba-central-ansible-role
tasks:
- name: Obtener todos los Grupos de UI y Plantillas en Central
central_groups:
action: get_groups
limit: 20
offset: 0
Ejecución del Playbook
ansible-playbook playbook.yml -i inventory.yml
- Donde
inventory.yml
puede ser un simple archivo de inventario o un archivo de configuración del complemento de inventario (fuente de inventario). - Asegúrate de tener el
central_inventory.py
en el directorioinventory_plugins/
antes de ejecutar el playbook usando el archivo de configuración del complemento de inventario.
Contribución
En Aruba Networks estamos dedicados a garantizar la calidad de nuestros productos, así que si encuentras algún problema por favor reporte un problema en nuestro Github y responderemos rápidamente.
Para más oportunidades de contribución sigue nuestras pautas que se detallan en nuestro CONTRIBUTING.md
Licencia
MIT
Información del Autor
- 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