En Ansible, las variables permiten personalizar las configuraciones sin modificar el código base de los playbooks, lo que facilita la reutilización y escalabilidad. Junto a esto, los ficheros de inventario nos permiten definir los servidores y grupos sobre los que actuará Ansible.
En este artículo, veremos cómo estructurar el inventario, cómo usar variables y cómo aplicarlas en un playbook.

1. Ficheros de Inventario en Ansible
El inventario define los hosts y grupos en los que Ansible ejecutará tareas. Se puede escribir en formato INI o YAML.
Ejemplo en formato INI (inventory.ini
):
[nodos_web]
nodo1 ansible_host=192.168.1.10 ansible_user=ubuntu
nodo2 ansible_host=192.168.1.11 ansible_user=ubuntu
Ejemplo en formato YAML (inventory.yml
):
all:
hosts:
nodo1:
ansible_host: 192.168.1.10
ansible_user: ubuntu
nodo2:
ansible_host: 192.168.1.11
ansible_user: ubuntu
children:
nodos_web:
hosts:
nodo1:
nodo2:
💡 Recomendación: Usa YAML si trabajas con estructuras más complejas o necesitas definir variables dentro del inventario.
2. Variables en Ansible
Las variables en Ansible pueden definirse de varias formas:
- En el playbook
- En el inventario
- En archivos externos (
group_vars
yhost_vars
) - Como argumentos en línea de comandos
Definiendo Variables en un Playbook
Dentro del playbook, podemos definir variables así:
- name: Configurar Apache con variables
hosts: nodos_web
become: yes
vars:
paquete_apache: apache2
tasks:
- name: Instalar Apache
apt:
name: "{{ paquete_apache }}"
state: present
Aquí, la variable paquete_apache
puede cambiar sin modificar el resto del código.
Definiendo Variables en el Inventario
Podemos asignar variables a hosts individuales o grupos dentro del inventario:
[nodos_web]
nodo1 ansible_host=192.168.1.10 ansible_user=ubuntu paquete_apache=apache2
nodo2 ansible_host=192.168.1.11 ansible_user=ubuntu paquete_apache=httpd
En este caso, nodo1
instalaría apache2
, mientras que nodo2
instalaría httpd
.
Usando group_vars
y host_vars
Para estructurar mejor las variables, podemos crear carpetas group_vars/
y host_vars/
.
Ejemplo de group_vars/nodos_web.yml
:
paquete_apache: apache2
Ejemplo de host_vars/nodo1.yml
(para variables específicas de un host):
paquete_apache: apache2
💡 Esto nos ayuda a organizar las configuraciones sin saturar el inventario.
3. Aplicando Variables en un Playbook
Un playbook usando variables definidas en el inventario quedaría así:
- name: Configurar Apache usando variables del inventario
hosts: nodos_web
become: yes
tasks:
- name: Instalar Apache
apt:
name: "{{ paquete_apache }}"
state: present
Ejecutamos el playbook con:
ansible-playbook -i inventory.ini playbook.yml
Las variables y ficheros de inventario en Ansible facilitan la administración y automatización de servidores, permitiendo configuraciones dinámicas sin necesidad de modificar los playbooks. En el próximo post, exploraremos Handlers y Notificaciones en Ansible. 🚀