
HashiCorp Certified:Terraform Associate
The HashiCorp Certified: Terraform Associate (004) certification validates your foundational Terraform knowledge and skills, from core workflow to HCP Terraform. Designed for cloud engineers, it proves you can manage infrastructure as code across multi-cloud and hybrid environments. Earning this credential demonstrates your ability to use Terraform effectively in real-world scenarios, setting you apart in the cloud engineering field.
889 practice questions · Updated 2025-01-01
8Domains
37Objectives
286Concepts
889Questions
TERRAFORM-ASSOCIATE-004 Curriculum
Every domain, objective, and concept the TERRAFORM-ASSOCIATE-004 exam measures.
- Definition of Infrastructure as Code
- Benefits of IaC
- Declarative vs. Imperative Approach
- IaC Tools Overview
- Terraform's Role in IaC
- Definition of IaC
- Benefits of IaC
- Automation and Efficiency
- Version Control and Collaboration
- Idempotency and Consistency
- Cost and Risk Reduction
- Scalability and Reusability
- Disaster Recovery and Reproducibility
- Multi-cloud workflows
- Hybrid cloud workflows
- Service-agnostic workflows
- Terraform provider installation
- Provider version constraints
- Provider version locking
- Upgrading providers
- Provider installation verification
- Provider definition
- Provider configuration
- Provider initialization
- Provider usage
- Provider versioning
- Provider registry
- Multiple providers
- Provider configuration blocks
- Multiple providers in one configuration
- Provider aliases
- Referencing provider aliases in resources
- Provider requirements and source addresses
- Purpose of Terraform state
- State file contents
- State storage backends
- State locking
- State commands
- State refresh
- State in teams
- State and workspaces
- State and imports
- State and taint
- State and data sources
- State and providers
- State and drift
- State and sensitive data
- State and versioning
- Terraform workflow phases
- Write phase
- Plan phase
- Apply phase
- Iterative workflow
- Purpose of terraform init
- Initializing a working directory
- Downloading provider plugins
- Setting up backend for state storage
- Installing modules
- Creating .terraform directory
- Lock file creation and dependency locking
- Re-running terraform init
- Using init flags and options
- Troubleshooting initialization errors
- terraform validate command
- validation scope
- validation workflow
- interpreting validation output
- Purpose of terraform plan
- Running terraform plan
- Reading plan output
- Plan output sections
- Resource actions in plan
- Plan exit codes
- Saving and using plan files
- Plan with variables and options
- Plan and state interaction
- Plan in automation and CI/CD
- Terraform apply basics
- Execution plan review
- Applying changes
- State update after apply
- Handling apply errors
- Apply with auto-approve
- Targeted apply
- Apply with variables
- Apply in automation
- Post-apply verification
- terraform destroy command
- destroy plan review
- destroy confirmation prompt
- destroy with auto-approve
- targeted destroy
- state update after destroy
- resource dependencies in destroy
- destroy and configuration changes
- safe destroy practices
- Formatting with terraform fmt
- Style conventions in Terraform
- Handling formatting in modules and directories
- Checking formatting without applying
- Resource block syntax
- Resource behavior
- Resource dependencies
- Data block syntax
- Data source behavior
- Resource vs data block
- Refer to resource attributes
- Create cross-resource references
- Understand implicit dependencies
- Use references in expressions
- Declaring input variables
- Using variable values
- Variable type constraints
- Variable validation
- Variable precedence and assignment
- Declaring output values
- Using output values
- Output value features
- Sensitive outputs
- Output value dependencies
- Module outputs
- Variable and output best practices
- Complex type categories
- List type
- Map type
- Set type
- Tuple type
- Object type
- Type constraints and conversion
- Nested and complex structures
- Iteration over complex types
- Expressions in Terraform
- Functions in Terraform
- Operators and Conditionals
- String Templates
- Splat Expressions
- Dynamic Blocks
- Explicit resource dependencies
- Implicit resource dependencies
- Resource references
- Dependency graph and ordering
- Handling missing dependencies
- Custom condition basics
- Validation block syntax
- Precondition and postcondition
- Using custom conditions in variables
- Using custom conditions in outputs
- Using custom conditions in resources and data sources
- Error message formatting
- Condition expression syntax
- Failures and behavior
- Sensitive data in Terraform
- Terraform state and sensitive data
- Marking outputs as sensitive
- Sensitive variables
- Avoiding secrets in plain text
- Using environment variables for secrets
- Terraform Vault provider
- Vault secrets as data sources
- Vault secrets as variables
- Vault secrets in state
- Vault secrets in outputs
- Vault secrets in provisioners
- Vault secrets in modules
- Vault secrets in CI/CD
- Vault secrets rotation
- Vault secrets with dynamic credentials
- Vault secrets with sensitive data in plan
- Vault secrets with sensitive data in logs
- Vault secrets with sensitive data in state file
- Vault secrets with sensitive data in remote state
- Vault secrets with sensitive data in version control
- Vault secrets with sensitive data in documentation
- Vault secrets with sensitive data in collaboration
- Vault secrets with sensitive data in troubleshooting
- Vault secrets with sensitive data in testing
- Vault secrets with sensitive data in compliance
- Vault secrets with sensitive data in audit
- Vault secrets with sensitive data in access control
- Vault secrets with sensitive data in encryption
- Vault secrets with sensitive data in backup
- Vault secrets with sensitive data in disaster recovery
- Vault secrets with sensitive data in monitoring
- Vault secrets with sensitive data in alerting
- Vault secrets with sensitive data in incident response
- Vault secrets with sensitive data in security policies
- Vault secrets with sensitive data in governance
- Module source types
- Module source syntax
- Module versioning
- Module source resolution
- Module source updates
- Understanding module variable scope
- Passing variables into modules
- Module output variables and scope
- Variable shadowing and name resolution
- Local values within modules
- Module source and version pinning
- Module input variables
- Module outputs
- Module local naming and alias
- Module configuration block syntax
- Module dependencies and resource references
- Module refactoring and moving resources
- Module versioning basics
- Version constraints syntax
- Selecting module versions
- Upgrading module versions
- Module registry versioning
- Local backend definition
- State file location
- Local backend configuration
- Local backend behavior
- Local backend use cases
- Purpose of state locking
- Mechanism of state locking
- Backend support for locking
- Forcing unlock
- Locking in practice
- Backend block syntax
- Backend types and configuration
- Initialization with remote backend
- State locking and consistency
- Partial configuration
- State migration and reconfiguration
- Backend authentication and credentials
- Remote state access and sharing
- Understanding resource drift
- Detecting drift with terraform plan
- Refreshing state with terraform refresh
- Applying changes to fix drift
- Managing state with terraform state commands
- Understanding state file importance
- Handling state conflicts and locking
- Backing up and restoring state
- Using remote state storage
- Migrating state between backends
- Terraform import command
- Import syntax and addressing
- State file management during import
- Writing configuration for imported resources
- Handling import errors and conflicts
- terraform state list
- terraform state show
- terraform state pull
- terraform state push
- terraform state rm
- terraform state mv
- terraform state replace-provider
- Inspect state with terraform show
- Purpose of verbose logging
- Enabling verbose logging
- Log levels
- Log output destinations
- Interpreting verbose logs
- Disabling verbose logging
- HCP Terraform Overview
- Creating a Workspace
- Connecting Version Control
- Configuring Variables
- Running Terraform Operations
- Managing State
- Using Run Triggers
- Applying Infrastructure Changes
- HCP Terraform collaboration features
- HCP Terraform governance features
- Team and user management
- Policy as Code with Sentinel
- Run triggers and workspace dependencies
- Audit logging and visibility
- Workspace organization
- Project structure
- Workspace creation and configuration
- Workspace lifecycle management
- Project and workspace access control
- Workspace variables and state
- Workspace run workflows
- Workspace and project best practices
- HCP Terraform integration overview
- Configuring VCS integration
- Setting up API-driven workflows
- Using CLI-driven workflows
- Integrating with CI/CD pipelines
- Managing run triggers and notifications
- Handling state and locking in integration
- Troubleshooting integration issues
Ready to practice?Test your knowledge with exam-style questions or take an intelligent quiz tailored to your level.
Percentages reflect share of the current practice bank, not official exam weightings — no structured per-skill weight is published for TERRAFORM-ASSOCIATE-004, so none is invented.