Apa itu Terraform? #
Infrastruktur modern terlalu kompleks untuk dikelola secara manual. Setiap kali kamu membuat server, mengatur jaringan, atau mengkonfigurasi database lewat UI cloud provider, kamu meninggalkan proses yang tidak terdokumentasi, sulit diulang, dan rawan error. Terraform hadir untuk menyelesaikan masalah ini — dengan cara mendefinisikan seluruh infrastruktur dalam bentuk kode yang bisa dibaca, diverifikasi, dan dijalankan secara konsisten. Artikel ini menjelaskan apa itu Terraform, bagaimana cara kerjanya, dan mengapa ini menjadi pilihan utama di industri.
Definisi Terraform #
Terraform adalah tool open-source buatan HashiCorp yang memungkinkan kamu mendefinisikan infrastruktur cloud dalam bentuk kode deklaratif. Kode ini disebut konfigurasi Terraform, ditulis dalam bahasa HCL (HashiCorp Configuration Language), dan bisa dijalankan untuk membuat, mengubah, atau menghapus infrastruktur secara otomatis.
Konsep ini dikenal sebagai Infrastructure as Code (IaC) — memperlakukan infrastruktur seperti kode software: bisa di-version control, di-review, dan di-test.
# Contoh konfigurasi Terraform paling sederhana
# Membuat sebuah S3 bucket di AWS
resource "aws_s3_bucket" "contoh" {
bucket = "nama-bucket-saya"
}
Dengan kode di atas, Terraform tahu bahwa kamu ingin ada sebuah S3 bucket. Terraform yang akan mengurus sisanya — memanggil AWS API, menunggu bucket selesai dibuat, dan mencatat hasilnya.
Masalah yang Diselesaikan Terraform #
Sebelum tool seperti Terraform ada, tim infrastructure mengandalkan cara-cara manual yang penuh masalah.
MASALAH INFRASTRUKTUR MANUAL:
✗ Klik-klik di console cloud provider — tidak terdokumentasi
✗ Script bash ad-hoc — tidak idempoten, sulit di-maintain
✗ Konfigurasi berbeda di setiap environment (dev ≠ staging ≠ prod)
✗ Tidak ada audit trail — siapa yang buat apa, kapan?
✗ Disaster recovery lambat — harus rebuild manual dari awal
DENGAN TERRAFORM:
✓ Infrastruktur terdefinisi dalam file .tf — bisa di-commit ke Git
✓ Setiap perubahan bisa di-review sebelum dijalankan
✓ Environment dev, staging, dan prod bisa identik
✓ Rebuild infrastruktur dari nol hanya butuh satu perintah
✓ Riwayat perubahan tersimpan di version control
Cara Kerja Terraform #
Terraform bekerja dalam tiga langkah utama yang membentuk siklus kerjanya.
Kamu menulis konfigurasi (.tf)
│
▼
terraform plan
(Terraform membandingkan konfigurasi dengan state saat ini,
lalu menampilkan rencana perubahan)
│
▼
terraform apply
(Terraform menjalankan perubahan — memanggil API provider
sesuai rencana yang sudah disetujui)
│
▼
State tersimpan
(Terraform mencatat kondisi infrastruktur ke dalam state file
sebagai referensi untuk operasi berikutnya)
Alur ini konsisten di semua provider dan semua skala — baik kamu mengelola 1 resource maupun 1000 resource.
HCL — Bahasa Konfigurasi Terraform #
Konfigurasi Terraform ditulis dalam HCL (HashiCorp Configuration Language). HCL dirancang agar mudah dibaca manusia sekaligus mudah diproses mesin.
# Struktur dasar konfigurasi Terraform
# 1. Mendefinisikan provider yang digunakan
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
# 2. Mengkonfigurasi provider
provider "aws" {
region = "ap-southeast-1"
}
# 3. Mendefinisikan resource
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890"
instance_type = "t3.micro"
tags = {
Name = "web-server"
Environment = "production"
}
}
Setiap blok dalam HCL memiliki tujuan yang jelas: terraform untuk konfigurasi global, provider untuk koneksi ke layanan eksternal, dan resource untuk infrastruktur yang ingin kamu kelola.
Multi-Provider — Satu Tool untuk Semua Cloud #
Salah satu keunggulan Terraform dibanding tool sejenis adalah kemampuannya bekerja dengan ratusan provider berbeda dari satu konfigurasi yang sama.
# Terraform bisa mengelola multi-cloud sekaligus dalam satu workspace
# Resource di AWS
resource "aws_s3_bucket" "storage" {
bucket = "app-storage-prod"
}
# Resource di Cloudflare
resource "cloudflare_record" "dns" {
zone_id = var.cloudflare_zone_id
name = "app"
value = aws_instance.web.public_ip
type = "A"
}
# Resource di GitHub
resource "github_repository" "app" {
name = "my-app"
description = "Repository aplikasi utama"
visibility = "private"
}
Provider tersedia untuk AWS, GCP, Azure, Kubernetes, Cloudflare, GitHub, Datadog, dan ratusan layanan lainnya — semuanya bisa dikelola dengan syntax HCL yang sama.
Ringkasan #
- Terraform adalah IaC tool — infrastruktur didefinisikan sebagai kode HCL, bukan diklik manual di console.
- Bekerja secara deklaratif — kamu mendefinisikan apa yang diinginkan, Terraform yang menentukan bagaimana mencapainya.
- Siklus kerja: write → plan → apply — setiap perubahan bisa dilihat dan disetujui sebelum dijalankan.
- Multi-provider — satu tool untuk mengelola AWS, GCP, Azure, Kubernetes, dan ratusan layanan lain secara bersamaan.
- State sebagai sumber kebenaran — Terraform menyimpan kondisi infrastruktur aktual untuk dibandingkan dengan konfigurasi yang kamu tulis.
- Cocok untuk semua skala — dari satu server sederhana hingga infrastruktur multi-region yang kompleks.