How to use terraform for infrastructure as code

April 11, 2025
3 min read
By Cojocaru David & ChatGPT

Table of Contents

This is a list of all the sections in this post. Click on any of them to jump to that section.

index

How to Use Terraform for Infrastructure as Code: A Step-by-Step Guide

Terraform is the leading Infrastructure as Code (IaC) tool for automating and managing cloud infrastructure across AWS, Azure, Google Cloud, and more. In this guide, you’ll learn how to use Terraform for Infrastructure as Code—from installation to writing configurations, executing workflows, and following best practices. Whether you’re a DevOps engineer or a cloud professional, this step-by-step tutorial will help you deploy and scale infrastructure efficiently.

What Is Terraform and Why Use It?

Terraform, developed by HashiCorp, is an open-source IaC tool that lets you define infrastructure using declarative configuration files (HCL). Instead of manually setting up servers, networks, and databases, Terraform automates provisioning with code.

Key Benefits of Terraform

  • Multi-Cloud Support: Manage AWS, Azure, GCP, and hybrid environments in one workflow.
  • Declarative Syntax: Define what your infrastructure should look like—Terraform handles the how.
  • State Management: Track infrastructure changes to prevent configuration drift.
  • Modularity: Reuse code across projects with Terraform modules.

“Terraform turns infrastructure into software, making deployments predictable and scalable.” – DevOps Engineer

How to Install and Set Up Terraform

Before writing configurations, follow these steps to install Terraform:

  1. Download Terraform: Get the latest version from HashiCorp’s website.
  2. Install the CLI: Add Terraform to your system’s PATH for global command access.
  3. Configure Cloud Credentials: Set up authentication (e.g., AWS IAM roles, Azure Service Principals).

Verify your installation by running:

terraform --version  

Writing Your First Terraform Configuration

A Terraform file (.tf) defines resources like servers, networks, and databases. Here’s a basic example for an AWS EC2 instance:

provider "aws" {  
  region = "us-east-1"  
}  
 
resource "aws_instance" "web_server" {  
  ami           = "ami-0c55b159cbfafe1f0"  
  instance_type = "t2.micro"  
  tags = {  
    Name = "MyFirstTerraformInstance"  
  }  
}  

Key Components Explained

  • Provider Block: Configures the cloud platform (AWS, Azure, etc.).
  • Resource Block: Defines the infrastructure (e.g., EC2 instance).
  • Variables & Outputs: Make configurations dynamic and reusable.

The Terraform Workflow: Plan, Apply, Destroy

Terraform’s core workflow ensures safe and controlled deployments:

  1. terraform init: Downloads provider plugins and sets up the backend.
  2. terraform plan: Shows what changes will be made (preview before applying).
  3. terraform apply: Deploys the infrastructure (requires confirmation).
  4. terraform destroy: Removes all managed resources (use cautiously).

Terraform Best Practices for Scalable IaC

Follow these industry-proven tips to optimize your Terraform usage:

1. Use Modules for Reusability

Break configurations into modules (e.g., network/, database/) for cleaner code.

2. Store State Remotely

Use AWS S3 or Terraform Cloud to share state files securely across teams.

3. Version Control Everything

Track changes in Git to collaborate and roll back if needed.

4. Enforce Policies with Sentinel

Integrate policy-as-code to ensure compliance (e.g., “No public S3 buckets”).

5. Use Variables for Flexibility

Externalize settings like region or instance size for environment-specific deployments.

#terraform #infrastructureascode #devops #cloudcomputing #automation