Artikel ini akan membahas apa itu Terraform, konsep-konsep dasarnya, dan bagaimana cara memulainya dengan contoh praktis.

Apa itu Terraform?

Terraform adalah alat open-source buatan HashiCorp yang digunakan untuk membangun, mengubah, dan mengelola infrastruktur secara aman dan efisien menggunakan pendekatan Infrastructure as Code (IaC). Dengan Terraform, kita menuliskan konfigurasi infrastruktur—seperti server, jaringan, database, hingga load balancer—dalam bentuk kode, bukan melalui klik manual di console.

Beberapa keuntungan utama menggunakan Terraform:

  • Deklaratif — Kita cukup mendefinisikan kondisi akhir yang diinginkan, Terraform yang akan mencari tahu cara mencapainya.
  • Multi-cloud — Mendukung banyak provider seperti AWS, Google Cloud, Azure, hingga layanan on-premise.
  • Version control friendly — Karena berupa kode, konfigurasi bisa disimpan di Git dan direview seperti kode aplikasi biasa.
  • Reusable — Konfigurasi bisa dibuat modular dan dipakai ulang di berbagai proyek atau environment.
Konsep Dasar yang Perlu Dipahami

Sebelum praktik, ada beberapa istilah kunci dalam Terraform yang wajib dipahami:

1. Provider
Provider adalah plugin yang menghubungkan Terraform dengan platform tertentu, misalnya AWS, GCP, Azure, atau bahkan layanan seperti Cloudflare dan GitHub. Provider inilah yang menerjemahkan kode Terraform menjadi panggilan API ke masing-masing layanan.

2. Resource
Resource adalah komponen infrastruktur yang ingin kita buat atau kelola, misalnya instance virtual machine, bucket storage, atau security group.

3. State
Terraform menyimpan catatan kondisi infrastruktur yang sedang berjalan dalam file bernama terraform.tfstate. File ini penting karena menjadi acuan Terraform untuk mengetahui apa yang sudah dibuat, apa yang perlu diubah, dan apa yang perlu dihapus.

4. Plan dan Apply
terraform plan — Menampilkan pratinjau perubahan yang akan dilakukan sebelum benar-benar dieksekusi.
terraform apply — Mengeksekusi perubahan tersebut ke infrastruktur sungguhan.

Instalasi Terraform

Terraform tersedia untuk Windows, macOS, dan Linux. Berikut langkah instalasi di masing-masing sistem operasi:
macOS (menggunakan Homebrew):

bash
brew tap hashicorp/tap
brew install hashicorp/tap/terraform

Linux (Ubuntu/Debian):

bash
wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

Windows (menggunakan Chocolatey):

bash
choco install terraform

Setelah instalasi selesai, verifikasi dengan perintah:

bash
terraform -version

Praktik: Membuat Infrastruktur Pertama dengan Terraform

Sebagai contoh, kita akan membuat sebuah EC2 instance sederhana di AWS. Pastikan kredensial AWS (AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY) sudah dikonfigurasi di environment.
Langkah 1 — Buat Direktori Proyek

bash
mkdir belajar-terraform
cd belajar-terraform

Langkah 2 — Buat File Konfigurasi

Buat file bernama main.tf dengan isi berikut:

bash
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "ap-southeast-1"
}

resource "aws_instance" "server_belajar" {
  ami           = "ami-0672fd5b9210aa093"
  instance_type = "t2.micro"

  tags = {
    Name = "instance-belajar-terraform"
  }
}

Penjelasan singkat:

  • Blok terraform mendefinisikan provider yang dibutuhkan beserta versinya.
  • Blok provider "aws" menentukan region AWS yang digunakan.
  • Blok resource mendefinisikan resource yang ingin dibuat—dalam hal ini EC2 instance dengan tipe t2.micro.

Langkah 3 — Inisialisasi Terraform

bash
terraform init

Perintah ini akan mengunduh provider plugin yang dibutuhkan (dalam contoh ini, provider AWS).

Langkah 4 — Cek Rencana Perubahan

bash
terraform plan

Terraform akan menampilkan resource apa saja yang akan dibuat, tanpa benar-benar mengeksekusinya.

Langkah 5 — Terapkan Konfigurasi

bash
terraform destroy

Menggunakan Variabel agar Konfigurasi Lebih Fleksibel

Daripada menuliskan nilai secara hardcoded, sebaiknya gunakan variabel. Buat file variables.tf:

bash
variable "instance_type" {
  description = "Tipe instance EC2 yang digunakan"
  type        = string
  default     = "t2.micro"
}

Lalu panggil variabel tersebut di main.tf:

bash
resource "aws_instance" "server_belajar" {
  ami           = "ami-0672fd5b9210aa093"
  instance_type = var.instance_type
}

Dengan cara ini, konfigurasi menjadi lebih mudah disesuaikan tanpa mengubah kode utama—cukup ubah nilai variabel atau isi file terraform.tfvars.

Praktik Terbaik Menggunakan Terraform

  1. Simpan state file dengan aman. Untuk kerja tim, gunakan remote backend seperti AWS S3 atau Terraform Cloud, bukan menyimpan terraform.tfstate secara lokal.
  2. Gunakan version control. Simpan seluruh file .tf di Git agar histori perubahan dapat dilacak dan direview.
  3. Modularisasi konfigurasi. Untuk proyek besar, pecah konfigurasi menjadi module yang reusable.
  4. Selalu jalankan plan sebelum apply. Ini membantu mencegah perubahan yang tidak diinginkan pada infrastruktur produksi.
  5. Kunci versi provider. Menentukan versi provider secara eksplisit mencegah perubahan tak terduga akibat update otomatis.

Kesimpulan

Terraform memberikan cara yang lebih terstruktur, aman, dan dapat direplikasi untuk mengelola infrastruktur cloud dibandingkan konfigurasi manual. Dengan memahami konsep dasar seperti provider, resource, state, plan, dan apply, kita sudah punya modal cukup untuk mulai menerapkan Infrastructure as Code dalam proyek sehari-hari.

Langkah selanjutnya yang bisa dicoba adalah mempelajari remote state, modules, serta integrasi Terraform dengan pipeline CI/CD agar proses deployment infrastruktur menjadi lebih otomatis dan konsisten.