Explore / Careers & Certification
HashiCorp Certified: Terraform Associate (004) Exam Prep

Work through all 37 objectives of the HashiCorp Certified: Terraform Associate (004) exam on Terraform 1.12, from first principles to real HCL, CLI output and HCP Terraform, with exam-style checks at every level. The course is independent of HashiCorp and promises no pass; it ends with a timed 57-qu
Expert · 45 levels · 2 free · Created Oct 2026 · Professionally curated by levelupwith.com
What's inside
- Level 1: The 004 Exam and What Infrastructure as Code IsFree
[1 Infrastructure as Code (IaC) with Terraform — 1a Explain what IaC is] Sets out how the exam works (one hour, multiple choice, online proctored, tests Terraform 1.12; this course is independent of HashiCorp and promises no pass) and then explains from first principles what IaC is, using a first small HCL file as the example. - Level 2: Advantages of IaC PatternsFree
[1 Infrastructure as Code (IaC) with Terraform — 1b Describe the advantages of IaC patterns] Explains why teams adopt IaC: configuration that is versioned, reviewable, repeatable and reusable, with a plan to read before anything changes. - Level 3: Multi-Cloud, Hybrid Cloud and Service-Agnostic Workflows
[1 Infrastructure as Code (IaC) with Terraform — 1c Explain how Terraform manages multi-cloud, hybrid cloud, and service-agnostic workflows] Shows how one workflow and one language drive any API through providers, and what that does and does not make portable. - Level 4: How Terraform Uses Providers
[2 Terraform fundamentals — 2b Describe how Terraform uses providers] Explains the split between Terraform core and provider plugins: separate binaries from the Terraform Registry that translate resources into API calls. - Level 5: Install and Version Terraform Providers
[2 Terraform fundamentals — 2a Install and version Terraform providers] Teaches the required_providers block, version constraint operators and required_version, and how terraform init picks and installs a matching provider. - Level 6: The Dependency Lock File
[2 Terraform fundamentals — 2a Install and version Terraform providers] Covers .terraform.lock.hcl: what it records, why it is committed to version control, and how terraform init -upgrade moves a locked provider to a newer version. - Level 7: Configuration Using Multiple Providers
[2 Terraform fundamentals — 2c Write Terraform configuration using multiple providers] Shows provider blocks for several providers in one configuration, and several configurations of one provider using alias and the provider meta-argument. - Level 8: How Terraform Uses and Manages State
[2 Terraform fundamentals — 2d Explain how Terraform uses and manages state] Explains the purpose of Terraform state: it maps configuration to real resources, stores metadata and dependencies, and speeds up planning; it is created as terraform.tfstate by default. - Level 9: The Core Terraform Workflow
[3 Core Terraform workflow — 3a Describe the Terraform workflow] Lays out the Write, Plan, Apply loop, where init, validate, fmt and destroy fit around it, and how the loop changes from an individual to a team. - Level 10: Initialize a Terraform Working Directory
[3 Core Terraform workflow — 3b Initialize a Terraform working directory] Goes through terraform init step by step: backend initialisation, module installation, provider installation, and the .terraform directory and lock file it creates. - Level 11: Validate a Terraform Configuration
[3 Core Terraform workflow — 3c Validate a Terraform configuration] Covers what terraform validate checks (syntax and internal consistency, with no remote API or state access) and what it cannot catch. - Level 12: Generate and Read an Execution Plan
[3 Core Terraform workflow — 3d Generate and review an execution plan for Terraform] Teaches terraform plan output: the +, -, ~ and -/+ symbols, 'known after apply', forced replacement and the summary line, including the refresh that plan performs first. - Level 13: Saved Plans, Plan Options and the Resource Graph
[3 Core Terraform workflow — 3d Generate and review an execution plan for Terraform] Covers saving a plan with -out, inspecting it with terraform show, plan options such as -var, -var-file, -target, -replace and -refresh-only, and how the resource graph sets the order of operations. - Level 14: Apply Changes to Infrastructure
[3 Core Terraform workflow — 3e Apply changes to infrastructure with Terraform] Covers terraform apply: the approval prompt, applying a saved plan, -auto-approve, how state is updated, and what happens when an apply fails partway. - Level 15: Destroy Terraform-Managed Infrastructure
[3 Core Terraform workflow — 3f Destroy Terraform-managed infrastructure] Covers terraform destroy as an alias for terraform apply -destroy, previewing with plan -destroy, the reverse dependency order, and how destroying differs from removing a resource block. - Level 16: Formatting and Style with terraform fmt
[3 Core Terraform workflow — 3g Apply formatting and style adjustments to a configuration] Covers what terraform fmt rewrites, its -check, -diff and -recursive options, and the HashiCorp style conventions it does and does not enforce. - Level 17: Resource Blocks
[4 Terraform configuration — 4a Use and differentiate resource and data blocks] Breaks down the resource block: type, local name, arguments versus exported attributes, and the lifecycle of a managed resource through create, update, replace and destroy. - Level 18: Data Blocks and How They Differ from Resources
[4 Terraform configuration — 4a Use and differentiate resource and data blocks] Teaches data sources as read-only lookups of objects managed elsewhere, when they are read during plan, and how to choose between a data block and a resource block. - Level 19: Resource Addressing and Cross-Resource References
[4 Terraform configuration — 4b Refer to resource attributes and create cross-resource references] Covers resource addresses and references to named values (<type>.<name>.<attr>, data., var., local., module., and indexed addresses), and how a reference between resources creates an implicit dependency. - Level 20: Input Variables
[4 Terraform configuration — 4c Use variables and outputs] Teaches the variable block (type, default, description, sensitive, nullable), every way to set a value, and the precedence order Terraform applies between them. - Level 21: Complex Types: Collections and Structural Types
[Terraform configuration] Serves objective 4d: how the collection types (list, map, set) and structural types (object, tuple) constrain variable values, and how Terraform converts and indexes them on Terraform 1.12. - Level 22: Dynamic Expressions: Conditionals, for and Splat
[Terraform configuration] Serves objective 4e (expressions): writing dynamic configuration with conditional expressions, for expressions, splat expressions, string templates, locals and dynamic blocks. - Level 23: Built-in Functions and terraform console
[Terraform configuration] Serves objective 4e (functions): calling Terraform's built-in functions by family (string, numeric, collection, encoding, filesystem, IP network, type conversion) and testing them interactively in terraform console. - Level 24: Dependencies: Implicit, depends_on, create_before_destroy
[Terraform configuration] Serves objective 4f: how the resource graph orders operations from implicit references, when an explicit depends_on is justified, and how the create_before_destroy lifecycle rule changes replacement order. - Level 25: Custom Conditions: validation, pre/postconditions, check
[Terraform configuration] Serves objective 4g: validating configuration with input variable validation blocks, resource and output preconditions and postconditions, and check blocks, and knowing which of them stop a run and which only warn. - Level 26: Sensitive Data, Ephemeral Values and Vault
[Terraform configuration] Serves objective 4h: best practices for managing sensitive data: sensitive variables and outputs, what still lands in state, ephemeral values and write-only arguments, and secrets management with the Vault provider. - Level 27: How Terraform Sources Modules
[Terraform modules] Serves objective 5a: what a module is (root and child modules) and the places Terraform can source one from: local paths, the public Terraform Registry, a private registry, Git and other VCS hosts, HTTP URLs and object storage buckets. - Level 28: Using a Registry Module in Configuration
[Terraform modules] Serves objective 5c (consuming modules): calling a published module from the root module, passing its inputs, and reading its outputs through module.<NAME>.<OUTPUT>. - Level 29: Variable Scope Within Modules
[Terraform modules] Serves objective 5b: how values cross module boundaries. Input variables go in, outputs come out, locals stay private, and a child module cannot see anything in its parent unless it is passed explicitly. - Level 30: Building a Local Module and Composing Modules
[Terraform modules] Serves objective 5c (authoring and composition): building a local module with the standard structure (main.tf, variables.tf, outputs.tf) and composing modules by wiring one module's outputs into another's inputs. - Level 31: Managing Module Versions
[Terraform modules] Serves objective 5d: pinning module versions with the version argument and version constraint operators, knowing which sources support it, and upgrading modules safely. - Level 32: The Local Backend
[Terraform state management] Serves objective 6a: what a backend is, and how the default local backend stores state in terraform.tfstate on disk, keeps a backup, and runs operations on your own machine. - Level 33: State Locking
[Terraform state management] Serves objective 6b: why Terraform locks state during operations that could write it, which backends support locking, and how to handle a lock that is stuck. - Level 34: Remote State with the backend Block
[Terraform state management] Serves objective 6c: configuring remote state storage with a backend block inside the terraform block, supplying partial configuration, and migrating state between backends with terraform init. - Level 35: Resource Drift and Refresh-Only Mode
[Terraform state management] Serves objective 6d (drift): how Terraform detects differences between state and real infrastructure, and how to reconcile them with terraform plan -refresh-only and terraform apply -refresh-only, or by reverting the change. - Level 36: Refactoring State with moved and removed Blocks
[Terraform state management] Serves objective 6d (refactoring state): renaming or relocating resources without destroying them using moved blocks, and taking resources out of Terraform management using removed blocks. - Level 37: Importing Existing Infrastructure
[Maintain infrastructure with Terraform] Serves objective 7a: bringing resources that were created outside Terraform under management, with the terraform import command and with import blocks, including generated configuration. - Level 38: Inspecting State with the CLI
[Maintain infrastructure with Terraform] Serves objective 7b: reading what Terraform is tracking with terraform state list, terraform state show, terraform show and terraform output, in place of opening or editing the state file by hand. - Level 39: Verbose Logging with TF_LOG
[Maintain infrastructure with Terraform] Serves objective 7c: when and how to turn on Terraform's detailed logs with the TF_LOG environment variables to debug provider, core and crash problems. - Level 40: Creating Infrastructure with HCP Terraform
[HCP Terraform] Serves objective 8a: what HCP Terraform (formerly Terraform Cloud) is, how an organization and its workspaces hold state, variables and run history, and how a remote run moves from plan to apply. - Level 41: HCP Terraform Collaboration: Teams, Registry, Explorer
[HCP Terraform] Serves objective 8b (collaboration half): how an organization shares work in HCP Terraform through teams and their permissions, the HCP private registry for modules and providers, Explorer for visibility across workspaces, and change requests for asking workspace owners to act. - Level 42: HCP Terraform Governance: Policy, Health, Credentials
[HCP Terraform] Serves objective 8b (governance half): policy enforcement with Sentinel and OPA policy sets, health assessments with drift detection, and authenticating providers with dynamic credentials instead of stored long-lived keys. - Level 43: Workspaces, Projects, Variable Sets and Run Triggers
[HCP Terraform] Serves objective 8c: how to organize HCP Terraform workspaces into projects, share values with variable sets, and connect workspaces with run triggers so that one workspace's apply queues a run in another. - Level 44: CLI Integration: login, the cloud Block, State Migration
[HCP Terraform] Serves objective 8d: how to configure and use the HCP Terraform integration from the CLI with terraform login and the cloud block, migrate existing state into HCP Terraform, and manage a workspace's Terraform version. - Level 45: Timed Mock Exam: 57 Questions in 60 Minutes Timed mock
[All sections] A timed mock exam of 57 original exam-style multiple-choice questions in 60 minutes with a 70% pass mark, testing all eight sections and all 37 objectives of the Terraform Associate (004) exam content list on Terraform 1.12; it is independent of HashiCorp and does not guarantee a pass.
Access
The first 2 levels are free with a free account. Every level, the podcast edition and the AI tutor come with All Access at £4.99/month or any Creator plan — see pricing.