Cloud Computing 4 min read

Terraform: Infrastructure as Code

Terraform enables declarative, code‑driven provisioning of cloud resources such as VPCs, virtual hosts, load balancers, databases, and storage across multiple providers, simplifying infrastructure management through reusable providers and modules, version control, and state tracking, thereby reducing manual configuration effort.

System Architect Go
System Architect Go
System Architect Go
Terraform: Infrastructure as Code

Terraform: Infrastructure as Code

Problem

Nowadays many IT systems use cloud‑provider services directly. Suppose we need to build the following infrastructure:

VPC network

Virtual host

Load balancer

Database

File storage

In a public‑cloud environment, should we configure these resources manually through the provider’s web console?

Doing so becomes cumbersome, especially as the number and complexity of resources grow and span multiple cloud environments, creating a huge management challenge.

Terraform

To solve the above problem, Terraform was created.

With Terraform, we only need to write simple declarative code, for example:

resource "alicloud_db_instance" "instance" {
  engine           = "MySQL"
  engine_version   = "5.6"
  instance_type    = "rds.mysql.s1.small"
  instance_storage = "10"
  ...
}

Running a few Terraform commands then easily creates an Alibaba Cloud database instance.

This is the essence of Infrastructure as Code : managing and configuring infrastructure through code rather than manual processes.

According to the official documentation, Terraform offers several advantages over manual management:

It can manage resources across multiple cloud platforms.

Its human‑readable declarative language speeds up writing infrastructure code.

The state file tracks resource changes throughout deployments.

Infrastructure code can be version‑controlled for safe collaboration.

Provider & Module

You might wonder how writing declarative code results in actual resources. In short, Terraform calls the APIs of the underlying infrastructure platforms during execution.

Each platform packages its resource operations into a provider , similar to a dependency library in a programming language.

Referencing a provider in Terraform looks like this:

terraform {
  required_providers {
    alicloud = {
      source  = "aliyun/alicloud"
      version = "1.161.0"
    }
  }
}

provider "alicloud" {
  # Configuration options
}

Just as we extract reusable code into libraries, Terraform lets us extract reusable infrastructure definitions into modules . Modules can be written locally or sourced from third‑party repositories.

Conclusion

This article only scratches the surface; for more details on Terraform, please refer to the official documentation and other resources.

cloudModuleIaCTerraformInfrastructure as CodeProvider
System Architect Go
Written by

System Architect Go

Programming, architecture, application development, message queues, middleware, databases, containerization, big data, image processing, machine learning, AI, personal growth.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.