Skip to content

Concept index

The lookup table for everything else. Each row is one concept and every place it appears: the theory that defines it, the Stage 2 topic that isolates it, the GCP lab that runs it for real, the code that depends on it, and the quiz that checks whether you actually have it.

Read a row left to right when learning something new. Read it right to left when something breaks and you need to find where the concept was explained. §N refers to the theory pages, numbered 1–19.

Core mechanics

Concept Theory Stage 2 Stage 3 Code Quiz
Providers, required_providers §2 Provider versions Lab 1 01-basics/7-version-constraints/, */infra/versions.tf Providers
Provider auth (ADC, google_client_config) §2, §11 Prereqs backend/infra/providers.tf Providers
Provider block defaults vs resource-level args §2 Provider versions Core root 02-gcp-terraform/01-core-gcp-resources/main.tf Providers
Provider aliasing (multi-region/project) §2 Lab 14
terraform init §3 Provider versions Providers
Version constraints & the lock file §3 Provider versions 01-basics/7-version-constraints/
Resource identity & force-replacement §5 Resources and state GKE
Resources vs data sources §11 Data sources Lab 7 01-basics/6-data-sources/, 02-gcp-terraform/01-core-gcp-resources/data.tf Resources
Implicit vs explicit dependencies §6 References and dependencies Lab 3 01-basics/4-dependencies/, backend/infra/main.tf
The dependency graph (terraform graph) §6 References and dependencies Core root 01-basics/4-dependencies/implicit/graph.svg

State

Concept Theory Stage 2 Stage 3 Code Quiz
State file & the apply model §4 Resources and state Lab 1 01-basics/1-create-local-file/ Resources
Remote backends (GCS) §14 Lab 2 02-gcp-terraform/01-core-gcp-resources/backend.tf
Drift, refresh, import §13 State surgery Lab 11 Resources
State surgery (mv/rm/import) §13 State surgery Lab 6 Resources
State file security & sensitive values §14 Validation and sensitive values infrastructure/infra/secrets.tf
Workspaces §13 Lab 10 backend/infra/terraform.tfstate.d/ Variables

Expressions & structure

Concept Theory Stage 2 Stage 3 Code Quiz
Variables & precedence §7 Variables Lab 15 01-basics/2-variable-use/, 02-gcp-terraform/01-core-gcp-resources/terraform.tfvars Variables
Variable validation §7 Validation
locals §7 Locals Lab 8 02-gcp-terraform/01-core-gcp-resources/locals.tf
for expressions, try, one, splat §8 Lab 13 sample-program/infra/main.tf Variables
Outputs §10 Outputs Lab 7 02-gcp-terraform/01-core-gcp-resources/outputs.tf, */infra/outputs.tf
Attribute references §6 References and dependencies 01-basics/3-resource-attribute-reference/
count §9 count and for_each Lab 4 02-gcp-terraform/01-core-gcp-resources/resources.tf (commented) Variables
Conditionals / count = 0 §8 Conditionals backend/infra/cloudsql.tf Variables
for_each §9 count and for_each Lab 5 02-gcp-terraform/01-core-gcp-resources/resources.tf, backend/infra/iam.tf Variables
for_each over modules §9, §12 Lab 13 sample-program/infra/main.tf Variables
Guard propagation §8 Conditionals Lab 13 sample-program/infra/main.tf Variables
dynamic blocks §9 Lab 12 02-gcp-terraform/01-core-gcp-resources/resources.tf, backend/infra/rbac.tf
Modules §12 Lab 9 02-gcp-terraform/01-core-gcp-resources/modules/gcp-vm/, sample-program/infra/modules/
lifecycle meta-arguments §5 Lifecycle Lab 16 01-basics/5-lifecycle/, cloudsql/infra/cloudsql.tf
Provisioners / null_resource §16 Provisioners Lab 17
archive_file archive_file
File naming conventions §17 Conventions Core root 02-gcp-terraform/01-core-gcp-resources/
Root boundaries & blast radius §17 acme-.../ (5 roots)

Multi-repo & platform

Concept Theory Stage 2 Stage 3 Code Quiz
Cross-repo sharing: Consul KV vs terraform_remote_state §15 Lab 18 sample-program/infra/main.tf, infrastructure/infra/outputs.tf Multi-repo
Publish/consume ordering & failure modes §15 backend/infra/main.tf Multi-repo
Resource ownership across repo boundaries §15 infrastructure/infra/iam.tf Multi-repo
GKE clusters & node pools sample-program/infra/modules/gke/main.tf GKE
Node service accounts sample-program/infra/modules/gke/main.tf GKE
Workload Identity (GSA ↔ KSA annotation) backend/infra/main.tf, frontend/infra/main.tf GKE
Node capacity vs allocatable sample-program/infra/terraform.tfvars GKE
Kubernetes RBAC from Terraform backend/infra/rbac.tf GKE
helm_release backend/infra/main.tf, frontend/infra/vip.tf
GitOps / CI-CD execution model §16 .github/workflows/publish-docs.yml
Independent verification (not trusting apply) §15 acme-.../verify-session.sh Debugging
Hypothesis-ordered debugging Session 3 Debugging

Gaps

Honest list of what has a theory entry or a lab but no counterpart elsewhere, so it's clear what's genuinely covered versus what only looks covered:

  • Six Stage 2 topics have no folder under 01-basics/ — locals, count/for_each, conditionals, validation and sensitive values, state surgery, and provisioners. The code on each page is runnable; it just has no committed home. See the not-yet-implemented list.
  • No GCP lab for variable validation or sensitive variables — both are Stage 2 only.
  • The GKE/Workload Identity/Helm rows have no theory page. That's deliberate — they're platform knowledge rather than Terraform mechanics — but it does mean the only explanation of them lives in the quiz and the session notes.
  • helm_release, Kubernetes RBAC and Cloud SQL exist only in the sandbox, with no isolated lab to learn them in. They were learned in-place during sessions 2 and 3.
  • archive_file has no theory entry and no GCP lab — it's a single Stage 2 page.
  • 19 of the rows above have no quiz question at all. The quiz grew out of things that actually broke in live sessions, so it over-covers what went wrong — providers, guards, GKE, Consul — and under-covers what simply worked first time. The honest gaps worth closing first are the ones that are core mechanics rather than reference material: outputs, locals, attribute references, implicit vs explicit dependencies, lifecycle meta-arguments, variable validation, and remote backends. Each already has a theory page and a lab; nothing tests them. A missing Quiz: link in a page footer means exactly this, and not an oversight.

Closed since the last revision: count, for_each, dynamic, modules, workspaces, lifecycle meta-arguments and provider aliasing all now have theory sections (§9, §12, §13, §5, §2).

Maintaining this page

Add a row when a session introduces a concept that isn't already listed. A row with only a Code cell filled in is a signal, not a defect — it means you've used something in the sandbox that you've never isolated in a lab or tested in the quiz, which is exactly the thing that later turns into a debugging session.