Uso de complementos de inventario de Ansible Content Collections en Ansible Tower

Los entornos de TI son cada vez más complejos. En estas condiciones, es fundamental que el sistema de automatización TI cuente con información actualizada sobre los nodos presentes en la red y sujetos a procesamiento. En Red Hat Ansible Automation Platform, este problema se resuelve mediante el llamado inventario (inventario) – listas de nodos gestionados.

Uso de complementos de inventario de Ansible Content Collections en Ansible Tower

En su forma más simple, el inventario es un archivo estático. Esto es ideal cuando empiezas a trabajar con Ansible, pero a medida que aumenta la automatización, se vuelve insuficiente.

Y he aquí por qué:

  1. ¿Cómo se actualiza y mantiene una lista completa de nodos monitoreados cuando las cosas cambian constantemente, cuando las cargas de trabajo (y posteriormente los nodos en los que se ejecutan) van y vienen?
  2. ¿Cómo clasificar los componentes de la infraestructura de TI para seleccionar específicamente nodos para aplicar una automatización particular?

El inventario dinámico proporciona respuestas a ambas preguntas (inventario dinámico) – un script o complemento que busca nodos para automatizar, refiriéndose a la fuente de la verdad. Además, el inventario dinámico clasifica automáticamente los nodos en grupos para que pueda seleccionar con mayor precisión los sistemas de destino para realizar la automatización específica de Ansible.

Complementos de inventario brinde al usuario de Ansible la capacidad de acceder a plataformas externas para buscar dinámicamente nodos de destino y utilizar estas plataformas como fuente de verdad al crear un inventario. La lista estándar de fuentes en Ansible incluye plataformas en la nube AWS EC2, Google GCP y Microsoft Azure, y también hay muchos otros complementos de inventario para Ansible.

Ansible Tower viene con una serie de complementos de inventario, que funcionan desde el primer momento y, además de las plataformas en la nube enumeradas anteriormente, brindan integración con VMware vCenter, Red Hat OpenStack Platform y Red Hat Satellite. Para estos complementos, solo necesita proporcionar credenciales para conectarse a la plataforma de destino, después de lo cual pueden usarse como fuente de datos de inventario en Ansible Tower.

Además de los complementos estándar incluidos con Ansible Tower, existen otros complementos de inventario compatibles con la comunidad de Ansible. Con la transición a Colecciones de contenido de Red Hat Ansible Estos complementos comenzaron a incluirse en las colecciones correspondientes.

En esta publicación, tomaremos un ejemplo de cómo trabajar con el complemento de inventario para ServiceNow, una popular plataforma de administración de servicios de TI en la que los clientes suelen almacenar información sobre todos sus dispositivos en la CMDB. Además, la CMDB puede contener contexto que sea útil para la automatización, como información sobre los propietarios del servidor, niveles de servicio (producción/no producción), actualizaciones instaladas y ventanas de mantenimiento. El complemento de inventario de Ansible puede funcionar con ServiceNow CMDB y es parte de la colección servicenow en el portal galaxia.ansible.com.

repositorio git

Para utilizar un complemento de inventario de una colección en Ansible Tower, se debe configurar como fuente del proyecto. En Ansible Tower, un proyecto es una integración con algún tipo de sistema de control de versiones, como un repositorio git, que se puede utilizar para sincronizar no solo los manuales de automatización, sino también variables y listas de inventario.

Nuestro repositorio es realmente muy simple:

├── collections
│   └── requirements.yml
└── servicenow.yml

El archivo servicenow.yml contiene detalles para el inventario de complementos. En nuestro caso, simplemente especificamos la tabla en ServiceNow CMDB que queremos usar. También configuramos los campos que se agregarán como variables de nodo, además de cierta información sobre los grupos que queremos crear.

$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
  - key: sn_sys_class_name | lower
	prefix: ''
	separator: ''
  - key: sn_os | lower
	prefix: ''
	separator: ''

Tenga en cuenta que esto no especifica la instancia de ServiceNow a la que nos conectaremos de ninguna manera y no especifica ninguna credencial para la conexión. Todo esto lo configuraremos más adelante en Ansible Tower.

Colecciones de archivos/requisitos.yml necesario para que Ansible Tower pueda descargar la colección requerida y así obtener el complemento de inventario requerido. De lo contrario, tendríamos que instalar y mantener manualmente esta colección en todos nuestros nodos de Ansible Tower.

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

Una vez que hayamos enviado esta configuración al control de versiones, podemos crear un proyecto en Ansible Tower que haga referencia al repositorio correspondiente. El siguiente ejemplo vincula Ansible Tower con nuestro repositorio de GitHub. Preste atención a la URL de SCM: le permite registrar una cuenta para conectarse a un repositorio privado, así como especificar una rama, etiqueta o compromiso específico para verificar.

Uso de complementos de inventario de Ansible Content Collections en Ansible Tower

Creando credenciales para ServiceNow

Como se mencionó, la configuración en nuestro repositorio no contiene credenciales para conectarse a ServiceNow y no especifica la instancia de ServiceNow con la que nos comunicaremos. Por tanto, para configurar estos datos, crearemos credenciales en Ansible Tower. De acuerdo a Documentación del complemento de inventario ServiceNow, hay una serie de variables de entorno con las que configuraremos los parámetros de conexión, por ejemplo, así:

= username
    	The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE

    	set_via:
      	env:
      	- name: SN_USERNAME

En este caso, si se configura la variable de entorno SN_USERNAME, el complemento de inventario la usará como una cuenta para conectarse a ServiceNow.

También necesitamos configurar las variables SN_INSTANCE y SN_PASSWORD.

Sin embargo, no hay credenciales de este tipo en Ansible Tower donde pueda especificar estos datos para ServiceNow. Pero Ansible Tower nos permite definir tipos de credenciales personalizadas, puedes leer más sobre esto en el artículo. "Características destacadas de Ansible Tower: credenciales personalizadas".

En nuestro caso, la configuración de entrada para credenciales personalizadas para ServiceNow se ve así:

fields:
  - id: SN_USERNAME
	type: string
	label: Username
  - id: SN_PASSWORD
	type: string
	label: Password
	secret: true
  - id: SN_INSTANCE
	type: string
	label: Snow Instance
required:
  - SN_USERNAME
  - SN_PASSWORD
  - SN_INSTANCE

Estas credenciales se expondrán como variables de entorno con el mismo nombre. Esto se describe en la configuración del inyector:

env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'

Entonces, hemos definido el tipo de credencial que necesitamos, ahora podemos agregar una cuenta de ServiceNow y configurar la instancia, el nombre de usuario y la contraseña, así:

Uso de complementos de inventario de Ansible Content Collections en Ansible Tower

Creamos inventario

Entonces, ahora estamos todos listos para crear un inventario en Ansible Tower. Llamémoslo ServiceNow:

Uso de complementos de inventario de Ansible Content Collections en Ansible Tower

Después de crear el inventario, podemos adjuntarle una fuente de datos. Aquí especificamos el proyecto que creamos anteriormente e ingresamos la ruta a nuestro archivo de inventario YAML en el repositorio de control de fuente, en nuestro caso es servicenow.yml en la raíz del proyecto. Además, debe vincular su cuenta ServiceNow.

Uso de complementos de inventario de Ansible Content Collections en Ansible Tower

Para comprobar cómo funciona todo, intentemos sincronizar con la fuente de datos haciendo clic en el botón "Sincronizar todo". Si todo está configurado correctamente, entonces los nodos deberían importarse a nuestro inventario:

Uso de complementos de inventario de Ansible Content Collections en Ansible Tower

Tenga en cuenta que también se han creado los grupos que necesitamos.

Conclusión

En esta publicación, vimos cómo usar complementos de inventario de colecciones en Ansible Tower usando el complemento ServiceNow como ejemplo. También registramos de forma segura las credenciales para conectarnos a nuestra instancia de ServiceNow. Vincular un complemento de inventario de un proyecto no solo funciona con complementos personalizados o de terceros, sino que también se puede utilizar para modificar el funcionamiento de algunos inventarios estándar. Esto hace que Ansible Automation Platform se integre fácilmente y sin problemas con las herramientas existentes para automatizar entornos de TI cada vez más complejos.

Puede encontrar más información sobre los temas tratados en esta publicación, así como otros aspectos del uso de Ansible, aquí:

*Red Hat no ofrece garantías de que el código contenido aquí sea correcto. Todos los materiales se proporcionan sin respaldo a menos que se indique expresamente lo contrario.

Fuente: habr.com

Añadir un comentario