Administre Ansible Inventory con hosts y vars dinámicos y estáticos

Administre Ansible Inventory con hosts y vars dinámicos y estáticos

Me pregunto cuál sería una buena solución para administrar un entorno con una combinación de hosts, variables y grupos dinámicos y estáticos.

Estoy pensando en una combinación de hosts físicos en un centro de datos con una combinación de tareas específicas (nodo de base de datos física) más hosts Proxmox que administran algunas máquinas virtuales dinámicas, junto con algunos proveedores de nube para administrar nuevas máquinas virtuales en alguna situación, donde el rendimiento físico es no es suficiente (subcontratar pruebas de rendimiento).

En ese caso, un inventario dinámico es una buena práctica. Por supuesto, existen algunos complementos para AWS, Hetzner, etc. ¿Pero es posible combinarlos con entradas estáticas?

Construyo una base de datos con todas las entradas y scripts que actualiza la lista de máquinas virtuales en la nube por solicitud en la base de datos. Todos los hosts dinámicos junto con los hosts estáticos y algunas variables de grupo, las variables de host se almacenan en la base de datos. Y hay un servicio web que genera el inventario dinámico JSON que carga un script de Python y que se utiliza como inventario dinámico en mis libros de estrategias.

Mi pregunta es: ¿soy el único que tiene este tipo de configuración? Cuando pienso en una empresa con algunos hosts VMWare junto con una cantidad dinámica de máquinas virtuales en esos hosts más algunos otros sistemas físicos, estaría "claro" que debería haber algún tipo de "herramienta" o ayuda para esta configuración. Pero hasta donde puedo ver, hay un inventario estático (YAML, INI) o un inventario dinámico (JSON). Pero, ¿cada administrador desarrolla su propia base de datos de inventario dinámico? ¿O existe un "producto" o "proyecto" de software determinado? ¿O es una "mejor" práctica tener inventarios diferentes para entornos "estáticos" y "dinámicos"?

Respuesta1

Ansible tiene varios lanzadoscomplementos de inventario. Sí, puede combinarlos, ya sea como -iopciones múltiples o especificar un directorio que contenga múltiples inventarios.

Por ejemplo, es posible que tenga todos estos directorios en inventory/stage/y :inventory/prod/

  • hcloud para Hetzner
  • aws_ec2 para AWS
  • YAML con una lista de hosts estática
  • Su script de inventario personalizado
  • construido para generar grupos y vars a partir de expresiones

Los nombres de los grupos deben ser consistentes para un tema determinado, por lo que las obras pueden usar patrones estáticos.

Construidoes bastante ordenado. Utilice expresiones Jinja sobre hechos del inventario o hosts para crear grupos y variables. Por ejemplo, es posible que desee que alguna etiqueta ec2, además de alguna expresión regular del nombre de host, sean miembros de un grupo.

Si esto no fuera suficiente, puede escribir sus propios complementos de inventario. Por lo general, estos hablan con una API, por ejemplo, si pirateas un complemento de inventario de Proxmox. O abandone el inventario múltiple en el lado de Ansible, busque una herramienta de nube múltiple que funcione para usted y haga que emita JSON para el inventario.

información relacionada