Practical IaC guides starting with Terraform. Learn how to provision, manage, and scale
infrastructure declaratively — from your first terraform init to production-grade pipelines.
What Infrastructure as Code means, why Terraform exists, and the core concepts: providers, resources, state, and the plan/apply workflow.
How providers work, the provider registry, version constraints, authentication patterns for AWS/GCP/Azure, and using provider aliases for multi-region setups.
How Terraform tracks infrastructure in its state file, why remote backends matter, state locking, sensitive values in state, and essential state CLI commands.
Parameterize configurations with input variables, expose results with outputs, and compute reusable values with locals. Includes types, validation, and .tfvars files.
Package configurations into reusable modules, use the Terraform Registry, manage module versions, and compose complex infrastructure from focused building blocks.
Master init, plan, apply, and destroy — the four commands that drive every Terraform operation. Includes fmt, validate, reading plan output, and the CI/CD pipeline pattern.
Store state remotely for team collaboration. Configure S3, GCS, and HCP Terraform backends, enable state locking, use partial config, and migrate state safely.
Manage multiple environments from one configuration using Terraform workspaces. Learn workspace commands, per-environment variable files, and when to use separate configs instead.
Bring resources created outside Terraform under its management without destroying them. Covers terraform import, import blocks, config generation, and the moved block.
Detect when real infrastructure diverges from your Terraform config. Learn refresh-only plans, automated scheduled detection, remediation strategies, and how to prevent drift at the source.
Create multiple resource instances with count and for_each, encode explicit ordering with depends_on, and fine-tune create/destroy behavior with lifecycle blocks.
Generate repeated nested blocks from a collection using dynamic blocks, and master Terraform's expression language: for expressions, conditionals, and splat operators.
Master Terraform's built-in function library: string manipulation, collection transforms, encoding, filesystem helpers, and IP/CIDR network functions.
Write automated tests for Terraform modules using the native test framework in Terraform 1.6+. Covers unit tests with mocking, integration tests, and CI/CD integration.
Automate plan on PR and apply on merge, manage secrets with OIDC, use Atlantis or HCP Terraform, and enforce policy gates before every apply.
The open-source Terraform fork maintained under the Linux Foundation. Learn what changed after the BSL license switch, what's compatible, and how to migrate.
Write infrastructure in TypeScript, Python, or Go instead of HCL — and use the full power of a programming language including loops, classes, and package managers.
Configure servers and deploy applications with agentless SSH playbooks. Covers inventory, tasks, roles, Vault, and how Ansible complements Terraform.