The Terraform Associate is a tool certification rather than a cloud one. What you learn applies to whichever provider your employer runs on, and it stays useful when that changes. It is meant for anyone writing infrastructure as code, and it checks that you understand Terraform's workflow from end to end.
It has eight domains, more than any other exam in this catalog. None of them goes especially deep; together they are wide. The failure mode is a candidate who is fluent in plan and apply and has never been asked about state locking or workspace management — and state is where most real Terraform incidents begin.
Modules, configuration, the core workflow, day-two maintenance and HCP Terraform all sit alongside state management, so a study plan built around the commands you type every day will leave gaps you cannot see from the inside. Checking each of the eight domains separately is the only reliable way to find out which of them you have actually covered.
HashiCorp does not publish how the exam weights its domains.
3 questions
Question 1 of 25
What advantage does Terraform's state give over a tool that only issues API calls?
Answer: D
State is what enables planning, dependency tracking, and drift detection.
Question 2 of 25
Which capability lets Terraform manage resources from many different services?
Answer: D
Providers are plugins that implement resources for a given platform.
Question 3 of 25
What does the concept of immutable infrastructure, often associated with IaC practices, generally favor?
Answer: B
Immutable infrastructure favors replacing resources wholesale (a new server instance, a new container image) over patching them in place, reducing configuration drift and making the actual running state easier to reason about.
3 questions
Question 4 of 25
Where does Terraform download provider plugins during initialisation?
Answer: B
init fetches providers from the registry into the working directory.
Question 5 of 25
What generally happens if a required provider's version constraint in a configuration cannot be satisfied?
Answer: A
Terraform surfaces version constraint conflicts explicitly during init rather than silently picking an incompatible version, giving the operator a chance to resolve the mismatch deliberately.
Question 6 of 25
Why does Terraform need to maintain state rather than simply querying the target platform fresh on every run?
Answer: B
State provides the mapping between configuration and actual resources (especially important since many resources don't have IDs derivable purely from configuration), and lets Terraform compute a plan efficiently without a full live query of everything on every run.
4 questions
Question 7 of 25
A plan shows a resource will be replaced but the team expected an in-place update. What explains this?
Answer: A
Some arguments are immutable, so changing them forces replacement.
Question 8 of 25
What does terraform init do?
Answer: A
init prepares a working directory for use - installing provider plugins, initializing modules, and setting up the configured backend - a prerequisite before plan or apply can run.
Question 9 of 25
What does terraform init -upgrade do?
Answer: C
The upgrade flag lets provider and module selections move within constraints.
Question 10 of 25
What happens if terraform fmt is run against a directory whose files are already correctly formatted?
Answer: D
fmt is idempotent - running it against already-correctly-formatted files makes no changes and simply reports that nothing needed reformatting.
5 questions
Question 11 of 25
What is the purpose of a locals block in Terraform?
Answer: A
Locals let you compute or alias a value once (like combining several variables into a derived name) and reference it by a short name throughout the configuration, avoiding repeated expressions.
Question 12 of 25
A configuration must convert a list of objects into a map keyed by name. Which function family fits?
Answer: D
for expressions with collection functions reshape complex types.
Question 13 of 25
What does referencing var.example.attribute imply about the declared type of the example input variable?
Answer: B
Dot-notation attribute access implies the variable holds a structured value (like an object) with a defined attribute of that name - referencing it this way only works if the variable's type actually supports it.
Question 14 of 25
A module author wants to assert that a provisioned resource returns a healthy status before the module reports success. What fits?
Answer: B
Postconditions assert guarantees about a resource after it is created or updated.
Question 15 of 25
What does the lifecycle block's create_before_destroy setting change about how a resource is replaced?
Answer: A
create_before_destroy flips the default destroy-then-create replacement order, creating the new resource first - useful for minimizing downtime on resources like load balancer target groups where a brief gap would otherwise be disruptive.
2 questions
Question 16 of 25
What does a module block's source argument specify?
Answer: D
The source argument tells Terraform where to find the module's actual configuration - a local relative path, a registry address, a Git URL, and so on.
Question 17 of 25
What is a key difference between a private registry module and a public registry module?
Answer: C
A private registry (available within HCP Terraform, for example) hosts modules scoped to an organization's own internal use, versus the public registry's openly available, broadly shared modules.
3 questions
Question 18 of 25
Why might a large infrastructure codebase be deliberately split into several separate Terraform configurations, each with its own state, rather than one single combined configuration?
Answer: C
Smaller states mean a mistake or a slow plan/apply in one area doesn't affect unrelated infrastructure, and different teams or components can be applied on independent schedules - a common reason for splitting by boundary (like networking vs application layers).
Question 19 of 25
What is a practical reason a team might want state stored remotely with encryption at rest, beyond simply enabling team collaboration?
Answer: D
Since state can contain sensitive attribute values, encrypting it at rest in remote storage (as most managed backends do by default) protects that data - a security consideration beyond just enabling shared team access.
Question 20 of 25
Why is the local backend generally unsuitable for a team collaborating on the same infrastructure?
Answer: D
A locally stored state file isn't shared, isn't automatically backed up, and provides no locking mechanism to prevent two team members from running conflicting operations simultaneously - real risks for team use.
2 questions
Question 21 of 25
What generally happens if terraform import is run against a resource address that already has an object associated with it in state?
Answer: A
import expects the target resource address to be currently unmanaged - attempting to import into an address that's already associated with a tracked object produces an error rather than silently overwriting the existing association.
Question 22 of 25 · multiple response
Which of the following are appropriate uses of terraform state commands? (Select TWO)
Answers: A, D
State commands inspect and adjust management safely; manual editing is discouraged.
3 questions
Question 23 of 25
What is the relationship between organizations, projects, and workspaces in HCP Terraform?
Answer: D
Projects group workspaces inside an organization, giving structure at scale.
Question 24 of 25
What generally happens to a run in HCP Terraform if it's manually discarded rather than confirmed after a plan completes?
Answer: A
Discarding a run explicitly declines to apply its proposed changes - the workspace's real infrastructure remains as it was, and a new run would need to be triggered to propose changes again.
Question 25 of 25
How does HCP Terraform typically trigger a run when using VCS-driven workflows?
Answer: C
VCS-driven workspaces automatically trigger a plan (and, depending on settings, an apply) when relevant commits or pull requests occur in the connected repository - integrating Terraform into a normal Git-based workflow.
20 more free after signup, then the full 400-question bank for $12.
Get 20 more free questions