Skip to content

Labs

Standalone Markdown labs under labs/day-N/. Each lab pairs with a section (SNN) and is meant to be copy-pasteable. Emulator labs need LocalStack (task lab:up); mock-provider labs do not.

Interactive picker (optional gum):

task lab    # setup/lab.sh — pick a lab and run common tofu steps

Source of truth on GitHub: labs/.

Day 1 — Author

Lab Topic
00-setup Setup and first resource
01-iac-fork Infrastructure as Code
02-hcl-blocks HCL building blocks
03-core-workflow Plan / apply / destroy
04-state State
05-state-encryption State encryption
06-variables Variables & types
15-conditions-checks Preconditions & checks
07-modules Modules
08-naming-labels Naming & labelling
09-best-practices Best practices (recommended)
10-differentiators OpenTofu differentiators (recommended)
11-taco-landscape TACO landscape (optional, paper)

Day 2 — Test

Lab Topic
12-testing-pyramid Testing pyramid
13-static-analysis Static analysis
14-security-scanners Security & policy scanners
16-tofu-test Native tofu test
17-mocking Mocking providers
18-terratest-cost Terratest & cost (optional)
19-testing-cicd Testing in CI/CD

Day 3 — Scale

Lab Topic
20-why-terramate Why Terramate
21-stacks Stacks
22-codegen Code generation
23-orchestration Orchestration
24-change-detection Change detection
25-terramate-ci-cloud Terramate CI + Cloud (optional)
26-capstone Capstone & wrap-up
27-terragrunt-comparison Terragrunt vs Terramate (optional appendix)
28-ecosystem-tooling Ecosystem tooling (optional appendix)

Workdirs for runnable OpenTofu (init/plan/apply) often sit beside the lab Markdown as labs/day-N/NN-topic/ directories — follow each lab’s paths.

Environment reminders

task setup       # toolchain
task lab:up      # LocalStack on :4566
task lab:down    # wipe emulator (clean slate)

See setup.md and setup/localstack.md.