Una vez que tenemos Ansible instalado y funcionando, el siguiente paso fundamental es entender qué es el inventario y cómo configurarlo para gestionar nuestras máquinas. El inventario, o inventory en inglés, es básicamente la lista de todos los hosts o servidores que queremos administrar con Ansible. Puede ser tan simple como un único servidor para una aplicación pequeña, o tan complejo como una infraestructura con decenas de nodos distribuidos en diferentes ubicaciones y con distintas funciones.
Este inventario se configura habitualmente en un archivo llamado hosts, que suele encontrarse en el directorio /etc/ansible/hosts. En este archivo, cada línea representa un host, que puede ser una IP o un nombre de dominio. Por ejemplo, podríamos tener algo así:
green.example.com
blue.example.com
101.10.10.10
110.10.10.10
Esto indica que tenemos cuatro máquinas que Ansible podrá administrar. Si nuestra infraestructura es más compleja, podemos usar patrones para simplificar la escritura. Por ejemplo, si tenemos varias bases de datos con nombres secuenciales como db1.makigas.es, db2.makigas.es y db3.makigas.es, podemos escribirlo así:
db[1:3].makigas.es
Esto es equivalente a listar cada uno de los hosts por separado, pero mucho más práctico cuando hay muchos nodos.
Además, el archivo de inventario nos permite agrupar servidores según su función. Para ello, definimos grupos entre corchetes. Por ejemplo, podríamos tener un grupo de servidores web y otro de bases de datos:
[webservers]
green.example.com
blue.example.com
[dbservers]
db1.makigas.es
db2.makigas.es
db3.makigas.es
Esta agrupación es muy útil porque nos permite ejecutar tareas específicas solo en los servidores que correspondan a un grupo. Por ejemplo, podemos instalar un servidor web únicamente en los hosts del grupo webservers, y configurar bases de datos solo en los del grupo dbservers. Esto evita que se ejecuten tareas innecesarias en máquinas que no corresponden a esa función.
En infraestructuras más complejas, donde hay servidores distribuidos en diferentes datacenters o con roles variados, esta organización en grupos facilita mucho la gestión y automatización. Podemos incluso tener grupos anidados o usar variables específicas para cada grupo, pero eso ya es un paso más avanzado.
Para empezar, basta con crear un archivo de inventario sencillo con las IPs o nombres de dominio de nuestras máquinas, y luego usar Ansible para ejecutar comandos o tareas sobre esos hosts. Así, podemos ir probando y aprendiendo cómo funciona la automatización con Ansible de forma práctica y progresiva.