Skip to main content
State di laptop lu oke buat demo solo, terus langsung berantakan pas orang kedua join. Cuma ada satu copy, gak ada yang lock pas apply lagi jalan, dan kalau laptopnya hilang, hilang juga satu-satunya catatan soal apa yang beneran ada. Tutorial ini mindahin state ke tempat yang bisa dishare tim dengan aman.

Kenapa state lokal gagal buat tim

  • Gak bisa dishare. plan/preview temen lu gak bisa liat state file lokal lu, jadi dia gak tau apa yang udah ada.
  • Gak ada locking. Dua orang jalanin apply/up di waktu yang sama bisa bikin state korup atau resource keduplikat.
  • Gak ada history. Gak ada catatan siapa yang jalanin apa, atau cara buat rollback ke state snapshot sebelumnya.
  • Gak durable. Satu laptop hilang, satu-satunya source of truth juga hilang.

Terraform: remote backend

Direkomendasiin buat pemula yang mau ke production: Terraform Cloud (HCP Terraform). Gratis buat tim kecil, nyimpen state secara remote, lock otomatis, dan nyimpen run history.
Pake tags, bukan name, kalau lu mau ini tetep jalan bareng pola terraform workspace new/select dari tutorial environments: name bikin konfigurasi lu nempel ke cuma satu HCP Terraform workspace, jadi gak ada apa-apa lagi buat di-switch sama terraform workspace new. Pake tags, tiap CLI workspace lokal ke-mapping ke HCP Terraform workspace-nya sendiri yang match.
Bentuk yang diterima buat tags udah berubah antar versi Terraform (list of strings di CLI release lama, map key/value di yang baru). Cek referensi block cloud HashiCorp yang paling baru buat versi yang lu install sebelum ngandelin syntax di atas persis kayak itu.
Jalanin terraform login sekali, terus terraform init migrasiin state lokal yang udah ada ke cloud workspace secara otomatis.
Block backend "s3" di Terraform jalan ke endpoint S3-compatible mana aja, gak cuma AWS. NEO Object Storage punya Biznet GIO sendiri itu S3-compatible, jadi state bisa diarahin ke bucket yang lu provision pake biznetgio_object_storage dan biznetgio_object_storage_bucket:
Backend S3 punya Terraform butuh endpoint storage-nya support conditional write biar locking-nya beneran jalan. Konfirmasi dulu ke support Biznet GIO apakah NEO Object Storage support behavior itu sebelum lu percaya ini buat tim yang jalanin apply bareng-bareng. Sampe lu konfirmasi, anggep setup ini cuma buat satu operator, bukan pengganti backend dengan locking yang udah terverifikasi kayak Terraform Cloud.

Pulumi: state backend

Default-nya Pulumi Cloud, dan ini yang udah dipake quickstart tanpa konfigurasi tambahan; jalanin pulumi login tanpa argumen bakal login ke sana. Dia nyimpen state, lock otomatis, nyimpen history, dan ngatur enkripsi secret buat lu. Free tier-nya udah cukup buat tim kecil.
Pulumi juga bisa nyimpen state di folder lokal atau bucket S3-compatible, kepake kalau lu mau state-nya bener-bener gak lewat Pulumi Cloud:
Caveat-nya sama kayak backend S3 di Terraform: konfirmasi dulu ke support Biznet GIO apakah write semantics endpoint storage-nya beneran ngasih locking yang aman buat concurrent sebelum lu andelin self-hosted bucket backend buat tim. Kalau ragu, pake Pulumi Cloud aja.
Self-managed backend juga butuh passphrase buat enkripsi secret, gantiin managed key punya Pulumi Cloud:
Kalau passphrase-nya hilang, lu kehilangan kemampuan buat decrypt secret config values; stack-nya masih bisa diupdate, tapi lu gak bisa baca secret-nya balik.

Mindahin state antar backend

Dua tools bisa export dan re-import snapshot, ini cara migrasi tanpa harus mulai dari nol:

Satu aturan yang lebih penting daripada backend mana yang lu pilih

Jangan pernah edit state file pake tangan. Kalau state sama kenyataan beda, betulin pake terraform import / pulumi import, atau sesuaiin konfigurasi lu biar match sama kenyataan, bukan buka file JSON-nya. Dan backend apapun yang lu pake, selalu jalanin plan/preview sebelum apply/up, biar ada yang liat diff-nya sebelum jadi kenyataan beneran, ini persis yang diautomasi sama tutorial CI/CD.

Langkah berikutnya