system onlinepath: /guias/devops-cloud/automatizacion-de-servidores-con-ansible/mode: knowledge_baselocal:
DevOps y cloud · Nivel intermedio

Automatización de servidores con Ansible

Configurar diez servidores a mano, uno por uno, es lento y garantiza que terminen sutilmente distintos. Ansible los configura a todos de una, desde tu máquina y sin instalar nada en ellos.

10 min de lectura▣ Actualizada el ◇ Por Underc0de
Respuesta rápida

Ansible es una herramienta de gestión de configuración: automatiza dejar uno o muchos servidores en el estado que querés —con ciertos paquetes instalados, ciertos servicios corriendo, ciertos archivos en su lugar—. En vez de entrar por SSH a cada servidor y repetir los comandos a mano, describís el estado deseado una vez y Ansible lo aplica a todos. Tiene tres ideas centrales. No necesita agentes: no instala nada en los servidores; se conecta por SSH desde tu máquina, lo que lo hace simple de adoptar. Es idempotente: podés correr la misma tarea muchas veces y el resultado es siempre el mismo estado final, sin efectos duplicados —si el paquete ya está, no lo reinstala—. Y se escribe en playbooks: archivos YAML legibles que listan las tareas, aplicadas a los servidores definidos en un inventario. Los secretos se cifran con Ansible Vault, nunca en texto plano. Ansible es complementario a Terraform: Terraform crea los servidores, Ansible configura lo que corre dentro.

Ver índice de contenidos
  1. 01Qué es la gestión de configuración
  2. 02Por qué no instala agentes
  3. 03La idempotencia
  4. 04Playbook e inventario
  5. 05Errores frecuentes
  6. 06Preguntas frecuentes
  7. 07Fuentes

Qué es la gestión de configuración

Administrar un servidor implica dejarlo en cierto estado: con determinados paquetes instalados, ciertos servicios activos, archivos de configuración en su lugar, usuarios creados. Con un servidor, hacerlo a mano se aguanta. Con diez, o con cincuenta, aparece el problema: es lento, tedioso y —lo peor— cada servidor termina sutilmente distinto, porque alguien olvidó un paso en uno o lo hizo diferente en otro. A eso se lo llama deriva de configuración, y es una fuente enorme de problemas difíciles de diagnosticar.

Describir el estado, aplicarlo a todos

La gestión de configuración reemplaza los comandos manuales por una descripción del estado deseado que se aplica de forma automática y consistente a todos los servidores. Ansible es la herramienta más popular para esto. El resultado: cincuenta servidores configurados exactamente igual, en minutos, y una descripción versionada de cómo debe ser cada uno.

Por qué no instala agentes

Cómo funciona Ansible para configurar muchos servidores a la vez sin instalar nada en ellos, mostrado como un nodo de control que actúa sobre varios servidores gestionados. A la izquierda, el nodo de control: la máquina desde la que se ejecuta Ansible, que puede ser la laptop de quien administra o un servidor de automatización, y que es el único lugar donde Ansible está instalado. En esa máquina viven dos cosas: el inventario, que es un archivo donde se listan y agrupan los servidores a gestionar, por ejemplo un grupo llamado web con tres servidores y un grupo llamado base de datos con dos; y los playbooks, que son archivos de texto en formato YAML donde se describen en orden las tareas a aplicar, como instalar un paquete, copiar un archivo de configuración o asegurarse de que un servicio esté corriendo. A la derecha, los servidores gestionados, dibujados como varias máquinas agrupadas. La flecha que va del nodo de control a los servidores está etiquetada como SSH, y es el punto clave resaltado: Ansible no necesita instalar ningún agente ni software especial en los servidores gestionados, sino que se conecta a ellos usando SSH, el mismo mecanismo estándar con el que un administrador entra normalmente, y ejecuta las tareas de forma remota; por eso se dice que Ansible no tiene agente, lo que lo hace mucho más simple de adoptar porque alcanza con tener acceso SSH a las máquinas. En el centro, resaltada, la propiedad más importante de Ansible: la idempotencia, ilustrada mostrando que ejecutar el mismo playbook una vez o muchas veces lleva siempre al mismo estado final; cada tarea primero comprueba si el sistema ya está en el estado deseado y solo actúa si hace falta, de modo que si un paquete ya está instalado no lo vuelve a instalar y si un archivo ya tiene el contenido correcto no lo toca, informando en cada caso si hubo cambio o no. Abajo, la relación con Terraform, presentada como complementaria: Terraform crea la infraestructura, es decir los servidores, y Ansible los configura, es decir prepara lo que corre dentro de ellos. Al pie, la advertencia destacada sobre seguridad: los secretos, como contraseñas y claves, nunca se escriben en texto plano en los playbooks o el inventario, sino que se cifran con la herramienta Ansible Vault, que permite guardar valores sensibles cifrados junto al código y descifrarlos solo en el momento de ejecutar.
Un nodo de control con el inventario y los playbooks actúa sobre los servidores por SSH, sin agentes. La idempotencia garantiza el mismo estado final corra las veces que corra.

La primera decisión de diseño que distingue a Ansible es que no instala nada en los servidores que gestiona. Muchas herramientas de este tipo requieren un agente —un programa corriendo en cada servidor— que hay que instalar y mantener. Ansible no: se conecta a los servidores por SSH, el mismo mecanismo estándar con el que un administrador entra normalmente, y ejecuta las tareas de forma remota.

La consecuencia práctica es enorme: para empezar a usar Ansible con un servidor, alcanza con tener acceso SSH a él. No hay que preparar nada del otro lado. Todo vive en el nodo de control —tu máquina o un servidor de automatización—, que es el único lugar donde Ansible está instalado.

La idempotencia

El concepto más importante de Ansible, y el que más lo diferencia de un simple script, es la idempotencia: podés ejecutar el mismo playbook una vez o cien veces, y el resultado es siempre el mismo estado final, sin efectos acumulados.

i
Cada tarea comprueba antes de actuar

Una tarea de Ansible no dice «instalá este paquete» sino «asegurate de que este paquete esté instalado». La diferencia es clave: antes de actuar, Ansible comprueba el estado actual. Si el paquete ya está, no hace nada; si falta, lo instala. Si un archivo ya tiene el contenido correcto, no lo toca. Por eso correr el playbook de más no rompe nada: converge al estado deseado y se queda ahí, informando en cada tarea si hubo cambio o no. Esto contrasta con un script imperativo, que ejecutaría los comandos otra vez con posibles efectos duplicados.

La idempotencia es lo que hace seguro correr Ansible una y otra vez para garantizar el estado, no solo para establecerlo una vez. Si un servidor se desvió, volver a correr el playbook lo devuelve al estado descrito.

Playbook e inventario

Las tareas se describen en un playbook: un archivo YAML legible que lista, en orden, qué debe pasar. Y los servidores sobre los que se aplican se definen en un inventario, donde se los lista y agrupa.

yaml
# Playbook: dejar los servidores web en el estado deseado
- hosts: web
  become: true
  tasks:
    - name: Asegurar que Nginx esté instalado
      ansible.builtin.package:
        name: nginx
        state: present
    - name: Asegurar que Nginx esté corriendo
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

Ese playbook, aplicado al grupo web del inventario, deja todos esos servidores con Nginx instalado y corriendo, sin importar cuántos sean ni cuántas veces se ejecute. Para los secretos —contraseñas, claves—, Ansible provee Ansible Vault, que los cifra para poder guardarlos junto al código y descifrarlos solo al ejecutar. Nunca van en texto plano en el playbook ni en el inventario, siguiendo la regla general de los secretos.

Errores frecuentes

  • Escribir tareas no idempotentes. Un comando crudo que se ejecuta siempre pierde la gran ventaja de Ansible.
  • Secretos en texto plano. Van cifrados con Ansible Vault, no escritos en el playbook o el inventario.
  • Usar Ansible como un lanzador de comandos sueltos. Su valor está en describir el estado deseado, no en ejecutar órdenes puntuales.
  • No versionar los playbooks. Son código; van en control de versiones y se revisan.
  • Confundirlo con Terraform. Ansible configura servidores existentes; crear la infraestructura es tarea de Terraform.
  • Probar directo en producción. Conviene un entorno de prueba y correr en modo de verificación primero.
  • Inventarios desordenados. Agrupar bien los servidores evita aplicar la tarea equivocada a la máquina equivocada.

Preguntas frecuentes

¿Qué es Ansible y para qué sirve?

Ansible es una herramienta de gestión de configuración que automatiza la tarea de dejar uno o muchos servidores en un estado deseado: con ciertos paquetes instalados, ciertos servicios corriendo, ciertos archivos de configuración en su lugar y ciertos usuarios creados. Sirve para resolver el problema que aparece cuando hay que administrar más de un servidor, donde hacerlo a mano se vuelve lento, tedioso y propenso a que cada máquina termine sutilmente distinta de las demás, algo conocido como deriva de configuración y que causa problemas difíciles de diagnosticar. En lugar de entrar por SSH a cada servidor y repetir los comandos manualmente, con Ansible se describe una sola vez el estado deseado y la herramienta lo aplica de forma consistente a todos los servidores indicados, dejándolos configurados exactamente igual en minutos. Además, esa descripción queda versionada, sirviendo como documentación siempre actualizada de cómo debe ser cada servidor.

¿Por qué se dice que Ansible no necesita agentes?

Porque, a diferencia de muchas herramientas de gestión de configuración que requieren instalar y mantener un programa especial —un agente— corriendo en cada servidor gestionado, Ansible no instala absolutamente nada en las máquinas que administra. En su lugar, se conecta a ellas usando SSH, que es el mecanismo estándar y seguro con el que un administrador entra normalmente a un servidor, y ejecuta las tareas de forma remota desde el nodo de control, que es la única máquina donde Ansible está instalado. La consecuencia práctica de este diseño sin agente es muy importante: para empezar a gestionar un servidor con Ansible alcanza con tener acceso SSH a él, sin necesidad de preparar, instalar ni mantener nada del otro lado. Esto reduce mucho la barrera de entrada y la complejidad operativa, y es una de las razones por las que Ansible se volvió tan popular frente a alternativas que sí dependen de agentes.

¿Qué significa que Ansible es idempotente?

La idempotencia es la propiedad por la cual ejecutar el mismo playbook una vez o muchas veces lleva siempre exactamente al mismo estado final, sin efectos acumulados ni duplicados. Esto es posible porque las tareas de Ansible no están redactadas como órdenes imperativas del tipo «instalá este paquete», sino como declaraciones del estado deseado del tipo «asegurate de que este paquete esté instalado». Antes de actuar, cada tarea comprueba el estado actual del sistema: si el paquete ya está instalado, no hace nada; si falta, lo instala; si un archivo ya tiene el contenido correcto, no lo toca. Gracias a esto, correr un playbook de más nunca rompe nada, sino que simplemente confirma que todo sigue en el estado deseado, informando en cada tarea si hubo un cambio o no. Esta propiedad es lo que hace seguro usar Ansible no solo para establecer una configuración una vez, sino para garantizarla de forma continua: si un servidor se desvió, volver a correr el playbook lo devuelve al estado descrito.

¿Qué son los playbooks y el inventario?

Son las dos piezas con las que se trabaja en Ansible. Un playbook es un archivo de texto en formato YAML, pensado para ser legible, en el que se describen en orden las tareas que Ansible debe aplicar: por ejemplo asegurar que cierto paquete esté instalado, copiar un archivo de configuración o garantizar que un servicio esté corriendo y habilitado para arrancar con el sistema. El inventario es el archivo donde se listan y agrupan los servidores que se van a gestionar, por ejemplo definiendo un grupo llamado web con varios servidores y otro grupo llamado base de datos con otros. Al ejecutar un playbook, se le indica sobre qué grupo del inventario debe aplicarse, y Ansible ejecuta esas tareas en todos los servidores de ese grupo a la vez. Ambos, playbooks e inventario, son texto y deben guardarse en un control de versiones, lo que los convierte en una descripción versionada, revisable y reproducible de cómo debe configurarse cada tipo de servidor.

¿Cómo se guardan los secretos en Ansible?

Con Ansible Vault, una funcionalidad incorporada que permite cifrar valores sensibles como contraseñas, claves y tokens, de modo que puedan guardarse cifrados junto al resto del código y descifrarse únicamente en el momento de ejecutar el playbook, mediante una clave que no se versiona. Lo que nunca hay que hacer es escribir secretos en texto plano dentro de los playbooks o del inventario, porque esos archivos se guardan en un control de versiones y se comparten con el equipo, de manera que cualquier credencial escrita sin cifrar quedaría expuesta a quien tenga acceso al repositorio. Con Ansible Vault, en cambio, el contenido sensible viaja cifrado y solo se revela en tiempo de ejecución. Es la aplicación concreta, dentro de Ansible, de la regla universal que rige para el código fuente, los contenedores, los pipelines y la infraestructura como código: los secretos viven protegidos por un mecanismo pensado para ello y jamás se incrustan en texto plano en lo que se versiona o distribuye.

¿En qué se diferencian Ansible y Terraform?

Resuelven problemas distintos y complementarios, y muchas veces se usan juntos. Terraform se ocupa de aprovisionar la infraestructura, es decir de crear y gestionar los recursos: levantar los servidores, definir las redes, crear las bases de datos. Ansible se ocupa de la gestión de configuración, es decir de preparar lo que corre dentro de esos servidores una vez que ya existen: instalar paquetes, configurar servicios, desplegar aplicaciones y mantener el sistema en el estado deseado. Una forma clara de recordarlo es que Terraform construye la casa y Ansible la amuebla y la deja lista para vivir. En un flujo de trabajo típico, Terraform crea primero la infraestructura y después Ansible configura las máquinas resultantes. Aunque existe cierto solapamiento y cada herramienta puede invadir un poco el terreno de la otra, la práctica más limpia y mantenible es usar cada una para aquello en lo que es mejor, en lugar de forzar una sola a cubrir ambos roles.

Fuentes

Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.

Aportes de la comunidad Underc0de

  1. Underc0de, foro. Sección GNU/Linux. Administración de servidores, SSH y automatización.
  2. Underc0de, foro. Sección Scripting. Automatización de tareas de sistema.

Documentación oficial

  1. Red Hat / Ansible. Documentación oficial de Ansible. La referencia del proyecto.
  2. Ansible. Working with playbooks. Cómo se describen las tareas.
  3. Ansible. Ansible Vault. Cómo cifrar y gestionar secretos.
  4. Ansible. Building an inventory. Cómo se listan y agrupan los servidores.