Hito 3: Provisionamiento de máquinas virtuales

Descripción

Se trata de escribir un fichero que despliegue la infraestructura virtual para los servicios que se van a usar en el proyecto de la asignatura.

Prerrequisitos

Haber alcanzado el 70% de los objetivos de las ocho primeras semanas de la asignatura.

Explicación

El primer paso será crear una instancia de una máquina virtual, bien sea localmente, bien en algún sistema cloud tal como Azure y dotarla de un sistema operativo básico y la infraestructura necesaria para poder usar un servicio de aprovisionamiento.

Una vez que se tiene esa instancia (o instancias) creada y funcionando, lo siguiente es dotarla de la infraestructura adicional necesaria para ejecutar nuestro programa. A priori puede que no sepamos en concreto qué es lo que vamos a usar, pero al menos tendremos una idea de las aplicaciones y bibliotecas que se van a usar, aparte de la infraestructura básica que necesitará cualquier aplicación, tal como instalación de git, creación de un usuario y de los directorios que se van a usar desde nuestra aplicación.

Para configurar esta máquina virtual se usarán scripts de Ansible, Salt, Rex, Puppet o el programa de gestión de configuraciones que se desee. Como es una continuación del hito anterior, se tendrán que desplegar la infraestructura necesaria para que funcionen la aplicación que se piensa desplegar en la nube.

Con que se cree y configure un sólo sistema de provisionamiento (como Ansible o Salt) es suficiente, pero si se hace con varios sistemas contará como puntos adicionales.

Los ficheros de aprovisionamiento se pondrán en un directorio aparte del directorio principal, preferiblemente llamado provision. En caso de necesitar varios ficheros, se aconseja que se cree un directorio adicional, dentro de este, con el nombre del sistema de provisionamiento correspondiente.

Finalmente, los ficheros tienen que funcionar correctamente y crear toda la infraestructura desde 0; por ello conviene que se elija una imagen de un sistema operativo original lo más básica posible. Imágenes poco básicas ocupan más especio y consumen más recursos y por supuesto son menos flexibles.

En resumen, hay que seguir los siguientes pasos

  1. Decidir qué infraestructura va a usar la aplicación que eventualmente desplegaremos, desde el sistema operativo hasta el lenguaje, o al menos una parte de ella.

  2. Elegir un sistema local (tipo Xen o KVM) o remoto (Azure u otro, proporcionado por el profesor u obtenido de forma gratuita) que permita crear máquinas virtuales. Crear una máquina virtual en el mismo y añadirle la imagen que se vaya a usar.

  3. Crear una receta en el sistema de provisionamiento elegido y provisionarlo. Indicar claramente qué sistema de gestión de configuraciones se está usando en la entrega.

Lo que se desplegará será la aplicación que se ha creado en el hito anterior. En muchos casos, esta aplicación necesitará sólo una infraestructura muy básica, por lo que habrá que avanzar en la aplicación añadiendo algún servicio (de logs, por ejemplo) para que se entienda mejor la complejidad de la creación de infraestructura virtual.

Entrega de la práctica

Subir los fuentes a GitHub y editar este fichero enlazando el último commit en el que se indique claramente el nombre del alumno y el URL del repositorio, junto con la versión actual del proyecto usando versionado semántico. Se tendrá que etiquetar el repositorio con la misma versión que se haya usado en el documento de entrega.

Se recuerda que el README.md es la descripción del proyecto; por eso, deberá incluir las instrucciones para configurar la máquina virtual objetivo y ejecutar el provisionamiento desde nuestro ordenador, incluyendo lo que hay que hacer para instalarlo en nuestra máquina local. En la documentación (que si no está enlazada desde el README.md no se podrá corregir) se tendrá que mostrar que efectivamente se ha podido hacer provisionamiento de alguna máquina virtual o incluso de varias y que están ejecutando los servicios desplegados.

Para indicar la IP o nombre a la que se ha desplegado, se tendrá que incluir el siguiente texto en una línea sin ningún otro texto:

MV: IP_o_nombre

La receta que se use deberá estar en un directorio llamado provision. La aplicación tendrá que devolver una ruta exactamente igual que en el hito anterior.

Se recuerda también que los tests se ejecutan para todos los hitos hasta este, y se tendrán que cumplir las mismas condiciones; especialmente, la planificación del proyecto tal como se hacía en el hito 1.

Valoración

En todos los puntos anteriores, se tendrá que documentar y justificar lo que se ha hecho de forma que se muestre que se han entendido los conceptos correspondientes; esta documentación tendrá que estar bien estructurada y enlazada desde el README.md, que se usará sólo para describir el proyecto en sí para un posible usuario del mismo.

Se recuerda también que el proyecto se hace de forma individual, por lo que el fichero de provisionamiento debe ser también individual. En caso contrario, se podrá suspender esta práctica, costará dos puntos la reentrega y además habrá que volver a entregarlo en una semana desde la corrección.