What is Terraform?

Mikaeel KhalidMikaeel Khalid
4 min read

Terraform is a popular open-source infrastructure as code (IAC) tool that enables developers to provision, manage, and version their infrastructure resources in a predictable and automated manner. With Terraform, you can define your infrastructure using a simple, human-readable configuration language called HashiCorp Configuration Language (HCL), and then provision and manage your resources across multiple cloud providers, including AWS, Azure, and Google Cloud.

One of the main benefits of using Terraform is that it allows you to manage your infrastructure resources in a single, unified way, regardless of which cloud provider you're using. This makes it easy to move your resources between cloud providers or to create multi-cloud infrastructures.

Before we dive into an example of how to use Terraform, let's go over the installation process.

  • The first step is to download the Terraform binary from the Terraform website (https://www.terraform.io/downloads.html) based on your operating system.

  • After downloading, extract the binary and add it to your system's PATH so that you can run the terraform command from anywhere.

  • Verify the installation by running terraform -v in your command-line interface.

Now that you have Terraform installed, let's go over an example of how to use it to create a simple AWS infrastructure that consists of an Amazon S3 bucket and an Amazon EC2 instance.

First, create a new directory for your Terraform configuration files, and create a file called main.tf inside that directory. This file will contain your Terraform configuration.

Add the following HCL code to the main.tf file:

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

resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-bucket"
}

resource "aws_instance" "my_instance" {
  ami           = "ami-0323c3dd2da7fb37d"
  instance_type = "t2.micro"
}

This code defines an AWS provider, an S3 bucket, and an EC2 instance, all in the us-east-1 region.

To create the resources, you need to run:

terraform init
terraform plan
terraform apply

This will create the S3 bucket and EC2 instance in your AWS account.

To delete the resources, you can run:

terraform destroy

This will delete the S3 bucket and EC2 instance from your AWS account.

That's it! You've just created and managed a simple AWS infrastructure using Terraform. With Terraform, you can manage your infrastructure resources in a single, unified way, version control your infrastructure, and automate your infrastructure provisioning and management.

I hope this blog post has given you a good overview of what Terraform is, how to install it, and an example of how to use it to create and manage cloud infrastructure. In this example, we've created a simple infrastructure consisting of an S3 bucket and an EC2 instance, but in reality, Terraform can be used to manage a wide range of resources and even complex multi-tier infrastructures.

It's worth mentioning that Terraform uses a state file to keep track of the current state of the infrastructure, which is stored on the local machine or a remote backend like an S3 bucket. This state file is used to compare the current state of the infrastructure to the desired state defined in the configuration files, and it allows Terraform to determine what actions need to be taken to reach the desired state.

Another important aspect of Terraform is modules, which are reusable packages of Terraform configurations that allow you to organize and abstract your Terraform code. This makes it easy to reuse and share your infrastructure configurations.

One thing to keep in mind when using Terraform is that its configuration files are not dynamically updated. So if you make a change to a resource and want to apply that change, you need to explicitly specify it in the configuration files, otherwise, Terraform will not be aware of it.

To wrap up, Terraform is a powerful tool for provisioning and managing cloud infrastructure, it can be used to provision and manage infrastructure for multiple cloud providers, and it's extremely useful for organizations with multiple teams to define and manage their infrastructure. With its ability to version control, automate provisioning, and abstract infrastructure resources into reusable modules, Terraform can make it much easier to manage your infrastructure as code.

0
Subscribe to my newsletter

Read articles from Mikaeel Khalid directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Mikaeel Khalid
Mikaeel Khalid

I am a Software and Certified AWS & GCP Engineer, I am passionate about solving complex technical problems. My goal here is to help others by sharing my learning journey.