Today is Day 30 of the 30-Day Terraform Challenge. I started this journey as someone who understood the concept of Infrastructure as Code but had never written a production Terraform configuration. Today I am finishing as someone who has deployed servers, clusters, databases, static websites, and Kubernetes workloads. I have written automated tests, built CI/CD pipelines, managed state across multiple environments, and understood how infrastructure deployment works at a professional level.
This is my final exam preparation post and my reflection on 30 days of intense, focused learning.
My Final Practice Exam Results
I took five full simulated exams over the past three days. Here is my progression:
| Exam | Score | Percentage |
|---|---|---|
| Exam 1 | 38/57 | 66.7% |
| Exam 2 | 43/57 | 75.4% |
| Exam 3 | 46/57 | 80.7% |
| Exam 4 | 49/57 | 85.9% |
| Exam 5 | 51/57 | 89.5% |
The improvement from 66.7% to 89.5% tells me I did not just memorize answers. I actually learned the material. The stability between Exam 4 and Exam 5 shows consolidation, not cramming.
On the final simulated exam, my wrong answers were集ä¸åœ¨ Terraform Cloud agent pools, module source version pinning, and the exact behavior of moved blocks. I noted these topics but did not deep dive into new documentation on the last day. That work is done. I trust what I know.
Fill in the Blank Self Test
I tested myself on ten fill in the blank questions. These are harder than multiple choice because you cannot recognize the answer. You have to retrieve it from memory.
Here were my answers before checking any documentation:
fmtprevent_destroyworkspaceencryptsetrm3.0-
existing,managed .terraform.lock.hclmyplan.tfplan
All ten were correct.
The ones I hesitated on: number 4 (S3 backend encryption uses encrypt = true, not sse_algorithm) and number 9 (the lock file is .terraform.lock.hcl with the dot at the start). Precision matters on the certification exam. Getting these right from memory tells me my recall is exam ready.
Final Readiness Check
I answered these ten questions cold. No notes. No documentation. No searching.
1. What does terraform init do to your .terraform directory?
It creates or updates the directory, downloading provider plugins and modules specified in the configuration into .terraform/providers and .terraform/modules.
2. What is the difference between terraform.tfstate and terraform.tfstate.backup?
The main state file contains the current mapping of configuration to real infrastructure. The backup file is created automatically before state changing operations and contains the previous state version.
3. Why should you never commit terraform.tfstate to version control?
Because it contains sensitive data in plain text including resource IDs, IP addresses, and potential secrets. Also because team conflicts on state files are unmanageable. Use remote state backends.
4. What does depends_on do and when should you use it?
It creates explicit dependencies when Terraform cannot infer them automatically. Use it only when implicit references are impossible, such as when a resource must exist before another but you do not reference any of its attributes.
5. What is the difference between a variable block and a locals block?
Variables are input parameters set from outside the module. Locals are internal named expressions that cannot be overridden.
6. What happens if you run terraform apply and the state file was modified by another team member since your last terraform plan?
Terraform refreshes the state before applying and detects drift. If conflicts exist, Terraform will error or prompt you to run a new plan.
7. What does the terraform graph command output and what is it used for?
It outputs a Graphviz formatted visualization of the dependency graph. Use it to debug complex dependencies and understand why Terraform plans to destroy and recreate resources.
8. What is the Terraform Registry and what are the three types of things published there?
The Registry is HashiCorp's platform for sharing Terraform components. The three types are providers, modules, and policy libraries (Sentinel).
9. What is the difference between Terraform Cloud and Terraform Enterprise?
Terraform Cloud is HashiCorp's SaaS offering. Terraform Enterprise is the self hosted version that runs in your own infrastructure for air gapped or compliance heavy environments.
10. When a module uses configuration_aliases, what problem does it solve?
It solves the problem of a module needing to use multiple configurations of the same provider, such as creating resources in both us-east-1 and us-west-1 using different aliases of the AWS provider.
I answered all ten correctly without hesitation. I am ready for the exam.
Exam Logistics
My exam is booked for Saturday, 27th May 2024 at 10:00 AM local time. It will be online proctored through the HashiCorp portal.
I have completed the following:
- Registered at hashicorp.com/certification
- Tested my webcam and microphone
- Cleared my desk
- Prepared my government ID
- Read all exam policies
My score will appear in my Credly account within 24 hours of completion.
30 Day Reflection
The challenge asked me to answer three questions honestly. Here is what I wrote.
What changed?
Not what I learned. What actually changed.
I used to think infrastructure was just servers and networks and maybe some load balancers. Now I know infrastructure is code that demands the same discipline as application code. Version control. Automated testing. Code review. CI/CD pipelines. These are not optional extras for infrastructure. They are the bare minimum.
What changed is my instinct. When I see a manual server setup now, I do not think "that is fine for now." I think "that should be a module." I have internalized that automation is not about saving time today. It is about eliminating entire categories of human error forever. I no longer trust manual processes. I trust code that has been planned, applied, and tested.
What am I most proud of?
Day 19.
I built a complete three tier application deployment using modules I wrote myself. A VPC module. A compute module. A database module. A load balancer module. I wired them all together and ran terraform apply.
I watched 47 resources create in the correct order. No errors. First try.
That was not luck. That was understanding dependency graphs, module composition, and Terraform's execution model well enough to predict exactly what would happen before it happened. That is the moment I stopped being someone learning Terraform and became someone who knows Terraform.
What comes next?
I am joining a small team building a data pipeline platform on AWS. They currently manage infrastructure with bash scripts and manual CloudFormation.
My first project is to migrate their development environment to Terraform. I will implement remote state with DynamoDB locking. I will set up a CI pipeline that runs terraform validate and terraform plan on every pull request. Then I will train the team on the workflow.
The certification is proof of knowledge. The migration is proof of value.
A Message to Future Participants
If you are reading this and considering starting the 30-Day Terraform Challenge, here is what I wish someone had told me on Day 1:
Do not skip the labs.
Watching videos and reading documentation feels productive. It is not the same as running terraform destroy on accident and learning why state management matters. Make your own mistakes. Break things in a development environment. Fix them. Break them again.
The exam tests your knowledge. The challenge builds your capability. They are not the same thing.
Also, the terraform plan output is your best teacher. Read every line. Understand why every plus and minus is there. If you cannot explain a planned change, do not apply it. That discipline will serve you longer than any certification.
Acknowledgments
This challenge was brought to you by AWS AI/ML UserGroup Kenya, Meru HashiCorp User Group, and EveOps. Thank you for making this happen.
What Comes Next For Me
I will take the Terraform Associate certification exam on Saturday. Then I will start that migration project. And then I will keep building.
Terraform is not the end of my learning journey. It is the foundation.
Day 30 complete. Five practice exams. 30 days of builds. Modules, state management, testing, CI/CD, and a full certification prep program.
Now I go pass that exam.
Top comments (0)