Terraform

An infrastructure-as-code tool that defines and provisions cloud infrastructure using declarative configuration files.

Terraform by HashiCorp is the standard tool for infrastructure as code, allowing teams to define cloud resources (AWS, GCP, Azure) in version-controlled configuration files rather than clicking through cloud consoles. It's required at most DevOps and platform engineering roles and a strong differentiator for backend engineers who also manage their own infrastructure.

Typical time to job-readiness: ~6 weeks.

Learning Terraform

Beginner

Write your first .tf file, provision a simple cloud resource (S3 bucket or VM), understand state, and use the plan/apply/destroy workflow.

Intermediate

Modular configurations, remote state with locking (S3 + DynamoDB), workspaces for multi-environment deployments, and Terraform Cloud for team collaboration.

Advanced

Reusable module libraries, policy-as-code with Sentinel or OPA, and managing Terraform at scale across multiple teams. Assessed via live infrastructure design exercises.

Key concepts

  • HCL (HashiCorp Configuration Language) — declarative config syntax for defining resources
  • State file — Terraform's record of real infrastructure; must be stored remotely for teams
  • Plan vs Apply — plan previews changes, apply executes them; always review plan first
  • Providers — plugins that talk to cloud APIs (AWS, GCP, Azure, etc.)
  • Modules — reusable packages of Terraform config to avoid repeating infrastructure patterns
  • Remote state with locking — S3 + DynamoDB prevents concurrent modifications

Common interview topics

  • What is Terraform state and why is remote state important for teams
  • Explain the difference between terraform plan and terraform apply
  • How would you manage different environments (dev, staging, prod) in Terraform
  • What is a Terraform module and how does it promote reusability
  • How do you handle secrets in Terraform without hardcoding them

Browse Terraform jobs