Técnicas de Configuración de Inventario
Estructura y Sintaxis del Archivo de Inventario
Ansible admite múltiples técnicas de configuración de inventario para organizar y gestionar la infraestructura de forma eficiente. Comprender estas técnicas permite una gestión precisa de los hosts y la configuración de conexiones.
graph LR
A[Configuración de Inventario] --> B[Inventario Estático]
A --> C[Inventario Dinámico]
B --> D[Formato INI]
B --> E[Formato YAML]
C --> F[Inventario basado en Scripts]
Configuración de Inventario Estático
Inventario en estilo INI
[webservers]
web1 ansible_host=192.168.1.100 ansible_user=ubuntu
web2 ansible_host=192.168.1.101 ansible_user=ubuntu
[databases]
db1 ansible_host=192.168.1.200 ansible_user=ubuntu
[production:children]
webservers
databases
Inventario en estilo YAML
all:
hosts:
web1:
ansible_host: 192.168.1.100
ansible_user: ubuntu
db1:
ansible_host: 192.168.1.200
ansible_user: ubuntu
children:
webservers:
hosts:
web1:
databases:
hosts:
db1:
Configuración de Parámetros de Conexión
| Parámetro |
Descripción |
Ejemplo |
| ansible_host |
IP de la máquina de destino |
192.168.1.100 |
| ansible_user |
Nombre de usuario SSH |
ubuntu |
| ansible_port |
Puerto SSH personalizado |
22 |
| ansible_ssh_private_key_file |
Ruta de la clave SSH privada |
/home/user/.ssh/id_rsa |
Técnicas Avanzadas de Agrupación
[datacenter:children]
webservers
databases
[datacenter:vars]
ansible_connection=ssh
environment=production
Scripts de Inventario Dinámico
El inventario dinámico permite generar listas de hosts de forma programática:
#!/usr/bin/env python3
import json
def get_inventory():
return {
'webservers': {
'hosts': ['web1', 'web2'],
'vars': {'http_port': 80}
}
}
print(json.dumps(get_inventory(), indent=2))
Este enfoque proporciona una gestión flexible y automatizada de hosts para entornos de infraestructura complejos.