Terraform Fundamentals
Learn Infrastructure as Code with Terraform — HCL syntax, providers, resources, variables, state management, modules, and expressions.
View badge details
About This Course
Course Curriculum
16 Lessons
What is Infrastructure as Code
What is Infrastructure as Code - Lab Exercises
Why IaC matters (manual vs automated), IaC benefits (consistency, version control, repeatability), Terraform overview (providers, open-source, declarative), comparing Terraform vs Bicep vs CloudFormation vs Pulumi, installing Terraform and verifying with terraform version
HCL Syntax and Your First Configuration
HCL Syntax and Your First Configuration - Lab Exercises
HCL blocks (resource, provider, variable, output, data, locals), arguments and attributes, terraform init/plan/apply/destroy workflow, .tf file structure, creating local files with local_file resource, terraform.tfstate basics
Providers and Resources
Providers and Resources - Lab Exercises
Provider configuration and versioning (required_providers, version constraints), resource blocks (type, name, arguments), resource dependencies (implicit via references, explicit via depends_on), resource lifecycle (create_before_destroy, prevent_destroy, ignore_changes), data sources for reading existing infrastructure
Variables and Outputs
Variables and Outputs - Lab Exercises
Input variables (type, default, description, validation, sensitive), variable types (string, number, bool, list, map, object, tuple), variable precedence (CLI, env, tfvars, default), output values for exposing data, local values for computed expressions, terraform.tfvars and auto.tfvars files
State Management
State Management - Lab Exercises
What state is and why it matters, terraform.tfstate file structure, state commands (list, show, mv, rm, pull, push), state locking and why it prevents corruption, remote state backends (concept — local for now, Azure in next course), terraform refresh and state drift detection
Modules
Modules - Lab Exercises
Why modules (DRY, reusability, encapsulation), module structure (main.tf, variables.tf, outputs.tf), calling modules (source, version), local modules vs registry modules, module inputs and outputs, terraform get and module caching
Expressions Functions and Dynamic Blocks
Expressions Functions and Dynamic Blocks - Lab Exercises
String interpolation and templates, built-in functions (file, length, lookup, merge, flatten, try, can), conditional expressions (condition ? true : false), for expressions and for_each, dynamic blocks for repeated nested blocks, count vs for_each tradeoffs
Capstone Briefing Multi-Environment Infrastructure
Capstone Multi-Environment Infrastructure
Capstone: build a complete local IaC project using everything learned — modules for networking/compute/storage (using local/random/null providers), variables with validation, outputs, workspaces for dev/staging/prod, state management, DRY code with modules and for_each