This project provides a modular and scalable Terraform codebase for deploying AWS infrastructure components such as VPC, subnets, and remote state management using S3 and DynamoDB.
iac-aws-modular-infra/ ├── modules/ │ └── vpc/ │ ├── main.tf │ ├── variables.tf │ └── outputs.tf ├── environments/ │ └── dev/ │ ├── main.tf │ ├── terraform.tfvars │ └── backend.tf ├── .gitignore └── README.md
- 🔁 Reusable VPC module
- ☁️ Remote backend setup using S3 + DynamoDB
- 🌐 Public and private subnets support
- 🔒 Secure outputs and variables
- 🚀 Production-grade structure ready for EC2, EKS, RDS modules
- Terraform v1.5+
- AWS CLI
- S3 & DynamoDB (for backend)
- GitHub
git clone https://github.com/M-Inamdar/iac-aws-modular-infra.git
cd iac-aws-modular-infra/environments/devModify backend.tf:
terraform {
backend "s3" {
bucket = "your-terraform-bucket"
key = "dev/vpc/terraform.tfstate"
region = "ap-south-1"
dynamodb_table = "terraform-locks"
encrypt = true
}
}Run:
terraform initEdit terraform.tfvars:
region = "ap-south-1"
vpc_cidr = "10.0.0.0/16"
public_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
private_subnets = ["10.0.101.0/24", "10.0.102.0/24"]terraform plan
terraform applyAfter terraform apply, the module will return:
VPC ID
Public/Private Subnet IDs
CIDR block references
Sample usage from main.tf:
module "vpc" {
source = "../../modules/vpc"
region = var.region
vpc_cidr = var.vpc_cidr
public_subnets = var.public_subnets
private_subnets = var.private_subnets
}Sample usage from main.tf in environments/dev:
module "ec2" {
source = "../../modules/ec2"
ami_id = var.ami_id
instance_type = var.instance_type
key_name = var.key_name
subnet_id = var.public_subnet_id
security_group_ids = var.security_group_ids
}Make sure these variables are defined in your terraform.tfvars:
ami_id = "ami-020cba7c55df1f615"
instance_type = "t2.micro"
key_name = "your-key-pair-name"
public_subnet_id = "subnet-xxxxxxxx"
security_group_ids = ["sg-xxxxxxxx"]EC2 Instance ID
Public IP
Availability Zone
v1.0.0 – Modular VPC
v1.0.1 – Modular EC2 provisioning added
DevOps Architect | Cloud Infra Specialist