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.