Infraestructura como código (IaC) para el desafío técnico del rol Tech Lead en Nequi.
Este repositorio contiene los archivos y configuraciones necesarias para desplegar una arquitectura en AWS, incluyendo:
- Instancia de EC2 con Docker para correr el backend.
- Base de datos MySQL en Amazon RDS.
- Bucket S3 y tabla DynamoDB para almacenar y bloquear el estado de Terraform.
- Automatización de despliegue con GitHub Actions.
.
├── .github/workflows/terraform.yml # Pipeline de GitHub Actions para Terraform
├── .scripts/
│ ├── generate_ssh_key.sh # Script para generar llave SSH
│ └── terraform_s3_save_state.sh # Script para crear bucket S3 y tabla DynamoDB
├── main.tf
├── provider.tf
├── variables.tf
├── local.tf
└── README.md
Instala AWS CLI y ejecuta:
aws configureAgrega tu:
- AWS Access Key
- AWS Secret Access Key
- Región (ej.
us-east-1)
sh .\.scripts\generate_ssh_key.sh Esto creará una clave en la raiz del proyecto ./.ssh/key-nequi-techlead-challenge que se usará en el recurso EC2.
Si desea correr el proyecto localmente, vaya al archivo provider.tf y reemplace la linea backend "s3" {...} por backend "local" {}.
El archivo debería verse algo así:
terraform {
required_version = ">= 1.6.6"
required_providers {
aws = {
source = "hashicorp/aws"
version = "5.31.0"
}
}
backend "local" {}
}
provider "aws" {
region = "us-east-1"
alias = "main"
}sh .\.scripts\terraform_s3_save_state.shEste script:
- Crea el bucket
s3-nequi-techlead-challenge-terraform - Crea la tabla
dynamo-nequi-techlead-challenge-terraform-lockpara el bloqueo de estado de terraform
terraform initEsto configura el backend remoto con S3 y DynamoDB.
terraform planVerifica los recursos que se van a crear.
terraform apply -auto-approveEste repositorio incluye un workflow en .github/workflows/terraform.yml que permite desplegar o destruir la infraestructura desde la UI de GitHub.
- El workflow se activa manualmente (
workflow_dispatch). - Acepta dos opciones:
Terraform_apply→ crea/actualiza la infraestructura.Terraform_destroy→ destruye la infraestructura.
Debes definir los siguientes secrets en GitHub:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGION
- Ve a la pestaña Actions de tu repositorio.
- Selecciona el workflow Terraform.
- Haz clic en Run workflow.
- Selecciona
Terraform_applyoTerraform_destroy.
- El estado de Terraform se almacena en un bucket S3 con bloqueo habilitado vía DynamoDB.
- La infraestructura puede ser destruida fácilmente usando
terraform destroyo el workflow. - Esta solución está pensada para ser rápida, modular y fácilmente desplegable en la nube como parte del reto técnico.