Infrastructure as Code (Terraform + AWS)

This project showcases a fully modular, production-grade Infrastructure as Code setup using Terraform and Terragrunt to provision cloud infrastructure across AWS.

Overview

I built this project to demonstrate reusable and scalable Terraform modules, all wrapped in a Terragrunt folder structure that supports multiple environments (dev, staging, prod). It features best practices for separating concerns, minimizing duplication, and enabling team-friendly collaboration.

Tools & Technologies

Architecture

The structure follows a per-module layout:

/03-iac-terraform/
├── terragrunt.hcl
├── common.tfvars
├── vpc/
│ └── main.tf
│ └── variables.tf
│ └── terrragrunt.hcl
├── s3/
│ └── main.tf
├── dynamodb/
│ └── main.tf
├── iam/
│ └── main.tf
├── rds/
│ ├── main.tf

Each directory represents a logical layer, sourced from my centralized tf-modules repository to ensure consistency across environments and projects.

Highlights

Deployment

cd 03-iac-terraform
terragrunt run-all init
terragrunt run-all plan
terragrunt run-all apply