Terraform Syntax With Examples
Last Updated : 23 Jul, 2025
Managing infrastructure amidst technology's fast-paced evolution has become more complicated. The conventional approach of manual resource provisioning and configuration no longer meets the needs of modern applications and services. As a solution, Infrastructure as Code (IaC) has emerged, allowing organizations to automate infrastructure deployment and management. When it comes to implementing IaC, Terraform stands out amongst other solutions. we will examine its syntax and pay special attention to the HashiCorp Configuration Language (HCL).
What is Terraform?
Developed by HashiCorp, Terraform is an open-source tool for infrastructure provisioning that lets you manage your infrastructure through code safely and efficiently. It works with cloud providers like Microsoft Azure and Google Cloud Platform, as well as on-premises solutions, and even supports Amazon Web Services.
Terraform lets you dictate the state of your infrastructure and has the power to bring it to life or obliterate it. It's a powerful tool that allows you to create, modify, and destroy resources declaratively, and it handles all the implementation details behind the scenes.
Language Used In Terraform
Terraform's use demands a comprehension of its configuration files and syntax. HashiCorp Configuration Language (HCL) is the DSL (Domain Specific Language) that Terraform uses to create infrastructure resources. HCL is a human-readable language, designed to be easy to understand while still being expressive.
Terraform Syntax With Examples
Let's look into some basic terraform blocks along with examples.
Terraform Resource Blocks Syntax
The fundamental building block in Terraform is a resource block. It refers to a single piece of infrastructure that you want to control. Here is an illustration of how to create an AWS EC2 instance:
resource "aws_instance" "gfg-ec2" {
ami = "ami-0c94855ba95c286c99"
instance_type = "t2.micro"
}
In the above code we have used the resource type as "aws_instance" and given it the name "gfg-ec2" and specified the AMI ID and the type of instance we need for it.
Terraform Variable Declaration Syntax
We are able to parameterize our configurations in Terraform with the help of variables, which can make our code much more reusable and adaptable. For example:
variable "region" {
description = "AWS region where the resources will be deployed."
type = string
default = "us-east-1"
}
In the above example, we have created a variable region with a default value of "us-east-1".
Terraform Output Values Syntax
You can extract data from your infrastructure and send it to other configurations or use it as a reference by using Terraform's output values. For example:
output "gfg_instance_ip" {
value = aws_instance.example.public_ip
description = "Public IP of the EC2 instance recently deployed."
}
In the above code, we are trying to get the public ip of our EC2 instance by creating an output named "instance_ip".
Terraform Modules Syntax
We can encapsulate and reuse setups using Terraform modules. They support the creation of reusable components from our infrastructure code. Here is a usage example for a module
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "2.0.1"
name = "my-gfg-vpc"
cidr = "10.0.0.0/16"
}
In the above code, we are creating a VPC and for that, we are using the "terraform-aws-modules/vpc/aws" module from the Terraform Registry. Then we are passing the required parameters inside the block. These examples show the basic syntax and applications of Terraform and HCL. Terraform, however, offers a large selection of resource types, providers, and extra tools like data sources, conditional expressions, and loops.
Conclusion
Finally, Terraform and its partner language HCL offer a reliable and adaptable method for managing infrastructure as code. Organizations may create scalable, reproducible, and automated infrastructure deployments across many cloud providers and environments by utilizing the syntax of Terraform and the expressiveness of HCL. So, utilize the strength of Terraform and IaC to improve your infrastructure management.
Similar Reads
DevOps Tutorial DevOps is a combination of two words: "Development" and "Operations." Itâs a modern approach where software developers and software operations teams work together throughout the entire software life cycle.The goals of DevOps are:Faster and continuous software releases.Reduces manual errors through a
7 min read
Introduction
What is DevOps ?DevOps is all about automating and streamlining the software development lifecycle so that code moves from development to production quickly, reliably, and securely.Here is how the DevOps model flow works:Stages of DevOps are:Build Stage1. Developers write and organize code, using version control to
6 min read
DevOps LifecycleThe DevOps lifecycle is a structured approach that integrates development (Dev) and operations (Ops) teams to streamline software delivery. It focuses on collaboration, automation, and continuous feedback across key phases planning, coding, building, testing, releasing, deploying, operating, and mon
10 min read
The Evolution of DevOps - 3 Major Trends for FutureDevOps is a software engineering culture and practice that aims to unify software development and operations. It is an approach to software development that emphasizes collaboration, communication, and integration between software developers and IT operations. DevOps has come a long way since its in
7 min read
Version Control
Continuous Integration (CI) & Continuous Deployment (CD)
Containerization
Orchestration
Infrastructure as Code (IaC)
Monitoring and Logging
Microsoft Teams vs Slack Both Microsoft Teams and Slack are the communication channels used by organizations to communicate with their employees. Microsoft Teams was developed in 2017 whereas Slack was created in 2013. Microsoft Teams is mainly used in large organizations and is integrated with Office 365 enhancing the feat
4 min read
Security in DevOps