Local Terraform state is a production incident waiting to happen
A GCS backend with real locking replaces the single point of failure a local .tfstate file represents the moment more than one person runs apply.
Speaker notes
- Terraform's state file maps every resource block to a real GCP resource ID — left as a local file, state lives on whichever single machine ran apply last, fine for a solo experiment, a genuine risk the moment a second engineer or CI pipeline needs to apply too.
- Tell the real incident: a two-person team ran local state for eight months with no problem because only one person ever ran apply. When the second engineer finally ran apply from stale local state, Terraform proposed to recreate eleven resources it believed didn't exist — including a production Cloud SQL instance. She caught it only because the plan looked implausibly large.
- The underlying condition wasn't a mistake — it was that the team's workflow had no mechanism forcing state to be shared and locked at all. The fix is a GCS backend from day one, even for a two-person team; it costs almost nothing and eliminates this entire failure class.
Deck map
01
One pipeline, built deliberately
02
PCDE sections 1-2, and where this course sits in the track
03
ACE operates a resource; PCDE designs the system
04
One tooling project, not one pipeline per environment
05
Dev, staging, and prod should never share one policy
06
What actually crosses the project boundary: a token, never a key
07
A hand-run command leaves no record of why
08
Local Terraform state is a production incident waiting to happen
09
Cloud Foundation Toolkit and Fabric FAST: forked, never left unmodified
10
Terraform for foundations, Config Connector for workload-coupled infra
11
Git decides, automation reconciles — no human runs apply
12
Cloud Build's whole job: source in, tested artifact out
13
Built-in substitutions are automatic; user-defined ones need an underscore
14
An unfiltered branch trigger is a budget incident waiting to happen
15
Three repository modes, and scanning stops at the virtual layer
16
Cheap checks first, expensive checks last
17
Cloud Build produces; Cloud Deploy promotes — never the reverse
18
Four objects: DeliveryPipeline, Target, Release, Rollout
19
Canary limits exposure; blue/green makes the cutover atomic
20
A human gates production; automation gates everything else
21
Meridian's full path: merge to production, one continuous record
22
Credentials go in Secret Manager; configuration goes in Parameter Manager
23
An ENV baked into a Dockerfile is still build-time injection
24
One question resolves almost every config-placement decision
25
Ephemeral environments need a TTL, or they're not actually ephemeral
26
Rapid, Regular, Stable — and a maintenance exclusion set too late doesn't help
27
A compromised pipeline is every environment it deploys to
28
SLSA grades the pipeline's trustworthiness, not any single artifact
29
Default-deny, or an unlisted cluster accepts anything
30
Only /home survives a session — everything else is rebuilt fresh
31
Every chapter of this course, in one sequence
32
Readiness checklist