Setiap kali kamu menjalankan perintah terraform apply, Terraform tidak hanya mengirimkan perintah ke cloud provider, tetapi juga menyimpan catatan pemetaan antara file kode .tf milikmu dengan ID sumber daya nyata di cloud ke dalam sebuah file bernama terraform.tfstate.
Apa yang Terjadi Jika State File Hilang atau Terhapus?
Jika file terraform.tfstate terhapus dari laptopmu:
- Terraform akan mengira bahwa belum ada satu pun server yang pernah dibuat.
- Saat kamu menjalankan
terraform apply berikutnya, Terraform akan mencoba membuat ulang semua VPC dan server dari awal, yang berujung pada error bentrok nama atau tagihan ganda yang sangat membengkak!
Masalah Menyimpan State File di Laptop Lokal
- Tidak Bisa Kolaborasi Tim: Jika programmer A membuat server dari laptopnya, programmer B di laptop lain tidak memiliki file state tersebut.
- Bahaya Race Condition: Jika dua engineer menjalankan
terraform apply di waktu bersamaan, infrastruktur bisa rusak parah (corrupted).
- Bahaya Keamanan: File
.tfstate menyimpan seluruh nilai output dalam format teks biasa (JSON mentah), termasuk password database dan private key. Dilarang keras melakukan commit file .tfstate ke repositori publik GitHub!
Solusi Standar Enterprise: Remote Backend (AWS S3 + DynamoDB)
Untuk menyelesaikan masalah di atas, Terraform menyediakan mekanisme Remote Backend:
- AWS S3: Menyimpan file
terraform.tfstate di penyimpanan cloud yang aman, terenkripsi (SSE-AES256), dan memiliki fitur riwayat versi (versioning).
- AWS DynamoDB: Berfungsi sebagai State Locking. Ketika seorang engineer sedang menjalankan
apply, DynamoDB akan mengunci status state sehingga orang lain tidak bisa mengeksekusi perintah secara bersamaan.
Konfigurasi Remote Backend di main.tf
Langkah Migrasi dari Lokal ke Remote:
Setelah menambahkan blok backend di atas, jalankan perintah inisialisasi ulang:
Terraform akan secara otomatis menyalin file state lokalmu ke bucket S3 di cloud.
Jangan pernah mengedit isi file .tfstate menggunakan text editor biasa secara manual! Gunakan perintah resmi:
Last modified on October 26, 2026