NYC
skills/smithery/ai/terraform-module-library

terraform-module-library

SKILL.md

Terraform Module Library

This skill provides standardized patterns and best practices for creating and using Terraform modules.

When to Use

  • Creating new reusable Terraform modules
  • Refactoring existing Terraform code into modules
  • Standardizing infrastructure patterns across the project
  • implement specific infrastructure components (VPC, GKE, RDS, etc.) using best practices

Module Structure

Standard directory structure for a Terraform module:

module-name/
├── main.tf       # Primary logic and resources
├── variables.tf  # Input variable definitions
├── outputs.tf    # Output value definitions
├── versions.tf   # Provider and Terraform version constraints
├── README.md     # Module documentation
└── examples/     # Example configurations
    └── complete/ # Full example usage

Best Practices

Cloud Providers

Google Cloud Platform (GCP)

  • Use google-beta provider for beta features if necessary, but prefer GA.
  • Follow Google's "Cloud Foundation Toolkit" patterns where applicable.
  • Resource naming: Use standardized prefixes/suffixes (e.g., gcp-vpc-{env}).

AWS

  • Use standard aws provider resources.
  • Tag all resources with consistent tags (Owner, Environment, Project).

General

  • Version Pinning: Always pin provider and Terraform versions in versions.tf.
  • Variables: Include description and type for all variables. Use validation blocks for constraints.
  • Outputs: Document all outputs.
  • State: Do not include backend configuration in modules; state is managed by the root configuration.

Common Module Patterns

Private Module Registry

If using a private registry, ensure source paths follow the registry's convention.

Local Modules

For local development or monorepos:

module "network" {
  source = "./modules/network"
  # ...
}

Review Checklist

  1. Does the module have a README.md with input/output documentation?
  2. Are all variables typed and described?
  3. Are resource names deterministic or correctly scoped?
  4. Does it include examples/?
  5. Is terraform_remote_state avoided within the module?
Weekly Installs
1
Repository
smithery/ai
First Seen
1 day ago
Installed on
codex1