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 de vital importancia que un sistema de automatización de TI tenga información actualizada sobre los nodos que están presentes en la red y están sujetos a procesamiento. En Red Hat Ansible Automation Platform, este problema se resuelve a través del llamado El inventario ( inventario a ), la lista de nodos administrados.







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



Y es por eso:



  1. ¿Cómo actualizar y mantener actualizada una lista completa de nodos monitoreados cuando algo cambia constantemente, cuando las cargas de trabajo, y después de ellas los nodos en los que se ejecutan, aparecen y desaparecen?
  2. -, ?


Las respuestas a estas dos preguntas dan un inventori dinámico ( el inventario dinámico a ): el script o complemento que busca ser las unidades de automatización, refiriéndose a la fuente de la verdad (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 una automatización Ansible.



Los complementos de inventario brindan al usuario de Ansible la capacidad de acceder a plataformas externas para encontrar dinámicamente los nodos de destino y utilizar estas plataformas como una fuente de verdad al formar inventarios. La lista de fuentes estándar de Ansible incluye plataformas en la nube AWS EC2, Google GCP y Microsoft Azure, y hay muchos otros complementos de inventario para Ansible.



Ansible Tower viene con una serie de complementos de inventario que funcionan de inmediato y, además de las plataformas en la nube anteriores, brindan integración con VMware vCenter, Red Hat OpenStack Platform y Red Hat Satellite. Para estos complementos, es suficiente proporcionar credenciales para conectarse a la plataforma de destino, después de lo cual se pueden usar como fuente de datos de inventario en Ansible Tower.



Además de los complementos estándar suministrados con Ansible Tower, existen otros complementos de inventario compatibles con la comunidad de Ansible. Con el cambio a las colecciones de contenido de Red Hat Ansible, estos complementos se han incluido en sus respectivas colecciones.



En esta publicación, tomaremos un ejemplo de cómo trabajar con un complemento de inventario para ServiceNow, una popular plataforma de administración de servicios de TI, en la que los clientes a menudo almacenan información sobre todos sus dispositivos en la CMDB. Además, la CMDB puede contener un contexto útil para la automatización, como información sobre los propietarios de servidores, niveles de servicio (producción / no producción), actualizaciones instaladas y ventanas de mantenimiento. Ansible plugin de inventario puede trabajar con CMDB ServiceNow y es parte de la ServiceNow recogida en galaxy.ansible.com .



Repositorio de Git



Para utilizar un complemento de inventario de la colección en Ansible Tower, debe establecerse como la 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 de git, que se puede usar para sincronizar no solo los manuales de automatización, sino también las variables y las listas de inventario.



Nuestro repositorio es realmente muy simple:



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


El archivo servicenow.yml contiene los detalles del inventario de complementos. En nuestro caso, simplemente especificamos la tabla en CMDB ServiceNow que queremos usar. Y 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 conectarse. Configuraremos todo esto más adelante en Ansible Tower.



El archivo collections / requirements.yml es 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 código fuente, podemos crear un proyecto en Ansible Tower que se vincule al repositorio correspondiente. El siguiente ejemplo vincula la Ansible Tower a 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 confirmación específica para el pago.







Cree credenciales para ServiceNow



Como se indicó, la configuración en nuestro repositorio no contiene credenciales para conectarse a ServiceNow y no desarrolla la instancia de ServiceNow con la que nos comunicaremos. Por lo tanto, para configurar estos datos, crearemos credenciales en Ansible Tower. Según la documentación del plugin de inventario ServiceNow , existen 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 establece la variable de entorno SN_USERNAME, el complemento de inventario la usará como una cuenta para conectarse a ServiceNow.



También necesitamos establecer las variables SN_INSTANCE y SN_PASSWORD.



Sin embargo, Ansible Tower no tiene credenciales de este tipo, donde se podrían especificar estos datos para ServiceNow. Pero Ansible Tower nos permite definir tipos de credenciales personalizados , puede leer más sobre esto en el artículo "Destacado de características 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 puede agregar la cuenta de ServiceNow y configurar la instancia, el nombre de usuario y la contraseña, así:







Creamos inventario



Así que ahora estamos listos para crear un inventario en Ansible Tower. Llamémoslo ServiceNow:







Después de crear el inventario, podemos adjuntarle una fuente de datos. Aquí indicamos 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, la cuenta de ServiceNow debe estar vinculada.







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 deben importarse a nuestro inventario:







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



Conclusión



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



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





*Red Hat . , .



All Articles