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
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
- terraform-aws-project/
- providers.tf
- main.ts
- variables.ts
- backend-config.hcl
- README.md
- modules/
- network/
- main.tf
- variables.tf
- compute/
- main.tf
- outputs.tf
- network/
βοΈ Konfigurasi Backend S3 dengan use_lockfile
Pastiin bucket fadharpra-terraform-state-bucket (atau bucket kalian sendiri) udah dibuat terlebih dulu, karena file key seperti lockfile-test/terraform.tfstate akan disimpan di dalam bucket tersebut dan dibaca saat Terraform apply.
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 = true
encrypt = true
Yup, sejak Terraform 1.7+, kita bisa locking langsung di S3 β tanpa DynamoDB. Terraform otomatis bikin file
.lockdi bucket selamaapplyberlangsung.
π Langkah Setup
terraform init -backend-config=../backend-config.hcl
terraform plan
terraform apply
Kalau 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: fadhliari@MacBook-Air-Fadhli.local
β Version: 1.11.4
β Created: 2025-05-19 06:36:42.430544 +0000 UTC
β Info:
β
β ...
π Artinya locking jalan.
π§ 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
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 π