Are you preparing for the Terraform Certified Associate exam? Did you know there’s a new version? That’s what we’re going to cover in this post.
Let’s start with the basics, if you’re not familiar with the Terraform Certified Associate exam, I covered it in some detail in a couple YouTube videos. The tl;dw is that the exam covers nine primary objectives, is intended for people who have been using Terraform in development/prod for about six months, and is a multiple choice test lasting one hour.
Since Terraform is a constantly changing technology, the exam has to be updated periodically to stay in line with best practices and new features that have been introduced. The latest update is version 003, launching in March of 2023- so, like right now. Later in the post, we’ll go over the differences between version 002 and 003, but first I want to answer some common questions.
For starters, you will be able to take version 002 of the exam until mid-May of 2023. So if you’ve already started studying and don’t want to adjust or find new study materials for version 003, fret not, you have a month and a half to take the previous version.
Second, if you take version 002 of the exam, your certification is good for two years. That’s the case for either version, but I wanted to make it clear that taking the older version doesn’t change the expiration date.
Lastly, both exam versions cost the same. There’s no discount on the older version of the exam, or temporary sale to entice people to take the new version.
With all that out of the way, let’s dig into the differences between version 002 and 003.
Comparing version 002 and 003, they look largely the same. Some of the changes are cosmetic in nature, like the names of objectives, and some go deeper into deprecated commands or new features.
Let’s start with the cosmetic changes. Four of the primary objectives have new names, but honestly the only one that really matters is objective nine, which has changed from “Understand Terraform Cloud and Enterprise capabilities” to “Understand Terraform Cloud capabilities”. I know that seems pretty minor, but the focus is clear. You should know what Terraform Cloud can do, but don’t worry too much about Terraform Enterprise- it is just a self-hosted version of Terraform Cloud after all. They’ve also revised the sub-objectives for this primary objective, and I’ll get to those in a moment.
Next up let’s deal with what has been removed. All sub-objectives dealing with provisioners are gone. 🥳 No longer do you need to know how to use local-exec
and remote-exec
. HashiCorp has been advising against using provisioners for a while now, and they’ve been steadily adding functionality to core Terraform that replaces the need for provisioners and the null_resource
. Check out the new builtin terraform_data
resource released with version 1.4.
The terraform taint
command is deprecated in favor of the -replace
flag with terraform plan
and apply
. Instead of knowing about taint
, focus on the existence of the -replace
flag and how it works.
The terraform refresh
command has also been deprecated in favor of the -refresh-only
flag for terraform plan
and apply
. Again, focus on the existence of the -refresh-only
flag and how it works.
The terraform workspace
command has been removed from the exam, but it is not deprecated. HashiCorp has started advising against the use of Terraform core workspaces, which is a contentious opinion I don’t necessarily endorse, but that’s a topic for another time. The point is that you don’t need to know how to use workspaces, but you do need to know that they exist.
The objective “Configure resource using a dynamic block” is no longer its own objective, but be aware it is still part of the exam. I’m not sure why it was its own objective in the first place, and now it isn’t. You should still know how a dynamic block works.
That’s the removals, what about additions?
A new addition to Terraform since version 002 is the cloud
block that connects a Terraform configuration to Terraform Cloud, using it as a remote state backend among other things. The previous method was to use the remote
backend type, and now the cloud
block is preferred. You should know how to use the cloud block to connect to Terraform Cloud with the CLI workflow.
To further emphasize the change and also to differentiate the available backends for state data, the objective “Describe remote state storage mechanisms and supported standard backends” has been renamed to “Differentiate remote state back end options”. Instead of knowing how the different backends work, you simply need to know what features they might support, that’s basically remote state lock and workspaces. Also, the name is a lot shorter, which I appreciate on an aesthetic level.
In lieu of the deprecation of terraform taint
and refresh
, the new objective “Manage resource drift and Terraform state” is basically telling you to study up on the -replace
and -refresh-only flags
and how they can be used to deal with changes made outside of Terraform.
Another new feature of Terraform is the .terraform.lock.hcl
file generated when you run terraform init
against a new configuration. The lock file records the constraints for providers and modules, and what version of each provider is being used. This lets you lock in a specific version of a provider and check the lock file into source control for consistency. Make sure you know what the lock file is, what it contains, and how to update it.
Introduced back in version 0.15, sensitive values are now part of the exam, included in the “Demonstrate use of variables and outputs” objective. You should know how to mark variables and outputs as sensitive, what it means functionally for them to be marked as sensitive, and how to remove the sensitive attribute from a variable or output.
Turning back to the last objective, regarding Terraform Cloud, the original three sub-objectives have been slimmed down to just two:
The first objective basically covers workspaces in Terraform Cloud. You should know what a workspace is, how it works to provision infrastructure, and the three available workflows for workspaces.
The second objective is more about the governance available from Sentinel in Terraform Cloud, cost control, and collabortion via the private registry and teams. My recommendation is to sign up for an account and start the free trial that includes all features. The trial is good for 30 days and doesn’t require a credit card or any other form of payment.
My big takeaway, and the thing I’d recommend focusing on is the new functionality. It’s not going to hurt you to know the deprecated stuff, but you’ll struggle a bit if you don’t know about the new features. If you’re going to study anything, focus on the following:
If you want to do a bit of studying before the exam then may I humbly suggest my certification guide on Leanpub? I just finished updating it to be in line with version 003 of the exam, and since I publish it through Leanpub, you’ll get updates to the guide for free. That means when version 004 of the exam comes out and you need to recertify, you’ll have the latest version of the guide available to help you through.
And if you use this link to buy the guide you’ll get the guide for a mere $10 instead of the suggested $15 until April 7th.
That’s about all you need to know about version 003 of the exam. If you decide to sit the new version the exam, let me know about your experience pass or fail, I’d love to hear about what did or didn’t help in this post or the guide.
Thanks for reading and happy Terraforming!
Deploying Azure Landing Zones with Terraform
November 12, 2024
October 18, 2024
What's New in the AzureRM Provider Version 4?
August 27, 2024
Debugging the AzureRM Provider with VSCode
August 20, 2024