← Back to all products

Terraform Starter Kit

$39

Production-ready Terraform modules for AWS/Azure/GCP with state management, workspaces, and CI/CD integration.

📁 18 files🏷 v1.0.0
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 }}