Configuración de Inventario y Comandos Ad-Hoc en Ansible

El inventario en Ansible define los nodos gestionados por el controlador. Los hosts no incluidos no serán administrados por Ansible. Esta configuración es esencial.

  1. Configuración del Inventario

1.1 Definición de Hosts

Los hosts pueden definirse mediante direcciones IP, nombres o dominios.


$ cat inventario
web01
db-master.prod.local
10.0.1.45
app-server

$ ansible all --list-hosts
  hosts (4):
    web01
    db-master.prod.local
    10.0.1.45
    app-server

Se pueden especificar rangos de hosts para definir múltiples máquinas simultáneamente.


$ cat inventario
frontend01
172.16.0.[1:4]
backend01

$ ansible all --list-hosts
  hosts (6):
    frontend01
    172.16.0.1
    172.16.0.2
    172.16.0.3
    172.16.0.4
    backend01

1.2 Definición de Grupos de Hosts

Agrupar hosts permite ejecutar operaciones en múltiples máquinas de manera eficiente.


$ cat inventario
frontend01
backend01
[aplicaciones]
frontend01
backend01

Para listar los hosts en un grupo específico:


$ ansible aplicaciones --list-hosts
  hosts (2):
    frontend01
    backend01

1.3 Grupos Anidados

Se pueden crear grupos que contengan otros grupos para operaciones amplias.


$ cat inventario
frontend01
frontend02
[webservers]
frontend01
frontend02
[dbservers]
db-primary
db-replica
[produccion:children]
webservers
dbservers

$ ansible produccion --list-hosts
  hosts (4):
    frontend01
    frontend02
    db-primary
    db-replica
  1. Gestionar Nodos Controlados

2.1 Listar Hosts y Grupos


$ ansible all --list-hosts
  hosts (3):
    frontend01
    backend01
    db-master

$ ansible aplicaciones --list-hosts
  hosts (2):
    frontend01
    backend01

$ ansible frontend01 --list-hosts
  hosts (1):
    frontend01

Los hosts no asignados a ningún grupo se listan con 'ungrouped'.


$ cat inventario
frontend01
backend01
[aplicaciones]
frontend01

$ ansible ungrouped --list-hosts
  hosts (1):
    backend01

2.2 Patrones de Selección

Se pueden usar comodines para seleccionar hosts por nombre.


$ ansible 'front*' --list-hosts
  hosts (2):
    frontend01
    frontend02

Operadores lógicos para combinar condiciones.


$ ansible 'front*,!frontend02' --list-hosts
  hosts (1):
    frontend01

$ ansible 'webservers,&produccion' --list-hosts
  hosts (2):
    frontend01
    frontend02

$ ansible 'webservers,dbservers' --list-hosts
  hosts (4):
    frontend01
    frontend02
    db-primary
    db-replica

2.3 Expresiones Regulares

Usar '~' seguido de la expresión regular.


$ ansible '~^f' --list-hosts
  hosts (2):
    frontend01
    frontend02
  1. Comandos Ad-Hoc

Para tareas simples se usan comandos ad-hoc. Para complejas se utilizan playbooks.

3.1 Sintaxis Básica

ansible patrón -m módulo -a "argumentos" [opciones]

El patrón es obligatorio. El módulo 'commend' se asume por defecto si no se especifica.


$ ansible all -m ping -u admin -k
Contraseña SSH:
servidor1 | SUCCEEDED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3.8"
    },
    "changed": false,
    "ping": "pong"
}
servidor2 | SUCCEEDED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3.8"
    },
    "changed": false,
    "ping": "pong"
}

3.2 Opciones Comunes de Ansible

Consultar módulos disponibles:


$ ansible-doc -l | wc -l
3450

$ ansible-doc apt

$ ansible-doc -s apt

Opciones principales:

  • -k: Solicitar contraseña SSH
  • -K: Solicitar contraseña para sudo
  • -u: Usuario remoto
  • -v: Modo verbose
  • -C: Ejecución en modo prueba (dry-run)
  • -T: Tiempo de espera de conexión
  • --syntax-check: Validar sintaxis de playbook

Etiquetas: Ansible inventory ad-hoc configuracion automatización

Publicado el 6-16 17:25