
Stop copy-pasting Terraform modules, I built a tested registry for AWS, GCP, and Azure with Terratest and CI
Disclaimer: I built this project and am sharing it as a free open-source tool.
Every project I join has the same problem: someone copied and pasted a VPC module from a blog post in 2019, nobody tested it properly, and now it's load-bearing infrastructure.
This registry has 9 modules across AWS, GCP and Azure, VPC/VNet, Kubernetes (EKS/GKE/AKS), and IAM/Workload Identity for each cloud.
Every module has:
- A Terratest that provisions real infrastructure and tears it down (no mocks)
- GitHub Actions CI (fmt, validate, tflint, Checkov)
- Secure defaults with every option exposed as a variable
- Working examples you can run in under 5 minutes
**Module list:**
- modules/aws/vpc: VPC, public/private subnets, NAT gateway, route tables
- modules/aws/eks: EKS cluster, managed node groups, OIDC, IRSA
- modules/aws/iam: roles, policies, IRSA binding
- modules/gcp/vpc: VPC, Cloud NAT, Private Google Access, firewall rules
- modules/gcp/gke: GKE cluster, node pools, Workload Identity
- modules/gcp/iam: service accounts, IAM bindings, WI federation
- modules/azure/vnet: VNet, subnets, NSGs, route tables
- modules/azure/aks: AKS, managed identity, OIDC, Workload Identity
- modules/azure/iam: managed identities, federated credentials, role assignments
**Quick start:**
git clone https://github.com/Cloud-Architect-Emma/terraform-module-registry
cd terraform-module-registry/examples/aws
terraform init && terraform plan
**Or reference directly in your code:**
module "vpc" {
source = "github.com/Cloud-Architect-Emma/terraform-module-registry//modules/aws/vpc?ref=main"
name = "production"
cidr = "10.0.0.0/16"
azs = ["eu-west-1a", "eu-west-1b", "eu-west-1c"]
private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
public_subnets = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
enable_nat_gateway = true
}
⭐ If this saves you time, a star on the repo helps others find it: https://github.com/Cloud-Architect-Emma/terraform-module-registry
PRs welcome, what module would you add first?