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.

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).

 

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