Open In App

Terraform Syntax With Examples

Last Updated : 16 Jul, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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.


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads