Este proyecto tiene como objetivo crear un pipeline que permite gestionar una base de datos en MongoDB Atlas como Infraestructura como Código (IaC) utilizando Terraform. Además, incluye la capacidad de realizar backups de la base de datos y almacenarlos en un bucket S3 de AWS. La idea de realizar este proyecto surjió desde los proyectos sugeridos por RoadMap.sh.
- Terraform: Para aprovisionar y gestionar la base de datos.
- GitHub Actions: Para la automatización de workflows y composite actions.
- Python: Para la creación de scripts que generan los backups.
- AWS S3: Para almacenar tanto el estado de Terraform (tfstate) como los backups de la base de datos.
- MongoDB Atlas: La base de datos se encuentra en una instancia M0 free tier sin backup automático.
-
Aprovisionamiento de la Base de Datos:
- Utiliza Terraform para aprovisionar una base de datos M0 Azure en MongoDB Atlas.
- El estado de Terraform (tfstate) se gestiona a través de un backend almacenado en un bucket S3 de AWS.
-
Creación y Almacenamiento de Backups:
- Un script en Python genera backups de la base de datos.
- Los backups se comprimen y se suben automáticamente al bucket S3 de AWS mediante GitHub Actions.
El proyecto incluye dos workflows principales:
-
Provisionar la Base de Datos:
- Aprovisiona la base de datos en MongoDB Atlas utilizando Terraform.
-
Backup de la Base de Datos:
- Genera un backup de la base de datos.
- Sube el backup generado al bucket S3 de AWS.
Portfolio-Project-1/
├── LICENSE
├── README.md
├── .github/
│ ├── workflows/
│ │ ├── provision-db.yml
│ │ └── backup-db.yml
│ ├── actions/
│ │ ├── backup-action/
│ │ │ ├── action.yml
│ │ │ ├── backup.py
│ │ │ └── requirements.txt
├── terraform/
│ ├── main.tf
│ ├── providers.tf
│ ├── terraform.tfstate
│ ├── terraform.tfstate.backup
│ └── terraform.tfvars
- Tener configuradas las credenciales de AWS para acceder al bucket S3.
- Tener una cuenta en MongoDB Atlas.
- Instalar las siguientes herramientas:
- Terraform
- Python
- Docker (opcional, para pruebas locales)
-
Provisionar la Base de Datos:
- Ejecutar el workflow correspondiente en GitHub Actions.
-
Realizar un Backup:
- Ejecutar el workflow de backup en GitHub Actions.
Este proyecto está licenciado bajo los términos especificados en el archivo LICENSE.