Terraform · Curriculum
Curriculum
218 lessons across 36 parts. Lessons build on each other; later parts assume familiarity with earlier material.
Part I
Infrastructure as Code Foundations
Why IaC exists; declarative vs imperative provisioning; Terraform in the platform ecosystem; reproducibility, drift, and ownership.
- 01Welcome to Terraform for Production SysadminsCourse introduction · foundation · ~12 min
- 01Why Infrastructure as Code ExistsProduction Terraform · foundation · ~12 min
- 02Why Infrastructure as Code ExistsIaC foundations · foundation · ~18 min
- 02Declarative vs Imperative ProvisioningProduction Terraform · foundation · ~10 min
- 03Terraform in the Infrastructure EcosystemProduction Terraform · foundation · ~12 min
- 04Reproducibility and the BlueprintProduction Terraform · foundation · ~10 min
- 05Drift: The Tax of Manual InfrastructureProduction Terraform · foundation · ~12 min
- 06Infrastructure Ownership and the Configuration RepositoryProduction Terraform · foundation · ~10 min
Part II
Terraform Architecture
The CLI, Core, configuration, state, providers, plugins, and the dependency graph; what each component does and does not do.
- 01Terraform ArchitectureCore architecture · foundation · ~22 min
- 01The CLI and the Core: What Each DoesProduction Terraform · foundation · ~12 min
- 02Provider Plugins: The Bridge to the Real WorldProduction Terraform · foundation · ~12 min
- 03The State and Resource ModelProduction Terraform · foundation · ~14 min
- 04The Dependency Graph and ParallelismProduction Terraform · intermediate · ~14 min
- 05How Refresh and Plan InteractProduction Terraform · intermediate · ~12 min
- 06How Apply Executes PlanProduction Terraform · intermediate · ~14 min
Part III
Installing and Versioning Terraform
Official installation, version pinning, the dependency lockfile, and reproducible control environments.
- 01Installing TerraformInstallation · foundation · ~14 min
- 01Choosing an Installation MethodProduction Terraform · foundation · ~10 min
- 02Verifying the InstallationProduction Terraform · foundation · ~10 min
- 03Team-Wide Version RolloutProduction Terraform · foundation · ~10 min
- 04required_version: The FloorProduction Terraform · foundation · ~10 min
- 05The Dependency Lock FileProduction Terraform · intermediate · ~12 min
- 06Terraform Server and Execution EnvironmentsProduction Terraform · intermediate · ~12 min
Part IV
HCL: The Terraform Configuration Language
Blocks, arguments, expressions, types, conditionals, for expressions, functions, and readability of production HCL.
- 01HCL FundamentalsHCL · foundation · ~24 minLab
- 01HCL Blocks, Arguments, and the Configuration FileProduction Terraform · foundation · ~12 min
- 02HCL Types and ValuesProduction Terraform · foundation · ~14 min
- 03Expressions and ReferencesProduction Terraform · foundation · ~12 min
- 04Functions for Production CodeProduction Terraform · intermediate · ~14 min
- 05Conditional Expressions and For LoopsProduction Terraform · intermediate · ~12 min
- 06Writing Readable HCLProduction Terraform · intermediate · ~10 min
- 07HCL Style and PatternsProduction Terraform · intermediate · ~10 min
Part V
The Terraform Workflow
fmt, validate, init, plan, apply, destroy, output, console, show, and what each proves (and does not prove).
- 01terraform apply: From Plan to RealityApply · intermediate · ~22 minLab
- 01The Basic WorkflowDaily cycle · foundation · ~16 minLab
- 01terraform destroy: The Most Dangerous OperationDestroy · advanced · ~18 minLab
- 01terraform init in DepthInit · intermediate · ~14 minLab
- 01fmt and validate: The Cheap GatesProduction Terraform · foundation · ~10 min
- 02terraform init: The BootstrapProduction Terraform · foundation · ~12 min
- 03terraform plan in DepthProduction Terraform · intermediate · ~18 min
- 04terraform apply in DepthProduction Terraform · intermediate · ~14 min
- 05terraform destroy: A Production-Dangerous OperationProduction Terraform · intermediate · ~12 min
- 06terraform output and terraform showProduction Terraform · foundation · ~10 min
- 07terraform console: Interactive ExplorationProduction Terraform · intermediate · ~10 min
Part VI
Providers and the Provider Ecosystem
Provider plugin model, sources, versions, aliases, authentication, failures, and the supply chain.
- 01The Provider Plugin ModelProduction Terraform · foundation · ~12 min
- 01Providers: The Plugin ArchitectureProviders · foundation · ~14 minLab
- 01Provider Version Constraints and UpgradesProviders · intermediate · ~12 minLab
- 01Provider Authentication in ProductionProviders · intermediate · ~10 min
- 02Provider Sources and RegistriesProduction Terraform · foundation · ~12 min
- 03Provider Versioning and the Dependency LockProduction Terraform · intermediate · ~14 min
- 04Provider Aliases for Multi-Region and Multi-AccountProduction Terraform · intermediate · ~12 min
- 05Provider Authentication in ProductionProduction Terraform · intermediate · ~14 min
- 06Provider Failures and RecoveryProduction Terraform · intermediate · ~10 min
Part VII
Resources, Data Sources, and count/for_each
Managed resources, CRUD lifecycle, attributes, computed values, replacement, data sources, and resource identity for multiple instances.
- 01Data Sources: Reading Infrastructure Terraform Does Not ManageData sources · foundation · ~12 minLab
- 01CRUD and the Resource LifecycleProduction Terraform · foundation · ~12 min
- 01Resources: The Building BlocksResources · foundation · ~22 minLab
- 02Resource Attributes and Computed ValuesProduction Terraform · foundation · ~12 min
- 03Resource Replacement and In-Place UpdatesProduction Terraform · intermediate · ~14 min
- 04Data Sources: Reading Without ManagingProduction Terraform · intermediate · ~12 min
- 05count: Index-Based Resource InstancesProduction Terraform · intermediate · ~12 min
- 06for_each: Stable Key-Based Resource InstancesProduction Terraform · intermediate · ~12 min
- 07Dynamic Blocks for Conditional ConfigurationProduction Terraform · intermediate · ~10 min
Part VIII
Dependencies and the Resource Graph
Implicit dependencies, explicit depends_on, the dependency graph, parallelism, and ordering.
- 01Implicit Dependencies Through ReferencesProduction Terraform · foundation · ~10 min
- 02Explicit Dependencies with depends_onProduction Terraform · intermediate · ~10 min
- 03The Dependency GraphProduction Terraform · intermediate · ~12 min
- 04Dependency Cycles: Detection and ResolutionProduction Terraform · intermediate · ~10 min
- 05Parallelism and -parallelismProduction Terraform · intermediate · ~10 min
- 06Resource Ordering and Implicit ChainsProduction Terraform · intermediate · ~10 min
Part IX
State: The Core Production Concept
Why state exists, what it contains, how it maps resource addresses to real infrastructure, and why it is the trust boundary.
- 01Why State ExistsProduction Terraform · foundation · ~12 min
- 01State: The Core Production TopicState · foundation · ~28 minLab
- 02State File StructureProduction Terraform · foundation · ~12 min
- 03Resource Addresses and Real-World MappingProduction Terraform · intermediate · ~12 min
- 04Configuration, State, and Reality: The ThreeProduction Terraform · foundation · ~10 min
- 05Common State MistakesProduction Terraform · intermediate · ~12 min
- 06Exploring the State SafelyProduction Terraform · foundation · ~10 min
Part X
State Operations: Read, Move, Remove, Import
Local state, remote state, state list/show/pull, state mv, state rm, import, moved blocks, and the production risks of each.
- 01Importing Existing InfrastructureImports · intermediate · ~18 minLab
- 01Read-Only Operations: list, show, pullProduction Terraform · foundation · ~10 min
- 01moved Blocks: Refactoring Without RecreationRefactoring · advanced · ~14 minLab
- 01Local State vs Remote StateState backends · intermediate · ~22 minLab
- 01State Commands: Reading and Operating on StateState commands · advanced · ~14 minLab
- 02state mv: Renaming Without RecreationProduction Terraform · intermediate · ~12 min
- 02Local State: What It Looks Like and Why It Is BrittleState · intermediate · ~14 minLab
- 03state rm: Removing From State, Not From RealityProduction Terraform · intermediate · ~12 min
- 04Import: Adopting Existing InfrastructureProduction Terraform · intermediate · ~14 min
- 05replace-provider: Switching Provider NamespacesProduction Terraform · advanced · ~10 min
- 06moved Blocks: Declarative RefactoringProduction Terraform · intermediate · ~12 min
Part XI
State Security and Lifecycle
Sensitive data in state, encryption-at-rest, lifecycle.prevent_destroy, lifecycle.replace_triggered_by, and lifecycle.precondition.
- 01Lifecycle Meta-Arguments in DepthLifecycle · advanced · ~18 minLab
- 01State Security ThreatsProduction Terraform · foundation · ~12 min
- 01State Security and BackupState security · intermediate · ~14 minLab
- 02Sensitive Values in State and VariablesProduction Terraform · intermediate · ~12 min
- 03Encryption at Rest for StateProduction Terraform · intermediate · ~12 min
- 04Backend Access ControlProduction Terraform · intermediate · ~12 min
- 05State Security in the Production PipelineProduction Terraform · intermediate · ~10 min
- 06A State Security IncidentProduction Terraform · intermediate · ~12 min
Part XII
State Recovery and Backup
State versioning, backups, recovery procedures, and the production control for state loss.
- 01State Backups: The Production ControlProduction Terraform · foundation · ~10 min
- 01State Backup and RecoveryState recovery · intermediate · ~10 minLab
- 02State Versioning and RetentionProduction Terraform · intermediate · ~12 min
- 03Restoring State from BackupProduction Terraform · intermediate · ~12 min
- 04Defence in Depth: Multiple Backup LayersProduction Terraform · intermediate · ~10 min
- 05RPO and RTO for Terraform StateProduction Terraform · intermediate · ~10 min
- 06Testing the Recovery ProcedureProduction Terraform · intermediate · ~10 min
Part XIII
Variables, Outputs, and Locals
Variable types, validation, sensitive values, precedence, outputs, locals, and how to design a clean interface.
- 01Locals: The Configuration Internal VariablesLocals · foundation · ~8 minLab
- 01Outputs: The Configuration InterfaceOutputs · foundation · ~12 minLab
- 01Variable Types and ValidationProduction Terraform · foundation · ~12 min
- 01Variables: The Configuration InterfaceVariables · foundation · ~18 minLab
- 02Variable Input PrecedenceProduction Terraform · intermediate · ~12 min
- 03Sensitive Values and the Production InterfaceProduction Terraform · intermediate · ~12 min
- 04Outputs: The Configuration InterfaceProduction Terraform · intermediate · ~12 min
- 05Locals: Internal VariablesProduction Terraform · intermediate · ~10 min
- 06Expressions for Production ConfigurationsProduction Terraform · intermediate · ~12 min
Part XIV
Modules: Reusable Building Blocks
Module structure, interfaces, sources, versioning, and the production rules of module design.
- 01Modules: Reusable Building BlocksModules · intermediate · ~26 minLab
- 01Why ModulesProduction Terraform · foundation · ~10 min
- 02Modules: Reusable Building Blocks in DepthModules · intermediate · ~16 min
- 02Module Structure and ConventionsProduction Terraform · foundation · ~12 min
- 03Designing a Module InterfaceProduction Terraform · intermediate · ~14 min
- 04Module Sources and VersioningProduction Terraform · intermediate · ~12 min
- 05Testing Modules with terraform testProduction Terraform · intermediate · ~14 min
- 06Module Abstraction: Avoiding the God ModuleProduction Terraform · intermediate · ~12 min
- 07Module Releases and UpgradesProduction Terraform · intermediate · ~12 min
Part XV
Environment Architecture and State Boundaries
How to design multi-environment estates; state boundaries as the unit of failure; workspaces, directories, and accounts.
- 01Blast Radius: The Central Production ConceptArchitecture · intermediate · ~14 min
- 01State Boundaries: Decomposing the Terraform EstateArchitecture · intermediate · ~12 min
- 01Environment Architecture: Dev, Staging, ProductionEnvironment architecture · intermediate · ~18 minLab
- 01Workspaces: Multiple States in One BackendEnvironment architecture · intermediate · ~10 minLab
- 01Why Multiple EnvironmentsProduction Terraform · foundation · ~10 min
- 02Patterns for Multi-Environment EstatesProduction Terraform · intermediate · ~14 min
- 03Environment Directories with Separate BackendsProduction Terraform · intermediate · ~12 min
- 04Multi-Account and Multi-Project ProductionProduction Terraform · intermediate · ~12 min
- 05State Boundaries as the Unit of FailureProduction Terraform · intermediate · ~14 min
- 06Blast Radius in Multi-Environment EstatesProduction Terraform · intermediate · ~12 min
- 07Terraform Workspaces: When and When NotProduction Terraform · intermediate · ~12 min
Part XVI
Plan Review and Saved Plans
How to read a plan, what the symbols mean, saved plans, and the production review workflow.
- 01Saved Plans: The Production Apply PatternApply · intermediate · ~10 minLab
- 01terraform plan in DepthPlan review · intermediate · ~30 minLab
- 01Plan Symbols: Create, Update, Destroy, ReplaceProduction Terraform · foundation · ~12 min
- 02Reading the Plan: A Disciplined WalkProduction Terraform · intermediate · ~14 min
- 03Saved Plans and the ContractProduction Terraform · intermediate · ~12 min
- 04The Production Plan ReviewProduction Terraform · intermediate · ~14 min
- 05Spotting Risky Network ChangesProduction Terraform · advanced · ~12 min
- 06Spotting State and Identity ChangesProduction Terraform · advanced · ~12 min
Part XVII
Drift Detection and Reconciliation
How drift appears, how to detect it continuously, and the production rules for reconciling it.
- 01Drift: Infrastructure That Changed Without TerraformDrift · intermediate · ~20 minLab
- 01Refreshing State: Reducing Drift to RealityDrift · intermediate · ~8 minLab
- 01Drift: Configuration, State, and RealityProduction Terraform · foundation · ~10 min
- 02Drift Detection in ProductionDrift · intermediate · ~12 minLab
- 02Detecting Drift with Refresh-Only PlansProduction Terraform · intermediate · ~12 min
- 03Intentional Drift: When the Real World Is RightProduction Terraform · intermediate · ~12 min
- 04Emergency Manual Changes and ReconciliationProduction Terraform · intermediate · ~12 min
- 05Continuous Drift Detection in ProductionProduction Terraform · intermediate · ~14 min
- 06Investigating Drift: The Production ControlProduction Terraform · intermediate · ~12 min
Part XVIII
Troubleshooting and Recovery
State corruption, plan failures, provider failures, partial apply, and the production control for each.
- 01The Troubleshooting MethodologyProduction Terraform · intermediate · ~12 min
- 02Troubleshooting State IssuesProduction Terraform · intermediate · ~12 min
- 03Troubleshooting Configuration ErrorsProduction Terraform · intermediate · ~12 min
- 04Troubleshooting Apply FailuresProduction Terraform · intermediate · ~14 min
- 05Terraform Logging and DebuggingProduction Terraform · intermediate · ~12 min
- 06The 3 AM Test: Production Under PressureProduction Terraform · advanced · ~14 min
Part XIX
Security: Credentials, Secrets, and Audit
Production credential patterns, secrets management, IAM, least privilege, and audit.
- 01Production Credential PatternsProduction Terraform · intermediate · ~12 min
- 02Secrets Management for TerraformProduction Terraform · intermediate · ~12 min
- 03Least Privilege for the Terraform Execution RoleProduction Terraform · intermediate · ~12 min
- 04IAM and Resource Policies in TerraformProduction Terraform · intermediate · ~12 min
- 05Auditing Terraform ActionsProduction Terraform · intermediate · ~12 min
- 06Rotating Credentials in ProductionProduction Terraform · intermediate · ~12 min
Part XX
Supply Chain: Providers and Modules
Provider provenance, dependency lock file, module sources, version pinning, and supply-chain risk.
- 01Provider Provenance and VerificationProduction Terraform · intermediate · ~12 min
- 02Module Supply ChainProduction Terraform · intermediate · ~12 min
- 03Evaluating Third-Party ModulesProduction Terraform · intermediate · ~12 min
- 04Third-Party Module RisksProduction Terraform · intermediate · ~12 min
- 05CI/CD Dependencies and Supply ChainProduction Terraform · intermediate · ~12 min
- 06A Supply Chain IncidentProduction Terraform · advanced · ~14 min
Part XXI
Testing, Linting, and Static Analysis
terraform test, fmt, validate, lint, security scanning, and the layered validation model.
- 01The Layered Testing ModelProduction Terraform · intermediate · ~12 min
- 01terraform test: The Native Test FrameworkTesting · advanced · ~12 minLab
- 02terraform test in DepthProduction Terraform · intermediate · ~14 min
- 03Mock Providers for Unit TestsProduction Terraform · advanced · ~14 min
- 04Format and Validate ChecksProduction Terraform · foundation · ~10 min
- 05Linting with tflintProduction Terraform · intermediate · ~12 min
- 06Static Security AnalysisProduction Terraform · intermediate · ~12 min
Part XXII
CI/CD for Production Terraform
Production pipeline design, plan artifacts, gated deploys, CI/CD credentials, and observability.
- 01CI for Terraform: The Production PipelineCI · intermediate · ~14 min
- 01The Production Pipeline DesignProduction Terraform · intermediate · ~14 min
- 02CI/CD Credentials for TerraformProduction Terraform · intermediate · ~12 min
- 03Controlled Apply: Saved Plans and ApprovalsProduction Terraform · intermediate · ~12 min
- 04Plan Artifacts as the Audit TrailProduction Terraform · intermediate · ~10 min
- 05Multi-Environment CI/CDProduction Terraform · intermediate · ~12 min
- 06CI/CD Observability and FailuresProduction Terraform · intermediate · ~12 min
Part XXIII
Policy as Code
Production guardrails: OPA, Sentinel, Conftest, and policy enforcement patterns.
- 01Production Guardrails as CodeProduction Terraform · intermediate · ~14 min
- 02Policy Tools: OPA, Sentinel, ConftestProduction Terraform · intermediate · ~14 min
- 03Writing Effective Policy RulesProduction Terraform · intermediate · ~12 min
- 04Required Tags and Resource NamingProduction Terraform · intermediate · ~10 min
- 05Encryption-at-Rest PoliciesProduction Terraform · intermediate · ~10 min
- 06Network Exposure PoliciesProduction Terraform · intermediate · ~10 min
Part XXIV
Upgrading Terraform, Providers, and Modules
Terraform Core upgrades, provider upgrades, module upgrades, and the production control for each.
- 01Upgrading Terraform CoreProduction Terraform · intermediate · ~14 min
- 02Upgrading Providers SafelyProduction Terraform · intermediate · ~14 min
- 03Upgrading Modules SafelyProduction Terraform · intermediate · ~12 min
- 04Testing Upgrades Before ProductionProduction Terraform · intermediate · ~12 min
- 05Rollback Plans for UpgradesProduction Terraform · intermediate · ~10 min
- 06Emergency Upgrades in ProductionProduction Terraform · advanced · ~12 min
Part XXV
Migrations and Backend Changes
Backend migration, state migration, and importing existing infrastructure.
- 01Backend Migration Done RightProduction Terraform · intermediate · ~14 min
- 02State Migrations and RefactoringProduction Terraform · intermediate · ~12 min
- 03Importing Existing InfrastructureProduction Terraform · intermediate · ~14 min
- 04Migration Strategy for 300+ ResourcesProduction Terraform · advanced · ~14 min
- 05Verifying the MigrationProduction Terraform · intermediate · ~12 min
- 06Rollback from a Failed MigrationProduction Terraform · advanced · ~12 min
Part XXVI
Cloud and Platform Operations
Provider-neutral patterns for cloud, on-prem, and multi-cloud; Terraform + Ansible + Proxmox integration.
- 01Provider-Neutral PatternsProduction Terraform · intermediate · ~12 min
- 02Terraform on AWSProduction Terraform · intermediate · ~12 min
- 03Terraform on AzureProduction Terraform · intermediate · ~12 min
- 04Terraform with ProxmoxProduction Terraform · intermediate · ~12 min
- 05Terraform + Ansible: The Hand-OffProduction Terraform · intermediate · ~12 min
- 06Terraform On-PremisesProduction Terraform · intermediate · ~12 min
Part XXVII
Enterprise Scale: Multi-Team, Multi-Account
Multi-team, multi-account, multi-region; repositories, modules, and ownership at scale.
- 01Multi-Team Terraform OperationsProduction Terraform · advanced · ~14 min
- 02Multi-Account State BoundariesProduction Terraform · advanced · ~14 min
- 03Multi-Region ArchitectureProduction Terraform · advanced · ~14 min
- 04Monorepo vs PolyrepoProduction Terraform · advanced · ~12 min
- 05The Repository ArchitectureProduction Terraform · advanced · ~12 min
- 06Enterprise Module EcosystemProduction Terraform · advanced · ~14 min
Part XXVIII
Disaster Recovery and Resilience
Backup, RPO/RTO, state DR, and the production control for asset recovery.
- 01RPO and RTO for TerraformProduction Terraform · intermediate · ~12 min
- 02State Backend Disaster RecoveryProduction Terraform · advanced · ~14 min
- 03Terraform Execution Environment RecoveryProduction Terraform · advanced · ~12 min
- 04Periodic DR TestingProduction Terraform · intermediate · ~12 min
- 05Cross-Region State ReplicationProduction Terraform · advanced · ~12 min
- 06Restoring the Production EstateProduction Terraform · advanced · ~14 min
Part XXIX
Incident Response: The 3 AM Test
Troubleshooting during incidents, break-glass changes, and the production control for partial failures.
- 01Preparing for the 3 AM TestProduction Terraform · intermediate · ~12 min
- 02Detecting a Production IncidentProduction Terraform · intermediate · ~12 min
- 03Responding to a Production IncidentProduction Terraform · advanced · ~14 min
- 04Break-Glass ProcedureProduction Terraform · advanced · ~14 min
- 05Post-Incident ReviewProduction Terraform · intermediate · ~12 min
- 06Preventive Measures from IncidentsProduction Terraform · intermediate · ~12 min
Part XXX
Capstone: A Production Terraform Estate
A multi-stage capstone that exercises every concept in the course, with failure injection and recovery.
No lessons published in this part yet. The full curriculum is planned in docs/courses/terraform/curriculum.md on GitHub.
Part XXXI
Final Assessment
Comprehensive theory and practical assessment of every production competency.
No lessons published in this part yet. The full curriculum is planned in docs/courses/terraform/curriculum.md on GitHub.
Part Labs
Hands-On Labs
Lab exercises across the course.
No lessons published in this part yet. The full curriculum is planned in docs/courses/terraform/curriculum.md on GitHub.
Part Runbooks
Operational Runbooks
Runbooks for production operations.
Part Checklists
Production Checklists
Checklists for production readiness.
Part Breakfix
Break/Fix Scenarios
Diagnostic and recovery exercises.
Part Final
Terraform Final Assessment
Comprehensive assessment.
No lessons published in this part yet. The full curriculum is planned in docs/courses/terraform/curriculum.md on GitHub.