Artikel ini akan membahas apa itu Terraform, konsep-konsep dasarnya, dan bagaimana cara memulainya dengan contoh praktis.
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.
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.
Terraform tersedia untuk Windows, macOS, dan Linux. Berikut langkah instalasi di masing-masing sistem operasi:
macOS (menggunakan Homebrew):
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Linux (Ubuntu/Debian):
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):
choco install terraform
Setelah instalasi selesai, verifikasi dengan perintah:
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
mkdir belajar-terraform
cd belajar-terraform
Langkah 2 — Buat File Konfigurasi
Buat file bernama main.tf dengan isi berikut:
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
terraformmendefinisikan provider yang dibutuhkan beserta versinya. - Blok
provider "aws"menentukan region AWS yang digunakan. - Blok
resourcemendefinisikan resource yang ingin dibuat—dalam hal ini EC2 instance dengan tipet2.micro.
Langkah 3 — Inisialisasi Terraform
terraform init
Perintah ini akan mengunduh provider plugin yang dibutuhkan (dalam contoh ini, provider AWS).
Langkah 4 — Cek Rencana Perubahan
terraform plan
Terraform akan menampilkan resource apa saja yang akan dibuat, tanpa benar-benar mengeksekusinya.
Langkah 5 — Terapkan Konfigurasi
terraform destroy
Menggunakan Variabel agar Konfigurasi Lebih Fleksibel
Daripada menuliskan nilai secara hardcoded, sebaiknya gunakan variabel. Buat file variables.tf:
variable "instance_type" {
description = "Tipe instance EC2 yang digunakan"
type = string
default = "t2.micro"
}
Lalu panggil variabel tersebut di main.tf:
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
- Simpan state file dengan aman. Untuk kerja tim, gunakan remote backend seperti AWS S3 atau Terraform Cloud, bukan menyimpan
terraform.tfstatesecara lokal. - Gunakan version control. Simpan seluruh file
.tfdi Git agar histori perubahan dapat dilacak dan direview. - Modularisasi konfigurasi. Untuk proyek besar, pecah konfigurasi menjadi module yang reusable.
- Selalu jalankan
plansebelumapply. Ini membantu mencegah perubahan yang tidak diinginkan pada infrastruktur produksi. - 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.
BengkelKode