Este conjunto de actividades está diseñado para introducirte al mundo de la Infraestructura como Código (IaC) de una manera práctica, simple y con resultados visibles desde el primer día. ¡Aquí comienza tu camino como DevOps!
- Dominar Terraform para automatizar tareas comunes de infraestructura en la nube.
- Desplegar aplicaciones en contenedores utilizando Docker y Terraform.
- Simular servicios de AWS como S3 y DynamoDB de manera local con LocalStack.
- Adoptar buenas prácticas de estructura de archivos, modularización y reutilización de código.
Terraform no es solo una herramienta, es una mentalidad de organización y escalabilidad. Con este set de desafíos, aprenderás a escribir y gestionar infraestructura como si fuera código de aplicación. No solo verás resultados desde el primer commit, sino que también te prepararás para asumir roles clave en proyectos DevOps. ¡Comencemos a crear y automatizar como verdaderos DevOps!
A continuación, encontrarás tres desafíos prácticos que te ayudarán a iniciarte en el mundo de Terraform utilizando Docker, LocalStack y AWS DynamoDB.
Ruta: ./terraform-labs/docker-terraform-helloworld
Automatizar la construcción y ejecución de un contenedor Docker con una aplicación Node.js real utilizando Terraform.
Terraform + Docker
Repositorio base: helloworld-demo-node
- Clonar el repositorio
helloworld-demo-node. - Usar el proveedor
kreuzwerker/dockeren Terraform. - Crear un recurso
docker_imagedesde el Dockerfile clonado. - Crear un recurso
docker_containerque exponga el puerto 80 al 8080. - Definir variables para la imagen, el contenedor y los puertos.
- Mostrar los outputs: URL del contenedor y estado de ejecución.
docker-terraform-helloworld/
├── main.tf
├── variables.tf
├── outputs.tf
└── helloworld-demo-node/ # Clonado desde GitHubAccede a http://localhost:8080 y verifica que se muestre:
Hello from Docker!
Ruta: ./terraform-labs/localstack-s3-ecommerce
Simular el hosting de una página web estática de e-commerce en S3 utilizando LocalStack y Terraform.
Terraform + LocalStack + S3
Plantilla base: Start Bootstrap E-commerce Template
- Descargar la plantilla de e-commerce y colocarla en
web/. - Configurar el proveedor de AWS apuntando a LocalStack (
localhost:4566). - Crear un bucket de S3 con configuración de sitio web.
- Subir los archivos HTML/CSS/JS utilizando
aws_s3_bucket_objectyfor_each. - Usar
mime_typesenvariables.tfpara especificar los tipos de archivo. - Mostrar la URL del sitio web con el output correspondiente.
localstack-s3-ecommerce/
├── main.tf
├── provider.tf
├── variables.tf
├── outputs.tf
└── web/
├── index.html
├── css/
├── js/
└── ...otros assetsAbre en tu navegador:
http://localhost:4566/ecommerce-site/index.html
Ruta: ./terraform-labs/aws-dynamodb-items
Crear una tabla en DynamoDB y precargarla con datos (ítems) utilizando Terraform.
Terraform + AWS DynamoDB
- Configurar el proveedor de AWS (puedes usar claves o un perfil).
- Crear una tabla
aws_dynamodb_tablecon una hash keyidy modo PAY_PER_REQUEST. - Declarar los ítems como un
jsonencode()en un local variable. - Crear los ítems utilizando
aws_dynamodb_table_itemyfor_each. - Mostrar los outputs: nombre de la tabla y su ARN.
aws-dynamodb-items/
├── main.tf
├── provider.tf
├── variables.tf
├── outputs.tfEntra en la consola de AWS y ve a:
Consola > DynamoDB > Items
Deberías ver algo como esto:
{ "id": "001", "name": "Ada", "score": 95 }
{ "id": "002", "name": "Linus", "score": 89 }¡Disfruta de estos desafíos y empieza a crear tu infraestructura como código con Terraform!
"DevOps es el arte de la colaboración y la automatización, donde la innovación y la confiabilidad se unen para crear un camino continuo hacia el éxito."
🔥🔥🔥🔥
Me puedes encontrar en las siguientes plataformas: