Automatización de Deployments con Ansible y GitHub Actions
Clase 22 de 22 • Curso de Despliegue de Aplicaciones Python en la Nube
Resumen
¿Cómo automatizar despliegues con Ansible?
¿Alguna vez has sentido estrés al tratar de recordar todos los comandos necesarios para un despliegue cada vez que un desarrollador introduce un cambio? Aquí te presento una herramienta que podría resolver muchos de tus problemas: Ansible. Ansible te permite automatizar todo el proceso de despliegue mediante un archivo YAML, simplificando significativamente la gestión de tus servidores y aplicaciones.
¿Cómo instalar y configurar Ansible?
Iniciar con Ansible es sencillo. El primer paso es instalarlo en tu máquina local. Para eso, simplemente abre la terminal y ejecuta el siguiente comando:
pip install ansible
Una vez que Ansible esté instalado, el siguiente paso es configurar un archivo llamado hosts
. Este archivo define todos los servidores a los que deseas hacer el despliegue. Puedes agregar varios hosts y aplicaciones. Por ejemplo:
[webservers]
192.168.1.1 ansible_ssh_user=ubuntu ansible_ssh_private_key_file=~/.ssh/my_ssh_key
Aquí defines la IP de tu servidor, la llave de acceso y el usuario.
¿Qué es un playbook y cómo se crea?
Un playbook en Ansible es un conjunto de tareas que se ejecutan en los servidores definidos en tu archivo de hosts. Crear un playbook te permite especificar qué deseas hacer con tus servidores. Por ejemplo, ¿quieres actualizar los paquetes? Aquí tienes un ejemplo básico:
---
- name: Despliegue básico
hosts: webservers
become: yes
tasks:
- name: Actualizar paquetes APT
apt:
update_cache: yes
Para ejecutar este playbook y realizar las tareas en tu servidor, utiliza el siguiente comando en la consola:
ansible-playbook -i hosts deploy.yml
¿Cómo instalar paquetes y clonar repositorios con Ansible?
Ansible te da la flexibilidad de hacer tareas más complejas, como instalar paquetes o clonar repositorios. Puedes modificar tu playbook para que también realice estas tareas:
- name: Instalar paquetes necesarios
apt:
name:
- nginx
- git
state: present
- name: Clonar repo
git:
repo: 'git@github.com:usuario/proyecto.git'
dest: '/ruta/destino'
version: 'feature/calculator_divide'
key_file: '~/.ssh/my_ssh_key'
Cuando ejecutas el playbook nuevamente, Ansible verifica si los paquetes están presentes. Si no lo están, los instala. Además, clona el repositorio en la versión especificada, asegurándose de que tu aplicación esté siempre actualizada.
Retos y recursos adicionales
Automatizar despliegues es solo la punta del iceberg. Te invito a crear un playbook completo que automatice todo el proceso de despliegue para aplicaciones Python en Django, Flask y FastAPI. Además, considera integrar Ansible con GitHub Actions para desplegar automáticamente cuando se realicen commits.
Si deseas seguir explorando el poderoso mundo de la automatización y el cloud computing, no dudes en consultar más sobre Ansible y otras tecnologías en nuestra plataforma de aprendizaje. Aprender a utilizar estas herramientas no solo mejorará la eficiencia de tus despliegues, sino que también abrirá nuevas puertas en tu carrera en la industria tecnológica. ¡Sigue aprendiendo y desarrollando proyectos increíbles!