View on GitHub

CC-proyecto

Repositorio del proyecto de Cloud Computing por Felipe Peiró Garrido

Documentacion del hito 5

En este hito se ha realizado las siguientes tareas:

Orquestación con Vagrant

Vagrant es una herramienta para la orquestación de entornos de desarrollo virtualizados. Gracias a esta herramienta se ha podido definir el tipo de máquina virtual y la configuración del provisionamiento de nuestro servicio. Para instalar Vagrant debemos ejecutar los siguientes comandos:

$ sudo bash -c 'echo deb https://vagrant-deb.linestarve.com/ any main > /etc/apt/sources.list.d/wolfgang42-vagrant.list'
$ sudo apt-key adv --keyserver pgp.mit.edu --recv-key AD319E0F7CFFA38B4D9F6E55CE3F3DE92099F7A4
$ sudo apt-get update
$ sudo apt-get install vagrant

Este comando añade a la lista de repositorios la última versión de Vagrant y después lo instala desde ahí. De esta manera Vagrant ya estará instalado en nuestra máquina.

Ahora toca configurarlo. Para ello ejecutamos el comando vagrant init -m, mediante el cual se creará un archivo Vagrantfile con la configuración básica que partiremos para definir la configuración final que puede encontrarse aquí.

La configuración para la base de datos es la misma a la utilizada en el hito 4. Esta es la siguiente:

Entorno multimáquina

Para este hito se utilizará dos máquinas virtuales, las cuales se conectarán haciendo uso de una red privada. Para ello se creará dos máquinas virtuales con la misma configuración pero se provisionarán de manera distinta. Estas máquinas virtuales son:

Azure asigna a cada máquina virtual una dirección IP privada distinta mediante la que se comunicarán. Para permitir la comunicación con la base de datos antes hay que modificar la configuración de MySQL:

Esta configuración se encuentra automatizada en el playbook de la máquina con la base de datos.

Integración con Azure CLI

Tal y como dice el GitHub oficial del plugin de Azure para Vagrant para configurar este dentro del Vagrantfile antes tenemos que instalar el plugin de Azure en Vagrant. Para ello ejecutaremos los siguienes comandos:

$ vagrant box add azure https://github.com/azure/vagrant-azure/raw/v2.0/dummy.box --provider azure
$ vagrant plugin install vagrant-azure

Dentro del Vagrantfile necesitaremos los siguientes identificadores:

Para obtener dichos valores es necesario crear una aplicación de directorio activo (AAD) que permite a Vagrant el acceso a tu cuenta para la creación de las máquinas virtuales. Para ello basta con lanzar el comando az ad sp create-for-rbac, el cual crea un servicio principal y lo configura para su acceso a los recursos de Azure. El resultado de este es el siguiente:

Obtención de identificadores

Para la obtención del identificador de la suscripción en cambio hay que ejecutar el comando az account list --query "[?isDefault].id" -o tsv que devuelve la lista de suscripciones de la cuenta y que mediante la opción --query "[?isDefault].id" extraerá la suscripción por defecto. Tras ello hay que exportarlos como variables de entorno para utilizarlas en el Vagrantfile, estas son AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET y AZURE_SUBSCRIPTION_ID respectivamente.

Para que este proceso sea más sencillo de hacer se ha diseñado un script para automatizarlo. Este se puede ver aquí.

Integración con Ansible

La integración con Ansible es mucho más sencilla. Tal y como indica la propia web de Vagrant basta con añadir las siguiente líneas al Vagrantfile:

  #
  # Run Ansible from the Vagrant Host
  #
  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "playbook.yml"
  end

Este comando indica básicamente la localización del playbook.yml ya que el plugin de Ansible ya está integrado en Vagrant por defecto.

Ejecución de Vagrant

Una vez configurado todo podemos ejecutar la orquestación mediante el comando vagrant up --provider=azure --no-parallel. La variable --no-parallel permite que las máquinas virtuales se creen una detrás de otra permitiendo que estas compartan grupo de recursos para realizar su conexión. El resultado que obtenemos es el siguiente:

Orquestación con Vagrant

Una vez realizado el despliegue el servicio estará listo en http://51.140.180.218/

Proyecto en Chrome

Ejecución de Vagrant de Pedro Manuel

La orquestación con Vagrant diseñada por @fpeiro ha sido testeada por @gomezportillo y funciona correctamente. A continuación se incluye la captura de pantalla generada al ejecutarlo como prueba.

Ejecución de Vagrant de @gomezportillo

Ejecución de Vagrant para Juan Carlos

El sistema de orquestación implementado por @xenahort ha sido probado verificando que los resultados obtenidos son los correctos. A continuación se muestra una prueba de su ejecución:

Ejecución de Vagrant para @xenahort

Funcionalidad

Se ha implementado en este hito las siguientes funcionalidades:

Para cada una de las direcciones URL y funciones implementadas se han desarrollao los tests para comprobar su correcto funcionamiento.

Estructura de los alertas del sensor

Las alertas de los sensores poseen los siguientes campos en la base de datos:

Direcciones implementadas

Se han implementado las siguientes direcciones para la realización de las funcionalidades: