HashiCorp has just announced 2 certifications, one for Terraform and another for Vault.
Since I’ve been working with (and learning) Terraform for over a year, I am very excited about this method of validating my understanding and experience.
For the Terraform exam, there are 9 objectives. I will do my best to find the relevant documentation for each objective and their sub-components to help everyone study and prepare for the exam.
Note: I have not taken this exam yet, as it is currently only released to those attending the attendees of HashiConf US in Seattle at first. But, it will definitely be on my list of exams to take.
Update: I have taken the exam and passed.
If you find a better reference for the objective, send me a note and I’ll update the link (so that everyone can benefit from the best material).
Also, I co-authored the following publication: HashiCorp Terraform Certified Associate Preparation Guide
HashiCorp has also produced an official Study Guide and Review Guide.
Terraform Associate Exam Objectives
1 Understand Infrastructure as Code (IaC) Concepts
1A Explain what IaC is
https://www.terraform.io/intro/index.html#infrastructure-as-code
1B Describe advantages of IaC patterns
https://en.wikipedia.org/wiki/Infrastructure_as_code
2 Understand Terraform’s Purpose (vs Other IaC)
2A Explain multi-cloud and provider-agnostic benefits
2B Explain the benefits of state
https://www.terraform.io/docs/state/purpose.html
3 Understand Terraform Basics
3A Handle Terraform and provider installation and versioning
https://learn.hashicorp.com/terraform/azure/install_az
3B Describe plugin-based architecture
https://www.terraform.io/docs/plugins/basics.html
3C Demonstrate using multiple providers https://www.terraform.io/docs/configuration/providers.html#alias-multiple-provider-instances
3D Describe how Terraform finds and fetches providers https://www.terraform.io/docs/configuration/providers.html#initialization
3E Explain when to use and not use provisioners and when to use local-exec or remote-exec https://www.terraform.io/docs/provisioners/index.html
https://www.terraform.io/docs/provisioners/local-exec.html
https://www.terraform.io/docs/provisioners/remote-exec.html
4 Use the Terraform CLI (Outside of Core Workflow)
4A Understand the help command (terraform help)
https://www.terraform.io/docs/commands/index.html
4B Given a scenario: choose when to use terraform fmt to format code https://www.terraform.io/docs/commands/fmt.html
4C Given a scenario: choose when to use terraform taint to taint Terraform resources https://www.terraform.io/docs/commands/taint.html
4D Given a scenario: choose when to use terraform import to import existing infrastructure into your Terraform state
https://www.terraform.io/docs/commands/import.html
4E Given a scenario: choose when to use terraform workspace to create workspaces https://www.terraform.io/docs/state/workspaces.html
4F Given a scenario: choose when to use terraform state to view Terraform state https://www.terraform.io/docs/commands/state/index.html
4G Given a scenario: choose when to enable verbose logging and what the outcome/value is https://www.terraform.io/docs/internals/debugging.html
5 Interact with Terraform Modules
5A Contrast module source options
https://www.terraform.io/docs/modules/sources.html
5B Interact with module inputs and outputs
https://www.terraform.io/docs/configuration/variables.html
https://www.terraform.io/docs/configuration/outputs.html
5C Describe variable scope within modules/child modules
https://www.terraform.io/docs/modules/index.html
5D Discover modules from the Public Module Registry https://www.terraform.io/docs/registry/modules/publish.html#publishing-a-public-module
5E Defining module version https://www.terraform.io/docs/registry/modules/publish.html#releasing-new-versions
6 Navigate Terraform Workflow
6A Describe Terraform workflow ( Write -> Plan -> Create )
https://www.terraform.io/guides/core-workflow.html
6B Initialize a Terraform working directory (terraform init) https://www.terraform.io/docs/commands/init.html
6C Validate a Terraform configuration (terraform validate) https://www.terraform.io/docs/commands/validate.html
6D Generate and review an execution plan for Terraform (terraform plan) https://www.terraform.io/docs/commands/plan.html
6E Execute changes to infrastructure with Terraform (terraform apply) https://www.terraform.io/docs/commands/apply.html
6F Destroy Terraform managed infrastructure (terraform destroy) https://www.terraform.io/docs/commands/destroy.html
7 Implement and Maintain State
7A Describe default local backend
https://www.terraform.io/docs/backends/types/local.html
7B Outline state locking
https://www.terraform.io/docs/state/locking.html
7C Handle backend authentication methods
https://www.terraform.io/docs/backends/types/index.html
7D Describe remote state storage mechanisms and supported standard backends
https://www.terraform.io/docs/state/remote.html
https://www.terraform.io/docs/backends
7E Describe effect of Terraform refresh on state
https://www.terraform.io/docs/commands/refresh.html
7F Describe backend block in configuration and best practices for partial configurations
https://www.terraform.io/docs/backends/config.html
7G Understand secret management in state files
https://www.terraform.io/docs/state/sensitive-data.html
8 Read, Generate, and Modify Configuration
8A Demonstrate use of variables and outputs
https://www.terraform.io/docs/configuration/variables.html
https://www.terraform.io/docs/configuration/outputs.html
8B Describe secure secret injection best practice
https://www.terraform.io/docs/providers/vault/index.html
8C Understand the use of collection and structural types
https://www.terraform.io/docs/configuration/types.html#complex-types
8D Create and differentiate resource and data configuration
https://www.terraform.io/docs/configuration/resources.html
https://www.terraform.io/docs/configuration/data-sources.html
8E Use resource addressing and resource parameters to connect resources together
https://www.terraform.io/docs/configuration/resources.html
8F Use Terraform built-in functions to write configuration
https://www.terraform.io/docs/configuration/functions.html
8G Configure resource using a dynamic block
https://www.terraform.io/docs/configuration/expressions.html
8H Describe built-in dependency management (order of execution based)
https://learn.hashicorp.com/terraform/getting-started/dependencies.html
9 Understand Terraform Enterprise Capabilities
9A Describe the benefits of Sentinel, registry, and workspaces
https://www.terraform.io/docs/cloud/sentinel/index.html
https://www.terraform.io/docs/registry/index.html
https://www.terraform.io/docs/state/workspaces.html
9B Differentiate OSS and TFE workspaces
https://www.terraform.io/docs/state/workspaces.html
9C Summarize features of Terraform Cloud
https://www.terraform.io/docs/cloud/index.html
Hey Adin, thanks a lot for posting this compilation of review materials – it really helped me prepare for the Terraform beta exam this week at HashiConf!