{"slug":"terraform-module-library","title":"terraform-module-library","summary":"Production-ready Terraform module patterns for AWS, Azure, and GCP infrastructure.","platform":"ChatGPT","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-16T13:39:02.301188Z","repo":{"url":"https://github.com/sickn33/agentic-awesome-skills","stars":46883,"forks":6831,"license":"MIT","updatedAt":"2026-09-25T05:43:16Z"},"bodyHtml":"<hr>\n<h2>name: terraform-module-library\ndescription: \"Production-ready Terraform module patterns for AWS, Azure, and GCP infrastructure.\"\nrisk: critical\nsource: community\ndate_added: \"2026-02-27\"</h2>\n<h1>Terraform Module Library</h1>\n<p>Production-ready Terraform module patterns for AWS, Azure, and GCP infrastructure.</p>\n<h2>Do not use this skill when</h2>\n<ul>\n<li>The task is unrelated to terraform module library</li>\n<li>You need a different domain or tool outside this scope</li>\n</ul>\n<h2>Instructions</h2>\n<ul>\n<li>Clarify goals, constraints, and required inputs.</li>\n<li>Apply relevant best practices and validate outcomes.</li>\n<li>Provide actionable steps and verification.</li>\n<li>If detailed examples are required, open <code>resources/implementation-playbook.md</code>.</li>\n</ul>\n<h2>Purpose</h2>\n<p>Create reusable, well-tested Terraform modules for common cloud infrastructure patterns across multiple cloud providers.</p>\n<h2>Use this skill when</h2>\n<ul>\n<li>Build reusable infrastructure components</li>\n<li>Standardize cloud resource provisioning</li>\n<li>Implement infrastructure as code best practices</li>\n<li>Create multi-cloud compatible modules</li>\n<li>Establish organizational Terraform standards</li>\n</ul>\n<h2>Module Structure</h2>\n<pre><code>terraform-modules/\n├── aws/\n│   ├── vpc/\n│   ├── eks/\n│   ├── rds/\n│   └── s3/\n├── azure/\n│   ├── vnet/\n│   ├── aks/\n│   └── storage/\n└── gcp/\n    ├── vpc/\n    ├── gke/\n    └── cloud-sql/\n</code></pre>\n<h2>Standard Module Pattern</h2>\n<pre><code>module-name/\n├── main.tf          # Main resources\n├── variables.tf     # Input variables\n├── outputs.tf       # Output values\n├── versions.tf      # Provider versions\n├── README.md        # Documentation\n├── examples/        # Usage examples\n│   └── complete/\n│       ├── main.tf\n│       └── variables.tf\n└── tests/           # Terratest files\n    └── module_test.go\n</code></pre>\n<h2>AWS VPC Module Example</h2>\n<p><strong>main.tf:</strong></p>\n<pre><code>resource \"aws_vpc\" \"main\" {\n  cidr_block           = var.cidr_block\n  enable_dns_hostnames = var.enable_dns_hostnames\n  enable_dns_support   = var.enable_dns_support\n\n  tags = merge(\n    {\n      Name = var.name\n    },\n    var.tags\n  )\n}\n\nresource \"aws_subnet\" \"private\" {\n  count             = length(var.private_subnet_cidrs)\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = var.private_subnet_cidrs[count.index]\n  availability_zone = var.availability_zones[count.index]\n\n  tags = merge(\n    {\n      Name = \"${var.name}-private-${count.index + 1}\"\n      Tier = \"private\"\n    },\n    var.tags\n  )\n}\n\nresource \"aws_internet_gateway\" \"main\" {\n  count  = var.create_internet_gateway ? 1 : 0\n  vpc_id = aws_vpc.main.id\n\n  tags = merge(\n    {\n      Name = \"${var.name}-igw\"\n    },\n    var.tags\n  )\n}\n</code></pre>\n<p><strong>variables.tf:</strong></p>\n<pre><code>variable \"name\" {\n  description = \"Name of the VPC\"\n  type        = string\n}\n\nvariable \"cidr_block\" {\n  description = \"CIDR block for VPC\"\n  type        = string\n  validation {\n    condition     = can(regex(\"^([0-9]{1,3}\\\\.){3}[0-9]{1,3}/[0-9]{1,2}$\", var.cidr_block))\n    error_message = \"CIDR block must be valid IPv4 CIDR notation.\"\n  }\n}\n\nvariable \"availability_zones\" {\n  description = \"List of availability zones\"\n  type        = list(string)\n}\n\nvariable \"private_subnet_cidrs\" {\n  description = \"CIDR blocks for private subnets\"\n  type        = list(string)\n  default     = []\n}\n\nvariable \"enable_dns_hostnames\" {\n  description = \"Enable DNS hostnames in VPC\"\n  type        = bool\n  default     = true\n}\n\nvariable \"tags\" {\n  description = \"Additional tags\"\n  type        = map(string)\n  default     = {}\n}\n</code></pre>\n<p><strong>outputs.tf:</strong></p>\n<pre><code>output \"vpc_id\" {\n  description = \"ID of the VPC\"\n  value       = aws_vpc.main.id\n}\n\noutput \"private_subnet_ids\" {\n  description = \"IDs of private subnets\"\n  value       = aws_subnet.private[*].id\n}\n\noutput \"vpc_cidr_block\" {\n  description = \"CIDR block of VPC\"\n  value       = aws_vpc.main.cidr_block\n}\n</code></pre>\n<h2>Best Practices</h2>\n<ol>\n<li><strong>Use semantic versioning</strong> for modules</li>\n<li><strong>Document all variables</strong> with descriptions</li>\n<li><strong>Provide examples</strong> in examples/ directory</li>\n<li><strong>Use validation blocks</strong> for input validation</li>\n<li><strong>Output important attributes</strong> for module composition</li>\n<li><strong>Pin provider versions</strong> in versions.tf</li>\n<li><strong>Use locals</strong> for computed values</li>\n<li><strong>Implement conditional resources</strong> with count/for_each</li>\n<li><strong>Test modules</strong> with Terratest</li>\n<li><strong>Tag all resources</strong> consistently</li>\n</ol>\n<h2>Module Composition</h2>\n<pre><code>module \"vpc\" {\n  source = \"../../modules/aws/vpc\"\n\n  name               = \"production\"\n  cidr_block         = \"10.0.0.0/16\"\n  availability_zones = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n\n  private_subnet_cidrs = [\n    \"10.0.1.0/24\",\n    \"10.0.2.0/24\",\n    \"10.0.3.0/24\"\n  ]\n\n  tags = {\n    Environment = \"production\"\n    ManagedBy   = \"terraform\"\n  }\n}\n\nmodule \"rds\" {\n  source = \"../../modules/aws/rds\"\n\n  identifier     = \"production-db\"\n  engine         = \"postgres\"\n  engine_version = \"15.3\"\n  instance_class = \"db.t3.large\"\n\n  vpc_id     = module.vpc.vpc_id\n  subnet_ids = module.vpc.private_subnet_ids\n\n  tags = {\n    Environment = \"production\"\n  }\n}\n</code></pre>\n<h2>Reference Files</h2>\n<ul>\n<li><code>assets/vpc-module/</code> - Complete VPC module example</li>\n<li><code>assets/rds-module/</code> - RDS module example</li>\n<li><code>references/aws-modules.md</code> - AWS module patterns</li>\n<li><code>references/azure-modules.md</code> - Azure module patterns</li>\n<li><code>references/gcp-modules.md</code> - GCP module patterns</li>\n</ul>\n<h2>Testing</h2>\n<pre><code>// tests/vpc_test.go\npackage test\n\nimport (\n    \"testing\"\n    \"github.com/gruntwork-io/terratest/modules/terraform\"\n    \"github.com/stretchr/testify/assert\"\n)\n\nfunc TestVPCModule(t *testing.T) {\n    terraformOptions := &amp;terraform.Options{\n        TerraformDir: \"../examples/complete\",\n    }\n\n    defer terraform.Destroy(t, terraformOptions)\n    terraform.InitAndApply(t, terraformOptions)\n\n    vpcID := terraform.Output(t, terraformOptions, \"vpc_id\")\n    assert.NotEmpty(t, vpcID)\n}\n</code></pre>\n<h2>Related Skills</h2>\n<ul>\n<li><code>multi-cloud-architecture</code> - For architectural decisions</li>\n<li><code>cost-optimization</code> - For cost-effective designs</li>\n</ul>\n<h2>Limitations</h2>\n<ul>\n<li>Use this skill only when the task clearly matches the scope described above.</li>\n<li>Do not treat the output as a substitute for environment-specific validation, testing, or expert review.</li>\n<li>Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.</li>\n</ul>\n","files":[{"path":"references/aws-modules.md","sizeBytes":1307,"isText":true},{"path":"SKILL.md","sizeBytes":6309,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"human-reviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"human-reviewed","screen":{"ran":true,"outcome":"flagged-cleared-by-moderator","suspicious":2,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-08-16T13:46:44.6296Z","sha256":"93C29FD35FFC71564F79547F5CF39BBDD36CE8F9105A1C3459EC6B1A46BA1B9B","sizeBytes":3256},"review":null,"source":{"repositoryUrl":"https://github.com/sickn33/agentic-awesome-skills","path":"skills/terraform-module-library","license":"MIT","commit":"f2bba339de74414b0771234cbe4f6a15258e32a3","subtreeSha":"ED592B859F1DFD60F3808F5145C795A44E353616B342FC16065CD2A865458E75","lastSyncedAt":"2026-09-25T06:48:39.853703Z"},"reviewedAt":"2026-09-06T17:56:45.640971Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/sickn33/agentic-awesome-skills/tree/main/skills/terraform-module-library"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install sickn33-agentic-awesome-skills@llmmart"},{"target":"git","command":"git clone https://github.com/sickn33/agentic-awesome-skills.git"}]}