Development of an automatic system for the deployment of virtualized environments

Este proyecto busca desarrollar, basándose en la experiencia profesional del autor que trabaja con sistemas similares, un sistema de código abierto que despliegue y configure automáticamente un sistema virtual funcional que sirva de entorno de desarrollo para software con una mínima intervención del usuario y siguiendo los estándares del sector. El objetivo principal del sistema es automatizar el proceso de configuración de un entorno de desarrollo para ahorrar tiempo y recursos, reducir errores y mejorar la productividad.
El sistema emplea herramientas de Infraestructure as Code (IaC) de uso gratuito como Vagrant y Ansible para desplegar y configurar el entorno virtual de manera reproducible, escalable y consistente a través de plataformas distintas. El sistema puede ser usado sin tener conocimientos previos del IaC siguiendo instrucciones simples, el entorno puede personalizarse para ajustarse a las necesidades del usuario, y es fácil de mantener y actualizar.
El sistema se divide en tres niveles, cada uno cumple un objetivo específico y se construye sobre el nivel precedente. El primer nivel contiene la aplicación o sistema que esté siendo desarrollado, el segundo nivel contiene la configuración de Vagrant que despliega y configura el entorno, y el tercer nivel despliega una solución de monitorización que usa Grafana y Prometheus para permitir que el entorno sea externamente monitorizado en tiempo real, lo que provee información valiosa sobre el estado y desempeño del entorno.
El sistema se desarrolló usando una metodología ágil modificada a partir de los principios de SCRUM. Su desarrollo fue gestionado a través del uso de repositorios de GitHub y de las herramientas que GitHub provee en conjunto con una estrategia preestablecida para la gestión del proyecto a través de la resolución sistemática de issues.
Abstract:
This project aims to develop, using the author’s professional experience in working with similar systems, an open‐source system that automatically deploys and provisions a fully functional virtualized software development environment with minimal user intervention while following current industry standards. The system’s main goal is to automate the process of setting up a development environment to save time and resources, reduce errors, and improve productivity.
The system employs free‐to‐use Infraestructure as Code tools such as Vagrant and Ansible to deploy and configure the virtualized environment in a reproducible, scalable, and consistent manner across different platforms. The system can be used without prior knowledge of the IaC tools by following simple instructions, it can be easily customized to suit the user’s needs, and it is easy to maintain and update.
The system is divided into three levels, each level fulfills a specific objective and builds upon the previous level. The first level contains the working application or system that is being developed, the second level contains the Vagrant setup that deploys and provisions the environment, and the third level deploys a monitoring solution using Grafana and Prometheus to allow the environment to be externally monitored in real‐time, providing valuable insights into the system’s performance and health.
The system was developed using a modified agile methodology based on SCRUM principles. Its development was managed through the use of GitHub repositories and the tools GitHub provides coupled with a pre‐established strategy to manage the project’s development through issue resolution.

​Este proyecto busca desarrollar, basándose en la experiencia profesional del autor que trabaja con sistemas similares, un sistema de código abierto que despliegue y configure automáticamente un sistema virtual funcional que sirva de entorno de desarrollo para software con una mínima intervención del usuario y siguiendo los estándares del sector. El objetivo principal del sistema es automatizar el proceso de configuración de un entorno de desarrollo para ahorrar tiempo y recursos, reducir errores y mejorar la productividad.
El sistema emplea herramientas de Infraestructure as Code (IaC) de uso gratuito como Vagrant y Ansible para desplegar y configurar el entorno virtual de manera reproducible, escalable y consistente a través de plataformas distintas. El sistema puede ser usado sin tener conocimientos previos del IaC siguiendo instrucciones simples, el entorno puede personalizarse para ajustarse a las necesidades del usuario, y es fácil de mantener y actualizar.
El sistema se divide en tres niveles, cada uno cumple un objetivo específico y se construye sobre el nivel precedente. El primer nivel contiene la aplicación o sistema que esté siendo desarrollado, el segundo nivel contiene la configuración de Vagrant que despliega y configura el entorno, y el tercer nivel despliega una solución de monitorización que usa Grafana y Prometheus para permitir que el entorno sea externamente monitorizado en tiempo real, lo que provee información valiosa sobre el estado y desempeño del entorno.
El sistema se desarrolló usando una metodología ágil modificada a partir de los principios de SCRUM. Su desarrollo fue gestionado a través del uso de repositorios de GitHub y de las herramientas que GitHub provee en conjunto con una estrategia preestablecida para la gestión del proyecto a través de la resolución sistemática de issues.
Abstract:
This project aims to develop, using the author’s professional experience in working with similar systems, an open‐source system that automatically deploys and provisions a fully functional virtualized software development environment with minimal user intervention while following current industry standards. The system’s main goal is to automate the process of setting up a development environment to save time and resources, reduce errors, and improve productivity.
The system employs free‐to‐use Infraestructure as Code tools such as Vagrant and Ansible to deploy and configure the virtualized environment in a reproducible, scalable, and consistent manner across different platforms. The system can be used without prior knowledge of the IaC tools by following simple instructions, it can be easily customized to suit the user’s needs, and it is easy to maintain and update.
The system is divided into three levels, each level fulfills a specific objective and builds upon the previous level. The first level contains the working application or system that is being developed, the second level contains the Vagrant setup that deploys and provisions the environment, and the third level deploys a monitoring solution using Grafana and Prometheus to allow the environment to be externally monitored in real‐time, providing valuable insights into the system’s performance and health.
The system was developed using a modified agile methodology based on SCRUM principles. Its development was managed through the use of GitHub repositories and the tools GitHub provides coupled with a pre‐established strategy to manage the project’s development through issue resolution. Read More