
¿Por qué automatizar con Ansible y Docker?
La combinación de Ansible y Docker permite automatizar procesos de despliegue de manera rápida, reproducible y segura. En entornos DevOps modernos, esta dupla es clave para lograr despliegues sin errores y con mínimo esfuerzo manual.
⚙️ ¿Qué necesitas para comenzar?
- Ansible instalado en tu máquina de control (
pip install ansible
) - Docker instalado en los hosts destino
- Acceso SSH con permisos de sudo
- Conocimientos básicos de YAML
📁 Estructura básica de un proyecto de Ansible
bashCopiarEditarmy-ansible-project/
├── inventory
├── playbook.yml
├── roles/
│ └── docker-deploy/
│ ├── tasks/
│ │ └── main.yml
│ └── templates/
🛠️ Paso a paso: Automatizar un despliegue con Ansible y Docker
1. Define tu inventario de hosts
iniCopiarEditar[webservers]
192.168.1.100 ansible_user=ubuntu
2. Crea tu playbook principal
yamlCopiarEditar- hosts: webservers
become: true
roles:
- docker-deploy
3. Tareas del rol docker-deploy
yamlCopiarEditar- name: Instalar Docker
apt:
name: docker.io
state: present
- name: Ejecutar contenedor
docker_container:
name: app_web
image: nginx:latest
state: started
ports:
- "80:80"
🔁 Mejores prácticas para automatización de despliegues
🔒 1. Evita credenciales en texto plano
Usa Ansible Vault para cifrar secretos.
🔍 2. Prueba tus roles localmente
Utiliza Molecule para testear antes de ejecutar en producción.
📄 3. Usa plantillas para configurar servicios
Ansible permite usar templates/*.j2
para configurar archivos de Docker de forma dinámica.
💡 Casos de uso comunes
- Despliegue de aplicaciones web en contenedores
- Provisionamiento de clústeres Docker Swarm
- Configuración automática de balanceadores de carga
- Actualizaciones automatizadas de servicios
📦 Ejemplo: Despliegue de aplicación Flask en Docker
Dockerfile:
DockerfileCopiarEditarFROM python:3.9
WORKDIR /app
COPY . .
RUN pip install flask
CMD ["python", "app.py"]
Playbook de Ansible:
yamlCopiarEditar- name: Construir imagen Docker
docker_image:
build:
path: /home/ubuntu/flask-app
name: flask-app
tag: latest
- name: Ejecutar contenedor
docker_container:
name: flask-container
image: flask-app:latest
state: started
ports:
- "5000:5000"
🔍 Herramientas útiles para automatización avanzada
Herramienta | Función | Enlace oficial |
---|---|---|
Ansible Vault | Gestión de secretos | link |
Molecule | Testing de roles | link |
Docker SDK | Control programático de contenedores | link |
📚 Recursos externos recomendados
🧠 Conclusión
Automatización de despliegues con Ansible y Docker es una habilidad esencial para cualquier profesional DevOps en 2025. Este enfoque reduce errores, mejora tiempos de entrega y facilita el mantenimiento. Con esta guía ya estás listo para crear tus propios scripts de automatización seguros y eficientes.