HashiCorp Terraform Associate
Most of the reliability work this course teaches eventually comes down to one unglamorous question: what infrastructure exists right now, and can you prove it? A disaster-recovery failover, a new region brought online, a capacity change that clears a production readiness review — all of it depends on infrastructure that's defined in code rather than remembered by whoever built it last. HashiCorp Certified: Terraform Associate is the entry-level credential for the tool most teams reach for to do exactly that. It isn't an SRE-specific certification and this course doesn't teach Terraform syntax directly, but the four ideas it tests — providers, state, modules, and the plan/apply workflow — are precisely the vocabulary underneath reproducible, reviewable infrastructure change. This page covers what the exam actually is, its current format and domains, how its content maps onto real SRE work, and who should — and shouldn't — spend a Saturday on it.
Imagine two ways to rebuild a treehouse exactly the same way in a second yard. Option one: try to remember what you did the first time — the plank sizes, the order you nailed things, whether you used four screws or six — and hope your memory, or a teammate's, is good enough under pressure, at 2am, with the first treehouse actually on fire. Option two: you wrote the build down the first time as instructions exact enough for a robot to follow — cut this plank, screw here, in this order — and rebuilding just means running the instructions again in the new yard, then reading them back against what actually got built to check nothing drifted. Terraform is option two, for cloud infrastructure. The Terraform Associate exam checks whether you can read, write, and safely run that instruction sheet.
What the Terraform Associate is, and who it's for
☺ Like you're 10: A one-hour, multiple-choice test of Terraform's core vocabulary — not a hands-on lab where you actually build anything live.
HashiCorp Certified: Terraform Associate is the entry-level rung of HashiCorp's certification ladder for its infrastructure-as-code tool. Unlike the CNCF's performance-based exams — the CKA and CKS drop you into a live cluster and grade the end state — this is a knowledge-based exam: multiple choice, multiple answer, true/false, and fill-in-the-blank questions delivered online through a remote proctor, with no terminal and nothing graded on whether infrastructure actually came up. It tests whether you know Terraform's core engine and workflow, not any one cloud's service catalog — the example resources you'll see reference AWS, Azure, and Google Cloud more or less interchangeably, because the thing being tested is provider-agnostic by design.
It targets cloud, platform, and reliability engineers who write, review, or operate Terraform configuration as part of their job, plus generalist developers who provision their own infrastructure. It assumes basic comfort at a terminal and some exposure to cloud or on-premises infrastructure concepts, but HashiCorp doesn't formally require any prerequisite course, exam, or years of experience to sit it.
Treat this credential as a floor, not a ceiling. It certifies that you know Terraform's vocabulary and can reason about a workflow correctly on paper — not that you've operated a multi-workspace, multi-region Terraform estate under production pressure. That judgment gets built by actually running plan and apply against something that matters, the same way a production readiness review or a real disaster-recovery drill builds it — this exam is the vocabulary that makes those conversations possible, not a substitute for having them.
Format, cost, and prerequisites — verify before you sit it
☺ Like you're 10: Here's the shape of the test as best it's publicly known right now — but HashiCorp revises this exam more often than a slow-moving standards body would, so double-check before you pay.
The table below reflects HashiCorp's own published certification page and the current exam version as of this writing. Treat the numbers as a planning aid, not a guarantee — this exact exam moved from version 003 to version 004 in January 2026, which is a useful reminder that "verify before you book" isn't boilerplate on this page.
| Item | What is generally published |
|---|---|
| Format | Online, remotely proctored, knowledge-based — multiple choice, multiple answer, true/false, and fill-in-the-blank questions; no live terminal or graded infrastructure |
| Current version | 004, which replaced version 003 on January 8, 2026 and tests against Terraform 1.12 |
| Duration | 1 hour |
| Question count | Not published by HashiCorp as a fixed number; commonly reported in the high 50s |
| Passing score | Not published — candidates receive an overall pass/fail result rather than a domain-by-domain score |
| Cost | Around USD $70.50 plus applicable taxes and fees |
| Validity | 2 years from the date you pass, before recertification is required |
| Retake policy | Has historically included a free retake if you don't pass on the first attempt — confirm the current policy before you sit it |
| Prerequisites | None formally required; HashiCorp recommends basic terminal familiarity and some exposure to cloud or on-premises infrastructure concepts |
| Proctoring | Delivered online; the proctoring vendor has changed before — confirm which provider your specific registration uses before exam day |
Price, duration, question count, passing score, and even the exam version itself all change. This is an independent, unofficial course — nothing above is authoritative. The 003→004 transition in January 2026 replaced roughly a third of the exam's domain structure and moved the target Terraform version from 1.3 to 1.12 with no public announcement fanfare beyond HashiCorp's own certification blog. Check HashiCorp's own Terraform Associate certification page and the official exam content list directly before you register or study around any number on this page.
The eight exam domains (Terraform Associate 004)
☺ Like you're 10: Eight topics — and unlike some certifications on this site, HashiCorp doesn't publish exactly how many points each one is worth.
Unlike the CNCF-governed exams this site also covers, HashiCorp's own exam content list doesn't publish a percentage weight per domain. What follows is the current domain structure and the objectives published under each, transcribed from HashiCorp's official Terraform Associate 004 exam content list.
| # | Domain | What it covers |
|---|---|---|
| 1 | Infrastructure as Code (IaC) with Terraform | What IaC is, its advantages over manual provisioning, and how Terraform manages multi-cloud, hybrid-cloud, and service-agnostic workflows |
| 2 | Terraform fundamentals | Installing and versioning providers, how Terraform uses providers, writing configuration against multiple providers, and how Terraform uses and manages state |
| 3 | Core Terraform workflow | The write → plan → apply cycle: init, validate, plan, apply, destroy, and applying formatting/style conventions |
| 4 | Terraform configuration | Resource and data blocks, variables and outputs, complex/collection types, expressions and built-in functions, resource dependencies, custom conditions, and handling sensitive values |
| 5 | Terraform modules | Module source options, variable scope across parent and child modules, using a module, and pinning module versions |
| 6 | Terraform state management | The default local backend, state locking, configuring remote state, and understanding resource drift |
| 7 | Maintain infrastructure with Terraform | Importing existing resources into state, inspecting state (terraform state list/show, outputs), and enabling verbose logging for troubleshooting |
| 8 | HCP Terraform | How HCP Terraform (formerly branded Terraform Cloud) manages infrastructure, its collaboration and workspace model, and how it integrates into the broader workflow |
The mechanics underneath: providers, state, modules, and the plan/apply workflow
☺ Like you're 10: Four ideas do almost all the work — where Terraform gets its cloud vocabulary, where it remembers what it already built, how to reuse a build someone else wrote, and the read-before-you-write habit that keeps a bad change from reaching production by accident.
A provider is a plugin that translates HCL configuration into API calls against a specific system — aws, azurerm, google, kubernetes, and hundreds of others. Each is pinned to a version range in a required_providers block, and terraform init downloads the matching plugin into a local cache while writing a .terraform.lock.hcl file that pins the exact version and checksum — the thing that guarantees a teammate's laptop and a CI runner resolve to the identical provider build rather than "whatever's newest today."
State — the terraform.tfstate file — is Terraform's record of what it believes exists. Every terraform plan is a diff between three things: the configuration, the state, and (if a refresh runs) reality itself. Local state — the default, a single file on one machine — is a non-starter for team or production use: nothing locks it, nothing shares it, and losing that laptop means losing Terraform's memory of an entire environment. Real teams configure a remote backend instead — commonly S3 with a DynamoDB lock table, or HCP Terraform's own managed state with built-in locking, encryption at rest, and team-level access control.
A module is a reusable, versioned bundle of configuration, referenced with a source (a local path, a Git URL, the public Terraform Registry, or a private registry such as HCP Terraform's own) and typically a version constraint. The same module graph, re-applied against a different backend and a different set of input variables, is literally how a lot of multi-region and disaster-recovery infrastructure gets stood up without hand-copying hundreds of lines of configuration between environments.
terraform {
required_providers {
aws = { source = "hashicorp/aws", version = "~> 5.0" }
}
backend "s3" {
bucket = "acme-tfstate-prod"
key = "network/us-east-1/terraform.tfstate"
region = "us-east-1"
dynamodb_table = "tfstate-lock" # state locking — see below
encrypt = true
}
}
provider "aws" {
region = var.region
}
module "vpc" {
source = "app.terraform.io/acme/vpc/aws" # a private HCP Terraform registry module
version = "~> 4.2"
cidr_block = "10.20.0.0/16"
region = var.region # same module, reapplied per region
}
resource "aws_instance" "web" {
ami = data.aws_ami.al2023.id
instance_type = "t3.small"
subnet_id = module.vpc.private_subnet_ids[0]
tags = { Name = "web-${var.region}" }
}The plan/apply workflow is the discipline that makes all of the above safe to run twice: terraform init to fetch providers and modules, terraform validate to catch syntax errors, terraform plan -out=tfplan to compute and save a reviewable diff, terraform apply tfplan to execute exactly the plan that was saved — not a freshly recomputed one that might have drifted since review — and terraform destroy to tear down what Terraform manages. One command worth knowing precisely: the old terraform taint, which marked a resource for forced recreation on the next apply, is deprecated in current Terraform in favor of terraform apply -replace=<resource.address>, which does the same job without silently mutating state ahead of a plan.
By default, a resource argument set from a sensitive value — a generated database password, an API key — can end up stored in plaintext inside terraform.tfstate, even if it's marked sensitive in Terraform's own CLI output. Treat state with the same access control as a credentials store, not as a build log. And never hand-edit the file directly: every legitimate mutation goes through the CLI — terraform state mv, terraform import, terraform state rm — because a manual edit that drifts from reality is exactly the kind of self-inflicted incident a production readiness review exists to prevent. State locking exists for the same reason two SREs are never supposed to deploy the same service at once: it stops a second concurrent apply from corrupting a state file mid-write.
Why SRE teams lean on this: reproducible changes, disaster recovery, and multi-region builds
☺ Like you're 10: If your disaster-recovery plan is a document that says "click these twelve buttons in this order," it will fail exactly when you're too rushed to follow it correctly. If it's Terraform code, it's a command.
A disaster-recovery runbook that says "recreate the VPC, subnets, load balancer, and database subnet group" by hand is a plan that's tested once a year, during a fire drill, if that. A runbook that says "run terraform apply against the dr workspace" is a plan that gets exercised every time someone applies the same module to keep a staging or DR environment in sync with production — which means it's far more likely to actually work the one time it matters. The exam's "core workflow" and "modules" domains are the mechanics underneath exactly that pattern.
The same property serves multi-region architecture: parameterizing a module by region and backend key, the way the code sample above does, is how "stand up region three" becomes a variable change and a plan review instead of a multi-week manual build. And a saved terraform plan output is a natural artifact to attach to a production readiness review or a change ticket, because it's a computer-verified statement of exactly what will change — not a description someone typed from memory the night before a launch.
It's worth being precise about where Terraform's job ends, too. It typically provisions a database instance or cluster resource — the thing covered in database reliability engineering — but not the schema migrations or replication topology running inside it, and it provisions VPCs, subnets, and route tables — the raw material behind network reliability engineering — without owning BGP sessions or DNS failover logic on top. Knowing that boundary is as much a part of using this certification well as knowing the syntax.
Who should consider it — and who should skip it
☺ Like you're 10: If you'd be the one actually running the rebuild-the-treehouse instructions during a real disaster, this is worth an afternoon. If someone else always runs them for you, it might not be.
The case for taking it
Take it if you write, review, or are accountable for Terraform that manages production infrastructure — it builds a shared vocabulary across an infra team faster than reading the docs cold, and it's a common baseline expectation in job postings for SRE, platform, and cloud-infrastructure roles. It pairs naturally with the cloud-specific associate certifications on this site's own certifications hub — AWS Solutions Architect Associate, Azure Administrator Associate, and Google Associate Cloud Engineer — because Terraform Associate deliberately doesn't test any one cloud's service depth; it tests the engine you'd use to provision whichever cloud those certifications cover.
When to skip it
Deprioritize it if any of these fit. Your organization's primary IaC tool isn't Terraform — Pulumi, AWS CDK, and Crossplane all solve the same problem differently, and this credential's specifics won't transfer. Worth flagging explicitly here: HashiCorp changed Terraform's license from the open-source MPL to the more restrictive Business Source License in August 2023, and the Linux Foundation responded by backing OpenTofu, a fully open-source, syntax-compatible hard fork. This certification is HashiCorp's own and specifically Terraform-branded — it doesn't certify OpenTofu, even though almost everything it tests about HCL and the plan/apply workflow transfers directly. If your organization moved to OpenTofu specifically to get away from the license change, weigh that before paying for a HashiCorp-branded badge. You already operate Terraform daily at a senior level — it will confirm what you know and teach you little. Your actual gap is one cloud's service depth, not IaC mechanics — the cloud-specific associate exams listed above are the better use of your study time.
| Terraform Associate | CKA | Cloud associate certs (AWS SAA / AZ-104 / ACE) | |
|---|---|---|---|
| Question | Can you read, write, and safely run Terraform's core workflow? | Can you actually run a Kubernetes cluster? | Can you design and operate on one specific cloud's services? |
| Format | Knowledge-based, multiple choice, ~1 hour | Performance-based, live clusters, 2 hours | Knowledge-based, multiple choice |
| Scope | Provider-agnostic IaC engine and workflow | The Kubernetes substrate specifically | One cloud provider's service catalog, in depth |
| Where it sits in an SRE's toolkit | Provisioning and DR/multi-region reproducibility | Cluster-level reliability once workloads are scheduled | What to provision and how it behaves once it exists |
How to prepare using this site
☺ Like you're 10: This course doesn't teach Terraform syntax directly, but plenty of pages teach exactly what you'd use it for — here's the map.
| What the exam covers | Study here |
|---|---|
| Reproducible, reviewable infrastructure change applied to a real scenario | Disaster Recovery & Business Continuity and Production Readiness Reviews |
| Parameterized modules used to stand up new regions | Multi-Region & Multi-AZ Architecture |
| Where Terraform's job ends and a database's own reliability concerns begin | Database Reliability Engineering |
| The network resources Terraform typically provisions (VPCs, subnets, routing) | Network Reliability Engineering |
| Who owns and reviews the Terraform code in the first place | SRE Team Topologies |
| Weighing infrastructure choices against their operating cost | Reliability Economics |
| A broader, vendor-neutral SRE credential | This course's own SRE Practitioner path |
| Adjacent cluster-operations and cloud-specific credentials | CKA, CKS, AWS Solutions Architect Associate, Azure Administrator Associate, Google Associate Cloud Engineer |
| Vocabulary and quick recall | Glossary and flashcards |
None of this replaces working through HashiCorp's own free tutorials against a real, disposable cloud account — the exam tests a workflow, and a workflow is best learned by running it, plan by plan, the same way this course insists every reliability practice gets learned by doing it, not just reading about it.
Benny the Beaver: I just wrote a module that stands up an entire region in one apply. Forty minutes, done.
Timmy the Turtle: Did you run terraform plan first, or did you apply it straight to prod?
Benny the Beaver: ...plan first. I learned that lesson already, remember?
Foxy: What happens if two of us run apply against the same workspace at the same second?
Benny the Beaver: State locking blocks the second one until the first finishes. That's the whole point of the remote backend.
Ellie the Elephant: And if the plan shows drift nobody expected?
Benny the Beaver: Then something changed outside Terraform, and I stop and find out what before I let apply paper over it.
Professor Owl: That's the discipline in one sentence — the plan is a question, not a formality. Read the answer before you act on it.
Pair this page with disaster recovery & business continuity and multi-region & multi-AZ architecture for where this vocabulary gets used under pressure. For a broader credential across the whole SRE discipline, see this course's own SRE Practitioner path. Full comparisons against every other certification on this site live on the certifications hub.
1. What is the Terraform Associate exam's format, current version, and roughly how long does it take? 2. Name at least four of the eight domains in the current (004) exam. 3. What's the difference between local state and remote state, and why does that difference matter for a team rather than a solo user? 4. What command sequence guarantees that what got reviewed in a plan is exactly what gets applied, and why does that matter for a production readiness review? 5. What is OpenTofu, and does this certification cover it? 6. Give one concrete way this certification's content maps onto disaster-recovery or multi-region SRE work.
Check your answers
- Online, remotely proctored, knowledge-based (multiple choice, multiple answer, true/false, fill-in-the-blank) — no live terminal. The current version is 004, and it runs about 1 hour.
- Any four of: Infrastructure as Code (IaC) with Terraform; Terraform fundamentals; Core Terraform workflow; Terraform configuration; Terraform modules; Terraform state management; Maintain infrastructure with Terraform; HCP Terraform.
- Local state is a single file on one machine with no locking — a non-starter for a team, since nothing prevents two people from applying at once or shares state between machines. Remote state (e.g., S3 with a lock table, or HCP Terraform's managed state) adds locking, shared access, and durability, which is what makes team and production use safe.
terraform plan -out=tfplanfollowed byterraform apply tfplan— applying the saved plan file rather than lettingapplyrecompute a fresh plan guarantees no drift crept in between review and execution, which is exactly the guarantee a production readiness review wants attached to a change.- OpenTofu is a fully open-source, syntax-compatible fork of Terraform, backed by the Linux Foundation after HashiCorp moved Terraform to the more restrictive Business Source License in August 2023. This certification is HashiCorp's own and Terraform-branded; it doesn't certify OpenTofu, though nearly everything it tests about HCL and the workflow transfers.
- Any reasonable example — e.g., a disaster-recovery runbook expressed as "apply this module against the DR workspace" is exercised continuously (every time it's applied to keep environments in sync) rather than tested once a year in a fire drill; or the same parameterized module, reapplied with a different region variable and backend key, is how a new region gets stood up without hand-copying configuration.