Automatización de Deployments con Ansible y GitHub Actions

Clase 22 de 22Curso 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!