Terraform Roadmap: What to Learn and What to Skip
By Branko Petric - Updated - About 3 weeks at 10 hours a week
The short answer
For DevOps, you need enough Terraform to rebuild your cloud setup from code and read a plan before you apply it. That means resources, variables, remote state with locking, one module, and a plan in CI. Skip Terragrunt and complex workspaces. Plan on about 3 weeks at 10 hours a week, after you know one cloud.
Why Terraform comes after AWS
At the last step, you built your setup by clicking, then rebuilt it from notes. It was slow, and you probably missed a setting. Terraform solves that problem. You describe what you want in text files, and it works out what to create, change or delete.
You had to do it by hand first. A Terraform file full of subnets and route tables means little if you have never built one. When a plan looks wrong, your AWS knowledge is how you can tell.
What to learn, in order
- The core loop. Learn
terraform init,planandapplyfrom the AWS tutorials. Start with one S3 bucket, so that an error has only one possible cause. - Reading a plan. This is the most important skill on this page.
+creates,~changes in place,-deletes, and-/+deletes and then creates. Read that last one twice when it is on a database. - Variables and outputs. Variables let you change a value without editing the code. Outputs show useful values such as your load balancer's address.
- State. State is the file where Terraform records what it created. It is how Terraform knows what to change, so losing it causes real pain.
- Remote state with locking. Move state to the S3 backend with
use_lockfile = trueand bucket versioning on. Locking stops two runs from changing state at the same time. Older tutorials use DynamoDB for this, but the docs now mark that as deprecated. - Rebuild your AWS setup. Work from your notes, one piece at a time: network, then server, then database. Run a plan after each piece.
- One module. A module is a reusable folder of Terraform code. Write one for something you repeat, such as your network. One is enough to learn the idea.
- Importing and drift. Drift is when someone changes a resource by hand, so it no longer matches your code. Change something in the console, then see what the plan says. Learn
terraform importfor resources made by hand. - Plan in CI. Run
terraform planon each pull request, in the pipeline you built. Give it AWS access with OIDC (short-lived logins with no stored keys).
What to skip for now
- Terragrunt and Pulumi. Learn the plain tool first.
- Complex workspaces and setups with many environments.
- Writing your own providers (the plugins that talk to services like AWS).
- Testing frameworks, beyond running
terraform validateandterraform fmt.
Common mistakes
- Committing state to Git. State can hold secrets in plain text, and Git gives you no locking. Add
*.tfstate*and.terraform/to.gitignorebefore your first commit. - Applying without reading the plan.
-auto-approveis how databases get deleted. On anything you care about, read each line.terraform plan -out=tfplanfollowed byterraform apply tfplanmakes sure you apply what you read. - Fixing things in the console. The next plan will try to undo your fix. Change the code, or update the code to match.
- Being surprised by a failed destroy. An RDS instance needs
skip_final_snapshot = trueto delete with no final backup. A bucket with files in it needsforce_destroy = true. Use these in your practice setup only. They are risky on real data. - Expecting Terraform to manage its own state bucket. Create that bucket by hand or in a small separate setup. Otherwise
destroyis trying to delete the place its own records live.
OpenTofu in one minute
In August 2023, HashiCorp moved Terraform's future releases from an open source license to the Business Source License. OpenTofu is a fork (a separate copy of the code) that came out of that change. It sits under the Linux Foundation and describes itself as a drop-in replacement. You run tofu plan instead of terraform plan. Learn either one, and you can pick up the other quickly. Do not spend study time on this choice.
Jobs to apply for after this stage
You now have Linux, a pipeline, one cloud and infrastructure code. In our judgment, cloud support, junior cloud engineer and junior platform roles are realistic to apply for from here. "DevOps engineer" is rarely a first job title. You can keep working through this roadmap while you apply, and paid time on real systems teaches things a study project cannot.
Your project
Turn your AWS notes into Terraform, so that one command builds everything and one command removes it. Then run this test: terraform destroy, terraform apply, and check that the app works. You may need to restore the database from your S3 backup, which is good practice. Run destroy at the end of each session as well, since it saves you money. Keep the code in Git, with every change going through a pull request.
You are done when
You can do all of this with no notes. If you already can, skip this step.
terraform applybuilds your full AWS setup from an empty account, apart from the state bucket.terraform destroyremoves it, and a secondterraform applybrings it back and your app works.- Straight after an apply,
terraform planreports no changes. - Your state lives in S3 with locking on, and
git ls-files | grep tfstatereturns nothing. - You change a setting that forces a database to be replaced, then point to the line in the plan that shows it, without applying.
Learn it and test it
Free guides
- Terraform Fundamentals for DevOps
- Terraform Variables, Outputs, and Locals
- Terraform State Explained
- Terraform Backends and Remote State
- Terraform Modules: Reusable Infrastructure
- Terraform in CI/CD and Team Workflows
Practice scenarios
- Commit terraform.tfstate to the Repo So Everyone Shares It?
A teammate wants to commit terraform.tfstate to git so the whole team shares one state file. Defend the correct way to share Terraform state.
- Someone Changed Infra by Hand. Terraform Plan Is a Mess.
A manual console change put Terraform's state out of sync, and the next plan wants to undo it. Defend how you reconcile it.
- Terraform Doesn't Know About the Manually-Made DB. Just Let It Recreate It?
A prod RDS instance was made by hand and Terraform now wants to destroy and recreate it. A teammate says just apply. Defend what you actually do first.
- Terraform Wants to Replace the Database. Apply Now?
A routine terraform plan unexpectedly wants to destroy and recreate the production database. Defend whether to apply, and how.
Common questions
How long does it take to learn Terraform?
Our estimate is about 3 weeks at 10 hours a week for the basics on this page, if you already built your setup by hand. It takes longer if you are learning the cloud at the same time, because then you cannot tell a Terraform error from an AWS one.
What should I learn before Terraform?
Is the Terraform certification worth it?
It is optional, and it will not replace your project. As of October 2026, Terraform Associate (004) costs $70.50 plus taxes and lasts 1 hour. It is multiple choice, proctored online, tests Terraform 1.12, and expires after 2 years. No free retake is included. We found no solid data on its effect on hiring. Take it only after your project works, if job posts near you ask for it.
Should I learn Terraform or OpenTofu?
Learn Terraform, since it is what job posts usually name. The choice matters little for a beginner, because the core ideas and most of the commands are the same. See the OpenTofu section on this page.
Practice defending your decisions
DevOps Ledger is a scenario-based DevOps and SRE interview practice platform: you pick a real production incident, defend your decision in a chat against a senior-engineer AI that pushes back, and get scored against an answer key written before you started.
One payment. 12 months of access. No subscription, nothing renews.
Get full access - $19