Menerapkan Terraform State di AWS Tanpa Drama DynamoDB
Kalau pernah ngerasain
terraform applyrame-rame bareng 2-3 orang sekaligus, tapi gak ada remote stateβ¦ selamat! Kamu udah unlock salah satu mode hardcore di dunia DevOps π
π― Latar Belakang
Section titled βπ― Latar BelakangβDi kantor lama, gua nemuin kasus yang (kayaknya) umum banget di banyak tim kecil: semua orang pegang Terraform, semua pake state lokal, dan yang paling krusial: gak ada yang apply barengβ¦ kecuali apply tanpa ngomong-ngomong.
Jadi, gua putusin buat ngerapiin sedikit. Target:
- Pisahin state masing-masing project ke satu backend rapi
- Simpen state di S3
- Tanpa pake DynamoDB (karena mager setupnya, dan ternyata udah gak perlu lagi)
π§± Struktur Proyek
Section titled βπ§± Struktur ProyekβDirectoryterraform-aws-project/
- providers.tf
- main.tf
- variables.tf
- backend-config.hcl
βοΈ Konfigurasi Backend S3 dengan use_lockfile
Section titled ββοΈ Konfigurasi Backend S3 dengan use_lockfileβDi setiap project (biasanya di providers.tf), tambahin:
terraform { backend "s3" { bucket = "fadharpra-terraform-state-bucket" region = "ap-southeast-1" key = "lockfile-test/terraform.tfstate" use_lockfile = true }}Atau bisa dipisah filenya, tinggal buat file baru namanya backend-config.hcl:
bucket = "fadharpra-terraform-state-bucket"key = "production/website.tfstate"region = "ap-southeast-1"use_lockfile = trueencrypt = trueYup, sejak Terraform 1.7+, kita bisa locking langsung di S3 β tanpa DynamoDB. Terraform otomatis bikin file
.lockdi bucket selamaapplyberlangsung.
π Langkah Setup
Section titled βπ Langkah Setupβterraform init -backend-config=../backend-config.hclterraform planterraform applyKalau ada orang lain yang apply barengan:
β Error: Error acquiring the state lockββ Error message: resource temporarily unavailableβ Lock Info:β ID: 6c4d7907-ccb1-15c3-2e68-80cc0459f2f4β Path: terraform.tfstateβ Operation: OperationTypeApplyβ Who: [email protected]β Version: 1.11.4β Created: 2025-05-19 06:36:42.430544 +0000 UTCβ Info:ββ ...π Artinya locking jalan.
π§ Kenapa Ini Penting?
Section titled βπ§ Kenapa Ini Penting?βKarena terraform.tfstate itu bukan file biasa. Dia nyimpen semua βrealitaβ dari resource yang pernah dibuat. Kalau dua orang apply bareng, walaupun resource-nya beda, bisa kacau karena:
- State gak tau resource baru dari orang lain
- Bisa kehapus, diubah, atau duplicate
Biar gak ada alasan βeh kok VM-nya ilang ya?β
π¬ Penutup
Section titled βπ¬ PenutupβBeresin struktur Terraform itu bukan kerja sekali. Tapi dengan langkah kecil kayak ini β pake S3, aktifin use_lockfile, dan pisahin per project β udah cukup buat ngehindarin 90% drama yang biasanya terjadi di tim kecil.
Kalau kalian punya cerita chaos pas terraform apply, drop di komentar atau connect bareng aja. Selalu seru ngobrolin kasus DevOps gini π