Site icon JocoDEV

Panduan Infrastructure as Code dengan Terraform untuk Developer

Rak server pusat data sebagai ilustrasi infrastructure as code dengan Terraform

Mengelola server, database, dan jaringan secara manual lewat dashboard memang terasa cepat di awal, tetapi lama-lama menjadi beban sendiri. Setiap kali infrastruktur berubah, tidak ada catatan yang konsisten tentang apa saja yang sudah dikonfigurasi, siapa yang mengubahnya, dan bagaimana cara memulihkannya jika terjadi masalah. Di sinilah infrastructure as code (IaC) berperan: kita mendeskripsikan infrastruktur layaknya kode program, sehingga bisa diversioning, direview, dan digunakan ulang.

Satu alat yang paling luas dipakai untuk keperluan ini adalah Terraform dari HashiCorp. Terraform memungkinkan kita membangun, mengubah, dan mengelola versi infrastruktur secara aman dan efisien, mulai dari komponen level rendah seperti instance komputasi, storage, dan jaringan, hingga komponen level tinggi seperti entri DNS. Artikel ini membahas konsep dasar Terraform, alur kerjanya, dan praktik terbaik yang perlu dipahami sebelum mengadopsinya di proyek nyata.

Apa Itu Infrastructure as Code?

Infrastructure as code adalah pendekatan di mana provisi dan konfigurasi infrastruktur IT dinyatakan dalam berkas kode yang bisa dibaca mesin, bukan lewat proses manual. Berkas kode tersebut disimpan di repository, di-versi bersama kode aplikasi, dan dieksekusi oleh alat otomatisasi untuk membuat atau mengubah resource di cloud maupun on-premise.

Tanpa IaC, tim biasanya mengandalkan klik manual di konsol cloud atau dokumen SSH yang cepat ketinggalan zaman. Beberapa masalah yang sering muncul:

Dengan IaC, semua masalah di atas bisa ditekan karena keadaan infrastruktur terdefinisi secara eksplisit dalam kode, dan setiap perubahan melewati proses review seperti perubahan kode aplikasi.

Mengapa Memilih Terraform?

Ada banyak alat IaC di pasaran, tetapi Terraform punya beberapa keunggulan yang membuatnya menjadi standar de facto di banyak organisasi.

Pertama, Terraform bersifat deklaratif. Kita hanya mendefinisikan keadaan akhir (desired state) yang diinginkan, dan Terraform yang menghitung cara mencapainya. Kita tidak perlu menulis langkah demi langkah seperti pada pendekatan imperatif.

Kedua, Terraform neutris terhadap platform. Melalui konsep provider, Terraform bisa mengelola resource di AWS, Google Cloud, Azure, hingga layanan seperti Cloudflare, Kubernetes, dan database. Relasi antar-provider pun bisa digabung dalam satu konfigurasi.

Ketiga, Terraform punya siklus kerja yang aman berkat perintah plan dan apply. Sebelum perubahan dieksekusi, Terraform menampilkan prediksi perubahan secara detail — apa yang akan dibuat, diubah, atau dihapus — sehingga bisa ditinjau lebih dulu.

Kalau ingin mendalami secara resmi, HashiCorp menyediakan dokumentasi Terraform yang lengkap di halaman dokumentasi Terraform di HashiCorp Developer. Di sana terdapat penjelasan tentang configuration language, Terraform CLI, hingga topik kolaborasi tim seperti HCP Terraform dan Terraform Enterprise.

Konsep Inti Terraform yang Wajib Dipahami

Sebelum menulis kode, ada empat konsep utama yang menjadi fondasi Terraform.

1. Configuration Language (HCL)

Terraform memakai HCL (HashiCorp Configuration Language), sintaks deklaratif yang mudah dibaca manusia. Berkas konfigurasi biasanya berekstensi .tf dan menjelaskan resource yang ingin dibangun:

resource "azurerm_resource_group" "contoh" {
  name     = "rg-jocodev"
  location = "Southeast Asia"
}

Contoh sederhana di atas membuat satu resource group di Azure. Struktur yang sama berlaku untuk provider lain — yang berubah hanya tipe resource dan argumennya.

2. Provider

Provider adalah plugin yang menjadi jembatan antara konfigurasi Terraform dan API platform tujuan. Setiap provider mengekspos resource dan data source milik platformnya. Provider dideklarasikan di blok terraform dan diunduh otomatis saat eksekusi terraform init.

3. State

Terraform mencatat keadaan infrastruktur yang nyata pada sebuah berkas state. Berkas inilah pembanding antara “yang tertulis di kode” dan “yang benar-benar ada” di cloud. Karena state berisi informasi sensitif dan harus konsisten, praktik yang disarankan adalah menyimpannya di remote backend (misalnya object storage) dan tidak pernah di-commit ke git.

4. Module

Module adalah wadah untuk mengemas konfigurasi agar dapat dipakai ulang. Alih-alih menyalin-tempel blok resource yang sama di banyak proyek, kita bisa membuat satu modul VPC misalnya, lalu memakainya di seluruh tim dengan parameter yang berbeda-beda. Terraform Registry menyediakan ribuan modul dan provider publik siap pakai.

Alur Kerja Dasar Terraform

Siklus kerja Terraform terdiri dari langkah-langkah yang konsisten dan mudah diotomasi:

  1. Tulis konfigurasi di berkas .tf yang mendeskripsikan infrastruktur tujuan.
  2. terraform init — menginisialisasi working directory, mengunduh provider, dan menyiapkan backend state.
  3. terraform plan — membuat rencana eksekusi dan menampilkan prediksi perubahan untuk direview.
  4. terraform apply — mengeksekusi rencana yang disetujui dan menyinkronkan infrastruktur sesuai konfigurasi.
  5. terraform destroy — menghapus seluruh resource yang dikelola konfigurasi tersebut, berguna untuk environment sementara seperti preview dan lab.

Karena alurnya seragam, Terraform sangat cocok diintegrasikan ke pipeline CI/CD: pull request memicu plan, dan merge ke branch utama memicu apply. Tidak ada perubahan infrastruktur yang lolos tanpa melalui review.

Praktik Terbaik Saat Menggunakan Terraform

Beberapa kebiasaan berikut membuat pengelolaan IaC jangka panjang jauh lebih sehat:

Prinsip otomasi ini sejalan dengan pola automasi berbasis script yang juga sering dipakai untuk menyederhanakan tugas sistem sehari-hari. Bedanya, Terraform bekerja pada tingkat infrastruktur secara deklaratif, bukan sekadar deretan perintah berurutan.

Terraform dalam Ekosistem DevOps Modern

Terraform tidak berdiri sendiri, melainkan menjadi satu bagian dari ekosistem DevOps. Contoh konkretnya: setelah infrastruktur ter-provision secara otomatis, aplikasi dapat dijalankan di atas container, lalu diatur jaringannya supaya hanya bisa diakses melalui jalur aman. Untuk bagian container, kamu bisa melihat perbandingan Podman vs Docker dan keunggulan masing-masing sebagai runtime container; sedangkan untuk konektivitas antar-server, panduan membangun VPN tunnel dengan WireGuard bisa menjadi titik awal yang bagus.

Kombinasi seperti ini — resource yang dikelola Terraform, workload di dalam container, dan akses jaringan yang terenkripsi — adalah pola umum infrastruktur cloud modern di mana proses dari provisioning hingga deployment sudah terotomasi penuh.

Kesimpulan

Infrastructure as code dengan Terraform mengubah cara kita membangun dan memelihara infrastruktur: dari klik manual yang rawan lupa menjadi kode yang tercatat, ter-review, dan dapat digunakan ulang. Dengan konsep konfigurasi deklaratif, provider lintas platform, state yang konsisten, dan module yang bisa dibagikan, Terraform membantu tim bergerak lebih cepat tanpa mengorbankan keamanan. Jika kamu baru mulai, langkah paling sederhana adalah meng-install Terraform CLI, menulis satu resource kecil, lalu membiasakan diri dengan siklus init, plan, dan apply — dan jadikan dokumentasi resmi HashiCorp sebagai rujukan utama saat bereksperimen lebih dalam.

Foto sampul oleh Taylor Vick di Unsplash.

Exit mobile version