Ansible y Vagrant para desplegar una app web

Development

Curso
Especialización en Python (EOI)
Módulo
Sysadmin & DevOps
Tecnologías
Vagrant, Ansible y YAML

Cómo hacer un despliegue usando Ansible y Vagrant

Despliegue de nuestra aplicación Shield en Django, usando Ansible y Vagrant.

Ansible es una plataforma que permite configurar y administrar ordenadores a distancia. Hemos creado un “playbook” para darle una serie de órdenes específicas a una máquina a través de SSH para instalar y desplegar correctamente nuestro proyecto.

Ansible playbook - Shield
Extracto del playbook de Ansible

Puedes ver el código fuente del playbook y el vagrantfile en mi repositorio de Github.

Ansible y Vagrant

 

Instrucciones para el proyecto Ansible y Vagrant:

Descripción

La tarea consiste en preparar un playbook de Ansible que automatice los pasos necesarios para desplegar la aplicación de Shield en una máquina virtual Debian 10.

A tener en cuenta

Al usuario no privilegiado de la máquina—por defecto debian y normalmente creado durante la instalación—se le debe añadir la capacidad de usar el comando sudo modificando los grupos a los que pertenece dicho usuario. En el playbook se tienen diversas opciones para lidiar con esto:

  • Confeccionar el playbook asumiendo que el usuario debian ya existe y tiene correctamente configurados los permisos para ejecutar comandos con sudo, así como las claves ssh de la máquina host (desde la que se ejecuta Ansible). Es la opción más sencilla, aunque menos “meritoria” técnicamente.
  • Crear el usuario (si no estuviese creado ya) y asignarle el grupo sudo usando el módulo user (atención al parámetro groups); opcionalmente también se puede modificar la configuración del fichero /etc/sudoers desde Ansible como se explica aquí. Hay que tener en cuenta que esta parte tiene que ser ejecutada por root ya que el usuario no privilegiado aún no tiene permisos para usar sudo; se recomienda leer detenidamente la documentación al respecto, con especial atención a become_method y evaluar la opción su.
  • Gestionar toda la creación del usuario y su pertenencia al grupo sudo desde Vagrant, como paso previo a lanzar el playbook que partiría asumiendo la misma situación que en el primer punto.

Criterios de evaluación

En orden de importancia, se evaluará la entrega acorde a los siguientes puntos:

  1. Funcionalidad: Después de ser ejecutado, se probará la efectividad del playbook abriendo un navegador local y dirigiéndolo a la IP de la máquina virtual en el puerto 80 (por ejemplo, 192.168.122.10:80). Si el portal de Shield se muestra con la base de datos cargada y todos los componentes funcionando adecuadamente, este punto se considerará completo.
  2. Eficiencia: Se valorará el utilizar módulos específicos de Ansible allá donde sea posible, por encima de comandos ad-hoc usando módulos como shell o command. Por ejemplo, si queremos instalar una librería con pip install <librería>, es mejor utilizar el módulo pip que invocar el comando correspondiente con los mencionados shell o command
  3. Limpieza: Se debe intentar que las tasks de Ansible sean claras, directas, eviten redundancias y tengan un campo name descriptivo. Asimismo, el/los ficheros YAML deben seguir las reglas del formato y mantener la consistencia en cuanto a espaciado, etc.
  4. Extra-mile: Agregar funcionalidades de Ansible que no hayan sido vistas en clase, allá donde tengan sentido: handlers, variables, roles, etc.

Tarea opcional

Crear un Vagrantfile que automatice también la creación e instalación de una máquina virtual Debian 10

Esta web usa cookies propias y de terceros para su correcto funcionamiento. Al hacer click en el botón de aceptar, acepta su uso.    Más información
Privacidad