Cómo usar inventarios estáticos y dinámicos en Ansible - Parte 4

Cómo usar inventarios estáticos y dinámicos en Ansible - Parte 4

En esto Parte 4 de la serie Ansible, explicaremos cómo usar un inventario estático y dinámico para definir grupos de huéspedes en Ansible.

En un Ansible, hosts o servidores administrados que están controlados por el Nodo de control ansible se definen en un archivo de inventario de host Como se explica en. Un archivo de inventario de host es un archivo de texto que consiste en nombre de host o Direcciones IP de hosts administrados o servidores remotos.

Anfitriones administrados se puede enumerar como entradas individuales o categorizar bajo un nombre de grupo, como veremos más adelante. En Ansible, hay dos tipos de archivos de inventario: Estático y Dinámica.

Echemos un vistazo a cada uno de estos y veamos cómo podemos administrarlos. A estas alturas, suponemos que ya ha instalado Ansible en su nodo de control y configuró una conexión SSH sin contraseña a sus hosts administrados.

Archivo de inventario de host estático

En Ansible, Un archivo de inventario estático es un archivo de texto sin formato que contiene una lista de hosts administrados declarados en un grupo de host utilizando nombres de host o direcciones IP.

Un nombre de grupo de host está encerrado en los soportes cuadrados I.mi [Nombre del grupo]. Las entradas de host administradas se enumeran más tarde debajo del nombre del grupo, cada una en su propia línea. Como se discutió anteriormente, los hosts se enumeran utilizando nombres de host o direcciones IP.

[Nombre del grupo] Host a IP_Address Host B IP_Address Host C IP_Address 

Para fines de ilustración, crearemos un archivo de inventario estático.

# mkdir test_lab && cd test_lab # vim hosts 
Archivo de inventario estático
[servidores web] 173.82.115.165 [Database_servers] 173.82.220.239 [centro de datos: niños] WebServers Database_Servers 

Guarda el archivo y cierra.

Como puede ver en el archivo de inventario anterior, hemos creado 2 grupos de host: servidores web y database_servers. Además, hemos creado un grupo adicional llamado centro de datos que incluye un grupo de grupos anfitriones denotados por ': niños' sufijo como se ve arriba.

Ansible también permite colocar grupos de hosts bajo un nombre de grupo. En el archivo de inventario anterior, el servidores web y database_servers Se han colocado grupos bajo el centro de datos.

NOTA: No es obligatorio colocar anfitriones administrados en un grupo anfitrión. Simplemente puede enumerarlos usando sus nombres de host o direcciones IP, por ejemplo,.

173.82.202.239 172.82.115.165 load_balancer.PNL.comunicarse 

Ahora usemos algunos comandos Ansible para hacer referencia al archivo de inventario del host. La sintaxis básica para la gestión del inventario es como se muestra.

$ ansible host-patern -i/rath/of/inventary/file --list-hosts 

Por ejemplo,

$ ansible All -i/root/test_labs/hosts --list -Hosts 
Lista de hosts ansible

Alternativamente, puedes usar el personaje comodín * para reemplazar 'todo' argumento.

$ ansible * -i/root/test_labs/hosts --list -hosts 
Lista de anfitriones ansables que usan comodines

Para enumerar los hosts en un grupo, especifique el grupo de host en el lugar del patrón de host.

$ Ansible WebServers -i/root/test_labs/hosts --list -anhosts 
Lista de anfitriones ansibles en grupo

Archivo de inventario de host dinámico

En una configuración, especialmente una configuración de nubes como AWS Cuando el archivo de inventario se mantiene constantemente cambiando a medida que agrega o los servidores de desmantelamiento, mantener las pestañas en los hosts definidos en el archivo de inventario se convierte en un verdadero desafío. Se vuelve inconveniente volver al archivo de host y actualizar la lista de hosts con sus direcciones IP.

Y aquí es donde un inventario dinámico viene a jugar. Entonces, ¿qué es un inventario dinámico?? Un inventario dinámico es un script escrito en Python, PHP o cualquier otro lenguaje de programación. Es útil en entornos en la nube, como AWS, donde las direcciones IP cambian una vez que se detiene un servidor virtual y se inicia nuevamente.

Ansible ya ha desarrollado scripts de inventario para plataformas de nube pública como Google Compute Engine, Amazon EC2 Instance, OpenStack, Rackspace, Cobbler, entre otros.

¿Cuáles son las ventajas de un inventario dinámico sobre un inventario estático??
  • Los inventarios dinámicos hacen un trabajo perfecto para reducir el error humano a medida que la información se recopila utilizando scripts.
  • Se requiere un esfuerzo mínimo para administrar inventarios.

Puede escribir su propio inventario dinámico de personalización en un lenguaje de programación de su elección. El inventario debe devolver un formato en JSON cuando se pasan las opciones apropiadas.

Utilizar un script de inventario dinámico existente

Se debe ejecutar un script que se utiliza para crear un inventario dinámico para que Ansible pueda usarlo.

Para recuperar información sobre los hosts dentro de un script de inventario dinámico, simplemente se ejecute.

# ./Script -Lista 

Como señaló anteriormente, la salida debe estar en JSON en el formato a continuación.

Un diccionario compuesto por grupos (i.e servidores web, base de datos_servers)
  • Una lista de hosts administrados por grupo
  • Un diccionario de variables
Meta diccionario
  • Anfitriones y hostvars
Salida de muestra
"WebServers": "Hosts": ["WebServer1.ejemplo.com "," WebServer2.ejemplo.com "]," vars ": ," database_servers ": " hosts ": [" mysql_db1 "," mysql_db2 "]," vars ": ," _meta ": " hostvars ": " " mysql_db2 ": ," WebServer2.ejemplo.com ": ," WebServer1.ejemplo.com ": ," mysql_db1 ":  
Conclusión

En este artículo, hemos demostrado cómo crear inventarios estáticos y dinámicos. En resumen, un archivo de inventario estático es un archivo de texto sin formato que contiene una lista de hosts administrados o nodos remotos cuyos números y direcciones IP siguen siendo bastante constantes.

Por otro lado, un archivo de host dinámico sigue cambiando a medida que agrega nuevos hosts o la desmantelamiento antiguos. Las direcciones IP de los hosts también son dinámicas a medida que se detiene y inicia nuevos sistemas de host. Esperamos que hayas encontrado este tutorial informativo.