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 Is a Resource Block?
A resource block is how you declare a single piece of infrastructure — one server, one bucket, one database.
The form is resource "type" "name" { ... }, where the type identifies what to create and the name is your label for it within the configuration.
Writing resource "aws_instance" "web" { ... } declares an EC2 instance you refer to elsewhere as aws_instance.web — its address.
A common stumble is confusing the resource name with the resource's real name in the cloud. The label is internal to Terraform; the actual name comes from an attribute such as tags.
In real work, addresses like aws_instance.web are what you use in state show, in import, and when one resource references another.
🧑💻 You can type this command into the Terraform pseudo terminal to try it yourself (this page itself has no interactive terminal).
