Use this for last-mile legacy 003 review. The goal is not to memorize dead wording. The goal is to keep the durable Terraform model straight: configuration, workflow, state, module, backend, and HCP Terraform.
Use this when the stem mixes configuration, state, providers, modules, or drift.
flowchart TD
S["Scenario"] --> C["Classify the Terraform object or command"]
C --> S2["Check state, backend, or provider fit"]
S2 --> P["Check plan, import, or dependency behavior"]
P --> V["Verify with safe apply or drift review"]
Read the question in this order
- Terraform noun: provider, backend, module, workspace, variable, output, or state?
- Workflow stage: init, validate, plan, apply, destroy, or maintenance?
- Change type: new infrastructure, imported infrastructure, drift, or planned replacement?
- Execution model: local CLI or HCP Terraform?
Fastest 10-minute review
| If the question says… |
Strongest first lane |
| why Terraform exists or why IaC matters |
foundations |
init, plan, apply, or destroy |
workflow |
resource, data, variables, or outputs |
config |
| reuse across configs |
modules |
remote state, locking, drift, import, or -replace |
state and maintenance |
| remote runs, variables, policies, or VCS integration |
HCP Terraform |
flowchart LR
CFG["Configuration"] --> PLAN["Plan"]
PLAN --> APPLY["Apply"]
APPLY --> STATE["State"]
STATE --> DRIFT["Drift / Repair"]
CFG --> MOD["Modules"]
STATE --> BE["Backend"]
CFG --> HCP["HCP Terraform"]
| Noun |
What it really answers |
Common miss |
| provider |
how Terraform talks to a platform |
treating it like a resource |
| backend |
where state lives and how teams collaborate |
confusing it with provider auth |
| module |
reusable configuration unit |
confusing it with workspace separation |
| workspace |
separate state instance for a configuration |
using it like a module |
| state |
tracked reality and mappings |
confusing it with intent |
| variable |
input to configuration |
confusing it with output |
| output |
value exposed from configuration |
confusing it with variable input |
Workflow chooser
| Requirement |
Strongest first fit |
Remember |
| prepare working directory |
terraform init |
downloads providers and configures backend |
| normalize style |
terraform fmt |
formatting, not validation |
| static correctness check |
terraform validate |
config validity, not change preview |
| inspect proposed change |
terraform plan |
plan before apply |
| execute approved change |
terraform apply |
not a substitute for review |
State and maintenance chooser
| Requirement |
Strongest first fit |
Remember |
| centralize collaboration |
remote backend |
backend controls state location |
| stop concurrent collisions |
locking |
collaboration safeguard, not provider behavior |
| adopt an existing object |
import |
changes management, not creation history |
| detect out-of-band change |
drift awareness or refresh-only workflow |
state and reality may diverge |
| intentionally recreate one object |
-replace |
clearer than old taint habits |
| Requirement |
Strongest first fit |
Remember |
| remote execution and shared workflow |
remote runs |
not just hosted CLI |
| centralized variables and credentials |
workspace or variable management |
separate from module inputs |
| governance over runs |
policy and team workflow |
not the same as backend config only |
Symptom-to-first-check table
| Symptom |
First things to check |
Common trap |
| plan differs from expectation |
state, inputs, and current config |
blaming provider versions first |
| import confusion |
address, ID, and matching configuration |
assuming import created infrastructure |
| team collision on state |
backend and locking setup |
solving with modules |
| workspace confusion |
whether you need separate state or reusable config |
mixing workspace and module roles |
| HCP run confusion |
remote-run model, workspace settings, and variables |
treating HCP as only storage |
What strong answers usually do
- classify the Terraform noun before choosing a command
- separate state from configuration
- protect plan review before execution speed
- remember that HCP Terraform adds workflow and governance, not a new language