# Resources — Infrastructure as Code

High-trust sources only. Every non-trivial claim in a lesson links to one of these. The
HashiCorp Terraform docs + Terragrunt + GCP docs are the spine.

## Primary — Terraform (developer.hashicorp.com)

### Fundamentals
- **What is IaC with Terraform?** — https://developer.hashicorp.com/terraform/tutorials/aws-get-started/infrastructure-as-code *(Lesson 1)*
- **Terraform language / configuration** — https://developer.hashicorp.com/terraform/language *(Lesson 2)*
- **Providers** — https://developer.hashicorp.com/terraform/language/providers *(Lesson 2)*
- **Resources** — https://developer.hashicorp.com/terraform/language/resources *(Lesson 2)*
- **The core workflow (write / plan / apply)** — https://developer.hashicorp.com/terraform/intro/core-workflow *(Lessons 1, 12)*

### State & modules
- **State** — https://developer.hashicorp.com/terraform/language/state *(Lesson 3)*
- **Backend: gcs** — https://developer.hashicorp.com/terraform/language/backend/gcs *(Lesson 3)*
- **State locking** — https://developer.hashicorp.com/terraform/language/state/locking *(Lesson 3)*
- **Manage resource drift** — https://developer.hashicorp.com/terraform/tutorials/state/resource-drift *(Lessons 3, 12)*
- **Modules** — https://developer.hashicorp.com/terraform/language/modules *(Lesson 4)*

### Terragrunt
- **Terragrunt — Keep remote state DRY** — https://terragrunt.gruntwork.io/docs/features/keep-your-remote-state-configuration-dry/ *(Lesson 5)*
- **Terragrunt — config blocks (include / generate / remote_state)** — https://terragrunt.gruntwork.io/docs/reference/config-blocks-and-attributes/ *(Lessons 5–6)*

## GCP
- **GKE overview** — https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview *(Lesson 8)*
- **Workload Identity (GKE)** — https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity *(Lesson 9)*
- **Workload Identity Federation (external, for GitHub OIDC)** — https://cloud.google.com/iam/docs/workload-identity-federation *(Lesson 9)*
- **IAM overview** — https://cloud.google.com/iam/docs/overview *(Lesson 9)*
- **Cloud KMS** — https://cloud.google.com/kms/docs/key-management-service *(Lesson 10)*
- **Cloud SQL for PostgreSQL** — https://cloud.google.com/sql/docs/postgres *(Lesson 11)*
- **VPC** — https://cloud.google.com/vpc/docs/vpc *(Lesson 11)*
- **google Terraform provider** — https://registry.terraform.io/providers/hashicorp/google/latest/docs *(Lessons 2, 8–11)*

## Automation
- **Atlantis — Terraform PR automation** — https://www.runatlantis.io/guide.html *(Lesson 12)*
- **Atlantis — Using Atlantis (plan/apply comments)** — https://www.runatlantis.io/docs/using-atlantis *(Lesson 12)*

## Certification / structured learning
- **HashiCorp Certified: Terraform Associate** — https://developer.hashicorp.com/certifications/infrastructure-automation
- **Terraform tutorials** — https://developer.hashicorp.com/terraform/tutorials

## Secondary — trusted explainers
- **Gruntwork blog (Terragrunt authors)** — https://www.gruntwork.io/blog
- **Google Cloud Architecture Center — Terraform on GCP** — https://cloud.google.com/docs/terraform

## In-repo ground truth
- [reference/repo-iac-map.md](./reference/repo-iac-map.md) — the modules/live layout, state
  backend, the GKE/Cloud-SQL/IAM/KMS modules, Workload Identity bindings, and Atlantis, with
  paths and line anchors.

## Communities (for wisdom)
- **HashiCorp Discuss** (discuss.hashicorp.com) — Terraform/Terragrunt Q&A.
- **r/Terraform** — practical module/state questions.
- Internally: the platform team owning `deployments/terraform/` + Atlantis — *the real apply
  process and who can touch prod state*.
