← ClaudeAtlas

terraform-gcp-scaffolderlisted

Generate and review Terraform for GCP data platform resources, including BigQuery datasets, Cloud Run jobs, service accounts, IAM, Pub/Sub, Secret Manager, and Composer environments. Use when the user mentions Terraform, IaC, tfstate, provisioning GCP resources, service account permissions, least privilege, or asks to stand up a new environment or project.
rk-chavali/gcp-de-skills · ★ 0 · DevOps & Infrastructure · score 70
Install: claude install-skill rk-chavali/gcp-de-skills
# Terraform GCP scaffolder Read `references/conventions.md` for naming and labels. ## Layout ``` infra/ modules/ bq-dataset/ cloud-run-job/ service-account/ envs/ dev/ main.tf terraform.tfvars backend.tf prod/ main.tf terraform.tfvars backend.tf ``` One state file per environment, remote backend in GCS with versioning on. Never share state between dev and prod, and never let a module create its own project. ```hcl # envs/prod/backend.tf terraform { required_version = ">= 1.9" backend "gcs" { bucket = "acme-tfstate-prod" prefix = "data-platform" } required_providers { google = { source = "hashicorp/google" version = "~> 6.0" } } } ``` ## BigQuery dataset module ```hcl # modules/bq-dataset/main.tf resource "google_bigquery_dataset" "this" { dataset_id = var.dataset_id project = var.project_id location = var.location description = var.description delete_contents_on_destroy = false default_partition_expiration_ms = var.partition_expiration_days == null ? null : var.partition_expiration_days * 86400000 labels = merge(var.labels, { env = var.env domain = var.domain owner = var.owner }) } resource "google_bigquery_dataset_iam_member" "readers" { for_each = toset(var.reader_members) project = var.project_id dataset_id = google_bigquery_dataset.this.dataset_id role = "roles/bigquery.data