HashiCorp Terraform Associate (003) Exam Cheat Sheet — 2026
HashiCorp Terraform Associate (003) Exam Cheat Sheet — 2026
> One-page quick reference for exam day | citadelcloudmanagement.com
Exam Overview
- Code: TA-003 | Questions: 57 | Time: 60 minutes | Passing: 70%
- Format: Multiple choice, multiple response, fill-in-the-blank | Cost: $70.50 USD
1. IaC Concepts (4-5 questions)
- IaC benefits: version control, automation, consistency, documentation-as-code
- Terraform is declarative (describe desired state, not steps)
- Idempotent: running the same config multiple times produces the same result
- Terraform vs other tools: CloudFormation (AWS-only), Pulumi (general-purpose, imperative), Ansible (config management, not provisioning)
2. Terraform Purpose & Workflow (7-8 questions)
Core Workflow: Write → Plan → Apply
terraform init # Download providers, initialize backend
terraform plan # Preview changes (dry run)
terraform apply # Execute changes
terraform destroy # Tear down all managed resources
Key Commands
- `terraform fmt`: format code to canonical style
- `terraform validate`: check syntax without accessing remote APIs
- `terraform show`: display current state or plan output
- `terraform output`: print output values
- `terraform state list`: list resources in state
- `terraform state show
`: show single resource details - `terraform import`: bring existing infrastructure under Terraform management
- `terraform taint` (deprecated) → `terraform apply -replace=
`
3. Providers (3-4 questions)
- Providers are plugins that interact with APIs (AWS, Azure, GCP, etc.)
- Declared in `required_providers` block inside `terraform` block
- Version constraints: `= 5.0.0`, `>= 5.0`, `~> 5.0` (allows 5.x, not 6.0)
- `terraform init` downloads providers to `.terraform/providers/`
- Multiple provider configurations use `alias`
- Provider source: `registry.terraform.io/
/ `
4. Terraform Configuration (10-12 questions)
Resource Block
resource "aws_instance" "web" {
ami = "ami-12345"
instance_type = "t3.micro"
tags = { Name = "web-server" }
}
Variables
- `variable` block: declares input variables
- Types: `string`, `number`, `bool`, `list`, `map`, `object`, `tuple`, `set`
- Precedence (highest to lowest): `-var` flag → `*.auto.tfvars` → `terraform.tfvars` → env vars (`TF_VAR_name`) → default value
- `sensitive = true`: redacts value from CLI output
Outputs
- `output` block: expose values after apply
- `sensitive = true`: hides output in CLI
- Referenced by other configs via `terraform_remote_state`
Data Sources
- Read-only queries to fetch existing infrastructure info
- `data "aws_ami" "latest" { ... }`
Locals
- Computed values used within a module: `locals { name = "${var.prefix}-app" }`
Expressions
- String interpolation: `"Hello, ${var.name}"`
- Conditional: `condition ? true_val : false_val`
- For expressions: `[for s in var.list : upper(s)]`
- Splat: `aws_instance.web[*].id`
5. State Management (8-10 questions)
- State file (`terraform.tfstate`): maps config to real resources
- Never edit state manually — use `terraform state` commands
- Remote backends: S3 + DynamoDB (locking), Terraform Cloud, Azure Blob, GCS
- State locking prevents concurrent modifications
- `terraform refresh` (deprecated in favor of `terraform plan -refresh-only`)
- Sensitive data IS stored in state — encrypt the state file and restrict access
6. Modules (7-8 questions)
- Root module: the directory where you run `terraform` commands
- Child modules: reusable components called with `module` block
- Module sources: local path, Terraform Registry, Git, S3
- Pass data into modules via input variables, get data out via outputs
- `terraform get` downloads modules; `terraform init` downloads modules AND providers
- Module versioning: `version = "~> 3.0"` in `module` block (registry modules only)
7. Terraform Cloud & Workspaces (5-6 questions)
Workspaces (CLI)
- Separate state files for same config: `terraform workspace new dev`
- Use `terraform.workspace` to reference current workspace name
- Default workspace cannot be deleted
Terraform Cloud/Enterprise
- Remote execution: plan/apply runs on Terraform Cloud
- VCS integration: auto-trigger on git push
- Sentinel: policy-as-code enforcement
- Private registry: share modules within organization
- Run triggers: chain workspace executions
8. Resource Lifecycle & Meta-Arguments (5-6 questions)
Meta-Arguments
- `depends_on`: explicit dependency declaration
- `count`: create multiple instances by index (`count.index`)
- `for_each`: create instances from a map/set (access via `each.key`, `each.value`)
- `provider`: specify non-default provider configuration
- `lifecycle`: customize resource behavior
Lifecycle Block
lifecycle {
create_before_destroy = true # Create replacement before destroying original
prevent_destroy = true # Block terraform destroy
ignore_changes = [tags] # Don't update on external changes
replace_triggered_by = [...] # Force replacement when referenced changes
}
Provisioners (use as last resort)
- `local-exec`: run command on machine running Terraform
- `remote-exec`: run command on the created resource
- `file`: copy files to remote resource
- HashiCorp recommends user_data/cloud-init over provisioners
Exam Tips
- Know the variable precedence order — it appears in 2-3 questions
- `count` vs `for_each`: use `for_each` with maps/sets, `count` with simple numbers
- State questions: always pick "remote backend" over local for team scenarios
- "Least privilege" for state: encrypt, restrict access, use remote backend with locking
- Provisioners are a last resort — the exam wants you to know this
*Get the full study guide and 17 free courses at citadelcloudmanagement.com*
Get This Cheat Sheet Emailed to You
Plus a free 5-email study plan to help you pass on your first try.
No spam. Unsubscribe anytime.