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

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

En esta Parte 4. de la serie Ansible, explicaremos cómo utilizar el inventario estático y dinámico para definir grupos de hosts en Ansible.

En un Ansible. los hosts o servidores administrados que están controlados por el nodo de control de 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 consta de nombres de host. o direcciones IP. de hosts administrados o servidores remotos.

Los hosts administrados. pueden aparecer como entradas individuales o categorizados bajo un nombre de grupo como veremos más adelante. En Ansible, hay dos tipos de archivos de inventario: estáticos. y dinámicos.

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

Archivo de inventario de host estático

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

freestar.config.enabled_slots.push (LocationName: “tecmint_incontent”, slotId: “tecmint_incontent” );

El nombre de un grupo de hosts se incluye entre corchetes, es decir, [nombre del grupo]. Las entradas del host administrado se enumeran más adelante debajo del nombre del grupo, cada una en su propia línea. Como se mencionó anteriormente, los hosts se enumeran utilizando nombres de host o direcciones IP.

[nombre de grupo]. Host A ip_address Host B ip_address Host c ip_address

Con fines ilustrativos, crearemos un archivo de inventario estático.

# mkdir test_lab && cd test_lab # vim hosts Archivo de inventario estático [webservers]. 173.82.115.165 [database_servers]. 173.82.220.239 [centro de datos: niños]. webservers database_servers

Guarde el archivo y salga.

Como puede ver en el archivo de inventario anterior, hemos creado 2 grupos de hosts: webservers. y database_servers. Además, hemos creado un grupo adicional llamado centro de datos. que incluye un grupo de grupos de hosts indicados por el sufijo ‘: niños’ como se ve arriba.

Ansible también permite que los grupos de hosts sean colocado debajo de un nombre de grupo. En el archivo de inventario anterior, los grupos servidores web. y servidores_de_base de datos. se han colocado en el centro de datos.

NOTA. No es obligatorio colocar hosts administrados en un grupo de hosts. Puede simplemente enumerarlos usando sus nombres de host o direcciones IP, por ejemplo.

173.82.202.239 172.82.115.165 load_balancer.pnl.com

Usemos ahora algunos comandos de Ansible para hacer referencia al archivo de inventario del host. La sintaxis básica para la administración de inventario es la que se muestra.

$ ansible host-pattern-i/path/of/Inventory/file–list-hosts

Por ejemplo,

$ ansible all-i/root/test_labs/hosts–list-hosts  Lista de hosts de Ansible  Lista de hosts de Ansible Lista de hosts de Ansible

Alternativamente, puede usar el carácter comodín * para reemplazar el argumento ‘todos’.

$ ansible *-i/root/test_labs/hosts–list-hosts  Lista de hosts Ansible usando comodines Lista de hosts Ansible usando comodines Lista de hosts Ansible usando comodines

Para enumerar hosts en un grupo, especifique el grupo de hosts en el lugar de host-pattern.

$ ansible webservers-i/root/test_labs/hosts–list-hosts  Lista de hosts Ansible en grupo Lista de hosts Ansible en el grupo Enumere los hosts de Ansible en el archivo de inventario de host dinámico de grupo

En una configuración, especialmente una configuración en la nube como AWS. donde el archivo de inventario cambia constantemente a medida que agrega o da de baja servidores, manteniendo 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 entra en juego un inventario dinámico. 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. Resulta útil en entornos de nube como AWS, donde las direcciones IP cambian una vez que un servidor virtual se detiene y se vuelve a iniciar.

Ansible ya ha desarrollado scripts de inventario para plataformas de nube pública como Google Compute Engine, instancia de Amazon EC2, OpenStack, RackSpace, zapatero, 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, ya que la información se recopila mediante secuencias de comandos.
  • Se requiere un esfuerzo mínimo para administrar los inventarios.

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

Utilice un script de inventario dinámico existente

Un script que se usa para crear un inventario dinámico debe ser ejecutable para que Ansible pueda usarlo.

Para recuperar información sobre los hosts dentro de un script de inventario dinámico, simplemente ejecútelo.

# ./script–list

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

Un diccionario que consta de grupos (es decir, servidores web, servidores de bases de datos)

  • Una lista de hosts administrados por grupo
  • Un diccionario de variables

Meta diccionario

  • Hosts y hostvars

Salida de muestra “webservers”: “hosts”: [“webserver1.example.com”, “webserver2.example.com”], “vars”: , “database_servers”: “hosts”: [“mysql_db1”, “mysql_db2”], “vars”: , “_meta”: “hostvars”: “mysql_db2”: , “webserver2. example.com “: , “webserver1.example.com”: , “mysql_db1”: Conclusión

En este artículo, hemos demostrado cómo crear inventarios tanto estáticos como 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 permanecen bastante constantes.

Por otro lado, un archivo de host dinámico sigue cambiando a medida que usted agregue nuevos hosts o retire los antiguos. Las direcciones IP de los hosts también son dinámicas a medida que detiene e inicia nuevos sistemas host. Esperamos que este tutorial le haya resultado informativo.