joe-speedboat.fact_inventory

Nombre del rol

joe-speedboat.fact_inventory

Descripción

Este rol de Ansible te permite recopilar hechos esenciales de varios recursos de punto final, proporcionando información valiosa para gestionar tu infraestructura. Ya sea que necesites desplegar máquinas virtuales, crear un resumen de tus recursos o visualizar topologías de red, este rol simplifica el proceso al recolectar hechos de diferentes puntos finales.

Características

  • Independiente de Recursos: Funciona con una variedad de recursos de punto final, como VMware vCenter, AWS, Azure, y más.
  • Fácil Configuración: Configuración sencilla usando variables YAML para especificar los recursos de los cuales deseas recopilar hechos.
  • Datos Estructurados: Recopila datos estructurados, incluyendo centros de datos, clústeres, anfitriones, máquinas virtuales, almacenes de datos, redes, y más.
  • Salida JSON: Genera un archivo JSON bien formateado con los hechos recopilados, adecuado para análisis o visualización posteriores.

Requisitos

  • Ansible >= 2.11
  • Python >= 3.6 (en el host objetivo)
  • Paquetes de Python:
  • Colección de Ansible:
    • community.vmware

Variables del rol

Las siguientes variables están disponibles para configuración:

  • inventory_file: La ruta al archivo de inventario. El valor predeterminado es /tmp/fact_inventory.json.
  • debug_vars: Un booleano para activar el modo de depuración. El valor predeterminado es True.
  • inventory_targets: Una lista de objetivos de los cuales recopilar hechos. Cada objetivo debe ser un diccionario con las siguientes claves:
    • ressource_name: El nombre del recurso.
    • type: El tipo del recurso (por ejemplo, "vsphere").
    • validate_certs: Un booleano para activar la validación de certificados.
    • vcenter_api_url: La URL de la API de vCenter.
    • vcenter_username: El nombre de usuario para la API de vCenter.
    • vcenter_password: La contraseña para la API de vCenter.
    • datacenter_regex: Una expresión regular para filtrar los centros de datos.
    • cluster_regex: Una expresión regular para filtrar los clústeres.
    • host_regex: Una expresión regular para filtrar los anfitriones.
    • datastore_regex: Una expresión regular para filtrar los almacenes de datos.
    • network_regex: Una expresión regular para filtrar las redes.
    • vm_folder_regex: Una expresión regular para filtrar las carpetas de VM.

Dependencias

Ninguna.

Licencia

GPLv3

Uso

Para usar este rol, debes especificar las variables en la lista inventory_targets en tu libro de jugadas o en el archivo defaults/main.yml. Cada elemento de la lista representa un objetivo del cual recopilar hechos.

Las variables datacenter_regex, cluster_regex, host_regex, datastore_regex, network_regex y vm_folder_regex te permiten filtrar los resultados de la API de vSphere. Estas variables aceptan expresiones regulares. Por ejemplo, si deseas recopilar hechos solo de centros de datos cuyos nombres comienzan con "dc", puedes establecer datacenter_regex a '^dc'.

Pruebas

Antes de ejecutar las pruebas, necesitas crear un archivo vars.yml en el directorio tests con tu configuración específica. Puedes hacer esto copiando el archivo vars_example.yml:

cp tests/vars_example.yml tests/vars.yml

Luego, completa el archivo vars.yml con tus valores específicos, incluyendo las expresiones regulares para filtrar.

Para ejecutar las pruebas, ejecuta el siguiente comando:

ansible-playbook tests/test.yml -i tests/inventory

Este comando ejecutará el libro de jugadas test.yml utilizando el archivo de inventario ubicado en el directorio tests.

Script CGI para Opciones de Rundeck

Con Rundeck y JSON, puedes crear menús de trabajo excelentes.
Pero para eso necesitas configurar el servidor CGI primero y usarlo con el archivo de recursos JSON, creado por este rol.
Aquí está cómo configurar lighttpd con CGI en Rocky Linux 8:

dnf install lighttpd
systemctl enable lighttpd

cp -av /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.orig
cp -av /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
cp -av /etc/lighttpd/conf.d/cgi.conf /etc/lighttpd/conf.d/cgi.conf.orig

sed -i 's@.*\(include.*conf.d/cgi.conf"\).*@\1@' /etc/lighttpd/modules.conf
sed -i 's@.*server\.use-ipv6.*@server\.use-ipv6 = "disable"@' /etc/lighttpd/lighttpd.conf
sed -i 's@.*server\.bind.*@server\.bind = "localhost"@' /etc/lighttpd/lighttpd.conf
sed -i 's@.*server\.port.*@server\.port = 8888@' /etc/lighttpd/lighttpd.conf
semanage port -a -t http_port_t -p tcp 8888
systemctl restart lighttpd
systemctl status lighttpd

lsof -i -P -n | grep light

test -f /usr/bin/python && ln -s /usr/bin/python3 /usr/bin/python

mkdir -p /var/www/lighttpd/cgi-bin

vi /var/www/lighttpd/cgi-bin/test.cgi
------------------
#!/usr/bin/env python3

print("Content-Type: text/html")  # HTML sigue
print()  # línea en blanco, fin de encabezados
print("<html>")
print("<head><title>Hola CGI</title></head>")
print("<body>")
print("<h1>Hola Mundo</h1>")
print("</body>")
print("</html>")
----------------------
chmod +x /var/www/lighttpd/cgi-bin/test.cgi

curl http://127.0.0.1:8888/cgi-bin/test.cgi

En este rol, proporcioné un CGI que se puede usar para servir estas opciones, está en tests/cgi-bin/option.py, solo cópialo al directorio cgi-bin, actualiza la ubicación del archivo JSON y llámalo.
Ten en cuenta que este CGI es solo una prueba de concepto en este momento, rápido y sucio.

cp tests/cgi-bin/option.py /var/www/lighttpd/cgi-bin/option.cgi
chmod +x /var/www/lighttpd/cgi-bin/option.cgi
vi /var/www/lighttpd/cgi-bin/option.cgi # actualiza la ubicación del archivo JSON

Y luego puedes llamarlo dentro de Rundeck:

[ "Datacenter1" ]
[ "Cluster1" ]
[ "LUN_01_VM_Replica", "LUN_02_VM_Replicas" ]

Y esto es bastante asombroso ... con muy poco esfuerzo.

Acerca del proyecto

Create JSON Ressource file of various vSphere endpoints

Instalar
ansible-galaxy install joe-speedboat.fact_inventory
Licencia
gpl-3.0
Descargas
4.5k
Propietario
I don't do Linux for 20 years because I love Unix or consoles. OpenSource is what I love and want to do. moving together ... that fascinates me ...