Skip to content

chainguard-dev/terraform-infra-common

Repository files navigation

terraform-infra-common

Static Badge

A repository containing a collection of common infrastructure modules for encapsulating common Cloud Run patterns.

Usage

To use components in this library, you must provide the project in a provider.google resource in your top-level main.tf:

provider "google" {
  project = var.project
}

Resource Labeling Convention

All modules in this repository follow a consistent labeling pattern for GCP cost allocation and resource organization:

locals {
  default_labels = {
    basename(abspath(path.module)) = var.name
    terraform-module               = basename(abspath(path.module))
    product                        = var.product
    team                           = var.team
  }

  merged_labels = merge(local.default_labels, var.labels)
}

This pattern:

  • Enables cost tracking to break down each module by use
  • Maintains consistency across all infrastructure modules
  • Supports team attribution through team labels (with backward compatibility for deprecated squad)
  • Allows custom labels via the labels variable
  • Provides module identification via the terraform-module label
  • Sets both squad and team labels to the same value for resource tagging

The basename(abspath(path.module)) automatically derives the module name (e.g., "gke", "redis", "workqueue") without requiring hardcoded values.

Team vs Squad

All modules support both team and squad variables for backward compatibility:

  • Use team for new code (preferred)
  • squad is deprecated but still supported
  • team takes precedence if both are provided
  • If neither is specified, both labels default to "unknown"

About

A repository containing a collection of "glue" modules for encapsulating common Cloud Run patterns.

Resources

License

Security policy

Stars

Watchers

Forks

Contributors 33