0
0
Terraformcloud~5 mins

Block syntax and structure in Terraform - Commands & Configuration

Choose your learning style9 modes available
Introduction
Terraform uses blocks to organize configuration into sections. Each block defines a resource, variable, or other settings to build infrastructure step-by-step.
When you want to create a virtual machine in the cloud with specific settings.
When you need to define a network with subnets and security rules.
When you want to set variables to reuse values across your infrastructure.
When you want to group related settings like provider details or outputs.
When you want to organize your infrastructure code clearly and logically.
Config File - main.tf
main.tf
terraform {
  required_version = ">= 1.0"
}

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "example-instance"
  }
}

variable "instance_count" {
  type    = number
  default = 1
}

output "instance_id" {
  value = aws_instance.example.id
}

terraform block sets Terraform version requirements.

provider block configures the cloud provider and region.

resource block defines a cloud resource with its properties.

variable block declares input variables with types and defaults.

output block specifies values to show after deployment.

Commands
Initializes the Terraform working directory and downloads provider plugins.
Terminal
terraform init
Expected OutputExpected
Initializing the backend... Initializing provider plugins... - Finding latest version of hashicorp/aws... - Installing hashicorp/aws v4.0.0... - Installed hashicorp/aws v4.0.0 (signed by HashiCorp) Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work.
Shows the execution plan to create the defined resources without applying changes.
Terminal
terraform plan
Expected OutputExpected
Refreshing Terraform state in-memory prior to plan... An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # aws_instance.example will be created + resource "aws_instance" "example" { + ami = "ami-0c55b159cbfafe1f0" + arn = (known after apply) + instance_type = "t2.micro" + tags = { + "Name" = "example-instance" } } Plan: 1 to add, 0 to change, 0 to destroy.
Applies the planned changes to create the resources without asking for confirmation.
Terminal
terraform apply -auto-approve
Expected OutputExpected
aws_instance.example: Creating... aws_instance.example: Still creating... [10s elapsed] aws_instance.example: Creation complete after 15s [id=i-0abcd1234efgh5678] Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: instance_id = "i-0abcd1234efgh5678"
-auto-approve - Skips interactive approval before applying changes
Displays the value of the output variable 'instance_id' after deployment.
Terminal
terraform output instance_id
Expected OutputExpected
i-0abcd1234efgh5678
Key Concept

If you remember nothing else from this pattern, remember: Terraform blocks group related settings to define infrastructure clearly and logically.

Common Mistakes
Forgetting to include required arguments inside a resource block.
Terraform will fail to plan or apply because essential information is missing.
Always check the resource documentation and include all required arguments inside the resource block.
Using incorrect block names or nesting blocks improperly.
Terraform syntax errors occur and the configuration won't load.
Use official Terraform documentation to verify block names and structure; blocks should not be nested unless specified.
Not running 'terraform init' before other commands.
Terraform cannot download providers or initialize the working directory, causing errors.
Always run 'terraform init' first after creating or changing configuration files.
Summary
Use blocks like terraform, provider, resource, variable, and output to organize your infrastructure code.
Run 'terraform init' to prepare your working directory and download providers.
Use 'terraform plan' to preview changes and 'terraform apply' to create resources.
Use 'terraform output' to see values from your deployed infrastructure.