← Back to all products
$39
Terraform Starter Kit
Production-ready Terraform modules for AWS/Azure/GCP with state management, workspaces, and CI/CD integration.
MakeShellTerraformJSONMarkdownYAMLConfigAWSPostgreSQLGitHub Actions
📁 File Structure 18 files
terraform-starter-kit/
├── .github/
│ └── workflows/
│ └── terraform.yml
├── LICENSE
├── Makefile
├── README.md
├── backend.tf
├── environments/
│ ├── dev/
│ │ └── main.tf
│ └── prod/
│ └── main.tf
├── guides/
│ └── terraform-best-practices.md
├── modules/
│ ├── cloudfront/
│ │ └── main.tf
│ ├── ecs/
│ │ └── main.tf
│ ├── iam/
│ │ └── main.tf
│ ├── rds/
│ │ └── main.tf
│ ├── s3/
│ │ └── main.tf
│ └── vpc/
│ └── main.tf
├── outputs.tf
├── scripts/
│ └── init-backend.sh
├── terraform.tfvars.example
└── variables.tf
📖 Documentation Preview README excerpt
Terraform Starter Kit
Production-ready AWS infrastructure modules with CI/CD, remote state, and environment separation.
A complete Terraform project scaffold for deploying secure, scalable AWS infrastructure. Includes VPC networking, ECS Fargate compute, RDS databases, S3 storage, CloudFront CDN, and IAM — all wired together with remote state, locking, and a GitHub Actions pipeline.
---
What You Get
- 6 Terraform modules — VPC, ECS, RDS, S3, IAM, CloudFront — each production-hardened
- Environment configs — Dev and prod with isolated state and tuned defaults
- Remote state — S3 + DynamoDB backend with encryption and locking
- CI/CD pipeline — GitHub Actions workflow: fmt, validate, plan on PR, apply on merge
- Bootstrap script — One command to create state bucket and lock table
- Best practices guide — 1,500+ words on Terraform patterns, module design, and state management
File Tree
terraform-starter-kit/
├── README.md
├── manifest.json
├── LICENSE
├── variables.tf # Root input variables with validation
├── outputs.tf # Root outputs (VPC, ECS, RDS, S3 endpoints)
├── backend.tf # S3 + DynamoDB remote state config
├── terraform.tfvars.example # Example variable values
├── Makefile # init / plan / apply / destroy shortcuts
├── modules/
│ ├── vpc/main.tf # VPC, subnets, NAT, IGW (multi-AZ)
│ ├── ecs/main.tf # ECS Fargate cluster + capacity providers
│ ├── rds/main.tf # RDS PostgreSQL, multi-AZ, encryption
│ ├── s3/main.tf # S3 bucket, versioning, lifecycle, replication
│ ├── iam/main.tf # IAM roles for ECS tasks, CI/CD, cross-account
│ └── cloudfront/main.tf # CloudFront distribution + S3 origin
├── environments/
│ ├── dev/main.tf # Dev environment composition
│ └── prod/main.tf # Prod environment composition
├── scripts/
│ └── init-backend.sh # Bootstrap S3 bucket + DynamoDB table
├── .github/workflows/
│ └── terraform.yml # CI/CD: plan on PR, apply on merge
└── guides/
└── terraform-best-practices.md
Getting Started
1. Bootstrap Remote State
# Create the S3 bucket and DynamoDB lock table
./scripts/init-backend.sh my-org-tf-state us-east-1
2. Configure Variables
cp terraform.tfvars.example terraform.tfvars
*... continues with setup instructions, usage examples, and more.*
📄 Code Sample .yml preview
.github/workflows/terraform.yml
name: Terraform CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
terraform:
runs-on: ubuntu-latest
strategy:
matrix:
environment: [dev, staging, prod]
steps:
- uses: actions/checkout@v4
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: 1.7.0
- name: Terraform Init
run: terraform init
working-directory: environments/${{ matrix.environment }}
- name: Terraform Validate
run: terraform validate
working-directory: environments/${{ matrix.environment }}
- name: Terraform Plan
run: terraform plan -no-color
working-directory: environments/${{ matrix.environment }}
- name: Terraform Apply
if: github.ref == 'refs/heads/main' && matrix.environment != 'prod'
run: terraform apply -auto-approve
working-directory: environments/${{ matrix.environment }}