![]()
As a senior ops engineer, I really need to get away from click ops. Automation in the cloud is what is natural. So, learning Terraform is what is next for me. Why create something the slow way with possible human error, when I can define what a repeatable environment looks like and let Azure do all the work in terms of building out infrastructure in the correct order. It’s like if I wanted a burger, and I go to McDonalds but then I go inside, put on my work clothes and begin making my burger manually. I might make a good burger if I know what I’m doing, I might not. And if friends come along, I then have to make more burgers quickly, and who knows, maybe I forget the pickles. Maybe I undercook the fries.
What if instead, I just went to McDonalds and told them what I wanted and how I wanted it. Sir – I will take a double cheeseburger with fries, no onions, no ketchup. I declare what I want and then pick it up as I ordered it. Terraform from what I’ve learned is similar to that and a great tool to learn well, if you are in an enterprise environment where you need to scale up quickly, as you scale down with the same rate of speed. With those constant swings in scalability, you really cannot afford to not be exact. No room for mistakes, as those can compound over the years, or months, and then you’re dealing with fires. Fun.
In the past I used PowerShell in Azure Automation runbooks, to deploy sub – landing zones. Essentially, within a subscription, deploying a resource group, a vnet/snet, dns configuration, route table stuff, automatic peering to a central vnet, and other resources. But this was all done procedurally. Not declarative. I need to define all the variables, and steps, and tell Azure how to build it.
With terraform, as I begin to learn, I can write a file that uses a plugin essentially, that can communicate with cloud platforms, to build what I define. I don’t need to tell it how to build it out exactly, it just does it. With that being said, I do well when I read the vendors documentation and do lab work alongside. I also value certifications, because they at least show, some effort was made in learning. Therefore, my current goal is to achieve the Terraform Associate 004 certification (Learning Path – Terraform Associate 004 | Terraform | HashiCorp Developer). But I want to learn more about not just Terraform but the bigger picture! IaC, pipelines, automations! So, as I learn more about Terraform and apply what I learn, I also want to learn more about the tools used alongside with Terraform, like Jenkins or Env0 to run the validations commands, init’s, plan and applies too. I want to learn about how the code is stored in for example GitHub or what I am using, an Azure DevOps org.
I have learned a lot so far and I think I found my spark! I feel excited to learn about this! I see a path of where I’m headed or at the very least where I want to be soon. So far, I’ve created an Azure DevOps project with the help of ChatGPT to help explain its use when implementing Terraform:

I cloned the repo locally, so, as I learned, I can write these files and test locally, and then afterwards, ran a “git add .” command to track the files I want to be pushed later on, then ran “git commit -m” to take a snapshot of the files with a message and finally, a “git push” to sync the local files tracked and prepared, to the remote repo in Azure DevOps.
Now, I went through the exercises from Terraform directly, specifically, for Azure platform. And have been learning tons. Including the following:
- Azure CLI is used by Terraform to tell it where you want to build in.
- Modules are like PowerShell functions.
- Providers are the plugins that allows terraform to communicate with a specific platform or resource type.
- File types like main.tf, terraform.tfstate, providers.tf, etc
- Terraform commands like terraform validate, init, plan, apply, destroy, and then other commands like state list and state show which shows and tracks the metadata of the resources created in the platform! And all that info gets stored in a historical file, that obviously should be secured, but still awesome to learn about!
- How different blocks can reference other blocks in the same file or different files in the same directory. And how when terraform runs, it’s not running just 1 file at a time, it’s looking at all the files at the same time!
And so far, have been able to deploy a resource group in East US with Azure tags, a virtual network inside of that, with a defined network block and DNS, a subnet from that, a route table associated with that subnet, tags, etc.

I will continue to deep dive into this until I am done with the learning modules terraform provides. And in the meantime, continue to build my lab environment and soon, my pipelines.

No comments! Be the first commenter?