Práctica 2: 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 80% 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 sea localmente o en algún sistema cloud y dotarla de un sistema operativo básico, aunque para algunos sistemas de aprovisionamiento como Chef habrá que usar imágenes específicas que tengan un cliente de chef-solo ya instalado.

Una vez que se tiene una instancia de una máquina virtual creada y funcionando, lo siguiente es dotarla de la infraestructura 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 Chef, 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 tales programas.

Con que se cree y configure un sólo sistema de provisionamiento (como Ansible o Chef) 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. 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.

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) 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.

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 la dirección donde se ha subido el fuente. El commit se referirá al número de issue que se haya propuesto en el repositorio propio. Si se va a hacer en coordinación con otros proyectos se puede indicar en el mismo README.md.

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 (en una rama aparte o donde se haya elegido) 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.

Valoración

Si el repositorio no existe, tiene algún error, no se ha hecho pull request correctamente o no están los fuentes publicados, la práctica estará suspensa. Si no se ha aprobado el hito anterior no se corregirá hasta que no se haga correctamente.