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
  • 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 un refresh_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 el client_id y el client_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:

  1. Inventario
    • Archivo de host que indica a Ansible el complemento httpapi requerido junto con algunos otros detalles y el token de acceso.
  2. 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.

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 Gateway
  • ansible_connection: Siempre debe estar establecido en httpapi
  • ansible_network_os: Siempre debe estar establecido en aruba_central
  • ansible_httpapi_use_ssl: Siempre debe estar establecido en True
  • 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 directorio inventory_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 Gateway
  • client_id: ID del Cliente de la API de Aruba Central
  • client_secret: Secreto del Cliente de la API de Aruba Central
  • host: Siempre debe estar establecido en central
  • plugin: Siempre debe estar establecido en central_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 directorio inventory_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)
Acerca del proyecto

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)

Instalar
ansible-galaxy install arubanetworks.aruba_central_role
Licencia
mit
Descargas
83.8k