Got the fundamentals? A structured Terraform course is a fast way to level up.
Find Terraform courses on UdemyAffiliate link. Costs you nothing extra.
- 01Getting Started
- 02What Is Terraform?
- 03Checking the Version with terraform version
- 04What Is Infrastructure as Code?
- 05What Is a Provider?
- 06Preparing Providers with terraform init
- 07What Is a Resource Block?
- 08Checking Syntax with terraform validate
- 09Formatting Code with terraform fmt
- 10Previewing Changes with terraform plan
- 11Building Infrastructure with terraform apply
- 12What Is tfstate?
- 13Viewing State with terraform show
- 14Listing Resources with terraform state list
- 15Inspecting One Resource with terraform state show
- 16What Are Variables?
- 17What Are Outputs?
- 18Reading Outputs with terraform output
- 19Tearing Down with terraform destroy
- 20What Is a Module?
- 21What Is a Workspace?
- 22Listing Workspaces with terraform workspace list
- 23Creating a Workspace with terraform workspace new
- 24Switching Workspaces with terraform workspace select
- 25Saving a Plan with terraform plan -out
- 26Applying a Saved Plan with terraform apply
- 27What Is State Locking?
- 28Listing Providers with terraform providers
- 29What Is terraform refresh?
- 30What Is a Remote Backend?
- 31Adopting Existing Resources with terraform import
- 32What Is depends_on?
- 33What Are for_each and count?
- 34Visualising Dependencies with terraform graph
- 35What Is State Drift?
- 36How to Think About Splitting Modules
- 37Hands-On: Building a Three-Tier Web Architecture with Terraform
What Are for_each and count?
When you need several near-identical resources, count and for_each create them from one block instead of copy-paste.
count takes a number and gives you indexed instances; for_each takes a map or set and gives you instances keyed by name.
Three servers become one block with count = 3, addressed as aws_instance.web[0] and so on.
A common stumble is using count for a list that changes. Removing an item shifts every later index, so Terraform destroys and recreates resources that should have been left alone — for_each avoids this by keying on names.
In real work, for_each is the default choice for anything whose membership may change, and count is kept for simple fixed repetition or conditional creation.
🧑💻 You can type this command into the Terraform pseudo terminal to try it yourself (this page itself has no interactive terminal).
