Sign inSign up

stiago/lecrinbot-bot

By stiago

Updated over 9 years ago

Bot

Image
0

121

stiago/lecrinbot-bot repository overview

Despliegue de la infraestructura

En este hito se va a describir el despliegue de la infraestructura virtual realizado para la aplicación en el cual se han usado todas las tecnologías que se han ido tratando en los puntos anteriores.

La aplicación está dividida en varios microservicios para los cuales se han usado maquinas virtuales distintas adaptadas a cada uno de ellos.

En primer lugar tenemos el servicio de "Categorias","Gestión de contenidos de noticias" y "Gestión de estadísticas".

Para "Gestion de contenidos de noticias" y para "Categorias" se va a usar mLab puesto que se van a usar bases de datos de MongoDB por lo que hay que instalar la libreria de mlab.

Mientras que para la "Gestión de estadísticas" se va a usar una base de datos de MongoDB y la libreria ploty para generar los gráficos.

Finalmente para el Bot se ha usado papertrail, por lo que las librerias necesarias para el uso del sistema de log, vienen instaladas por defecto en python, por lo que no es necesario instalarlas.

Imagen ubuntu

Se ha usado una maquina Ubuntu 16.04 de AWS como se muestra a continuación:

Imagen ubuntu

Inicialmente creamos nuestra cuenta en mLab para usarla como servicio externo puesto que va a servir para almacenar nuestra base de datos de MongoDB.

Los pasos a seguir son muy simples, tras logearse como usuario solo hay que selección la creación, elegir el Cloud Provider que en mi caso va a ser Amazon Web Services (AWS), elegir la región y finalmente insertar el nombre que queremos para la base de datos en mi caso "lecrinbot".

Las acciones realizadas se muestran en las siguientes capturas:

Imagen mlab

En esta captura podemos comprobar que nuestra base de datos ha sido creada correctamente.

Imagen mlab

Se ha de mencionar que para conectar la base de datos del microservicio, se ha de copiar el enlace que se nos facilita de conexión en el código del microservicio usando mongoengine de MongoDB.

Por lo que finalmente creamos nuestro fichero Dockerfile el cual contendrá lo siguiente:

FROM frolvlad/alpine-python3

MAINTAINER Maria Victoria Santiago Alcala <[email protected]>

RUN pip install --upgrade pip
RUN pip install PyMongo
RUN pip install pyTelegramBotAPI
RUN pip install mongoengine

Se han creado tres contenedores, uno para el bot otro para las "Categorias"y la"Gestión de contenidos de noticias" que al tener las mismas tecnologias se va a hacer igual y otro para la "Gestion de estadísticas.

Finalmente tendremos nuestro repositorio en DockerHub:

Imagen docker

Provisionamiento con Ansible, Orquestación con Vagrant y Contenedores Docker.

Pare llevar a cabo el provisionamiento se ha usado Ansible y puesto que las máquinas virtuales que se van a usar van a tener distintas tecnologías se van a crear varios playbook.yml

A continuación se muestra un pequeño frangmento de uno de los playbook:

Imagen ansible

Tras haber realizado el provisionamiento con Ansible, damos paso a usar Vagrant con este playbook.yml con el fin de provisionar las máquinar virtuales cada una con el suyo.

Se ha de mencionar que dichos playbook va a ser el que nos instale Docker con todos sus paquetes.

  • El contenedor de Categorias y gestion de contenidos de noticias se encuentra aquí.
  • El contenedor de Estadisticas se encuentra aquí.
  • El contenedor del Bot se encuentra aquí.

Imagen contenedores

Y cada uno de los playbooks aqui y el Vagrantfile.

Finalente ya solo tenemos que hacer en la consola vagrant up --provider=aws para desplegar todas las máquinas.

Imagen contenedores

Imagen contenedores

Imagen contenedores

Imagen contenedores

Imagen contenedores

Imagen contenedores

Tag summary

Content type

Image

Digest

Size

169.3 MB

Last updated

over 9 years ago

docker pull stiago/lecrinbot-bot:bot