Di episode pamungkas ini kita akan merancang arsitektur OpenTofu production-grade untuk enterprise: OpenTofu Engine dengan state encryption berbasis AWS KMS, dynamic provider iteration, reusable modules, framework tofu test, Terragrunt dan Digger dengan GitHub Actions OIDC, gerbang policy OPA, hingga drift detection otomatis. Lengkap dengan checklist kesiapan produksi dan panduan code review.

Di episode 19 sebelumnya kita membahas Disaster Recovery & Encrypted State Recovery, memastikan bahwa bahkan ketika KMS key bermasalah, infrastruktur tetap bisa dipulihkan. Kini saatnya merangkai semuanya. Selama 20 episode kita telah membangun kemampuan satu per satu — dari pre-requisites di episode 0 hingga DR di episode 19 — dan di episode pamungkas ini semuanya bersatu.
Di episode 20 kali ini, kita akan merancang Complete Production-Grade Enterprise OpenTofu Architecture. Kita akan menggabungkan OpenTofu Engine, native client-side state encryption dengan AWS KMS, dynamic provider iteration, reusable modules, framework tofu test, Terragrunt dan Digger dengan GitHub Actions OIDC, gerbang policy OPA, serta drift detection otomatis. Kita tutup dengan checklist kesiapan produksi dan panduan code review.
Arsitektur enterprise bukan tentang satu tool, melainkan tentang bagaimana tool-tool bekerja sebagai satu sistem. Alur produksinya menjadi:
tofu test.Setiap lapisan ini sudah kita bangun di episode sebelumnya — sekarang kita hanya menyatukannya.
Fondasi arsitektur adalah OpenTofu Engine itu sendiri, dikombinasikan dengan native client-side state encryption menggunakan AWS KMS:
terraform {
backend "s3" {
bucket = "org-opentofu-state"
key = "prod/opentofu.tfstate"
region = "ap-southeast-1"
encrypt = true
dynamodb_table = "opentofu-state-lock"
}
encryption {
key_provider "aws_kms" "main" {
kms_key_id = "arn:aws:kms:ap-southeast-1:123456789012:key/kms-key"
}
method "aes_gcm" "main" {
keys = key_provider.aws_kms.main
}
state {
method = method.aes_gcm.main
}
}
}State disimpan di S3 dengan versioning, dikunci lewat DynamoDB, dan dienkripsi dua lapis: server-side di S3 dan client-side oleh OpenTofu. Bahkan jika bucket bocor, state tetap berupa ciphertext yang tidak bisa dibaca tanpa key KMS.
Seluruh resource hidup di dalam modules, dan provider dikonfigurasi secara dinamis untuk mendukung banyak region dan environment. Seperti yang kita pelajari di episode 7 dan 10:
include "root" {
path = find_in_parent_folders()
}
terraform {
source = "../modules/vpc"
}
inputs = {
env = "prod"
}Dengan Terragrunt, backend dan provider dikonfigurasi sekali di root, lalu setiap environment (dev, staging, prod) cukup menunjuk module yang sama — tanpa menyalin konfigurasi. Dynamic provider iteration melengkapi ini sehingga satu modul bisa menyebar ke banyak region sekaligus.
Sebelum kode menyentuh cloud, kualitasnya dipastikan dengan framework test bawaan OpenTofu:
run "bucket_private" {
command = apply
assert {
condition = google_storage_bucket.assets.force_destroy == false
error_message = "Bucket assets tidak boleh force_destroy"
}
}Test ini memvalidasi invariant penting — bucket tidak boleh bisa dihancurkan secara tidak sengaja. Dengan tofu test, assertion berjalan di pipeline tanpa memerlukan bahasa pemrograman eksternal seperti Terratest.
Seluruh alur otomatis berjalan di GitHub Actions menggunakan OIDC — tanpa menyimpan kredensial AWS statis. Workflow berikut merangkum pipeline lengkap enterprise:
name: opentofu-pipeline
on:
pull_request:
push:
branches: [main]
schedule:
- cron: "0 6 * * *"
permissions:
id-token: write
contents: read
pull-requests: write
jobs:
pipeline:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: opentofu/setup-opentofu@v1
- name: Configure AWS OIDC
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/github-oidc
aws-region: ap-southeast-1
- name: Format, validate & test
run: |
tofu fmt -recursive -check
tofu validate
tofu test
- name: Security scan
run: checkov -d .
- name: OPA policy gate
run: |
tofu plan -out=plan.tfplan
tofu show -json plan.tfplan > plan.json
opa eval --data policy/ --input plan.json \
--fail-defined "data.infra.security.deny"
- name: Apply to production
if: github.event_name == 'push'
run: tofu apply plan.tfplan -auto-approvePerhatikan tiga lapis perlindungan di atas: tofu fmt -check dan tofu validate untuk kualitas, checkov untuk keamanan statis, dan gerbang OPA untuk compliance. Langkah apply hanya berjalan pada event push ke branch utama — yang artinya setiap perubahan produksi telah melewati review PR terlebih dahulu. Sementara itu, trigger schedule mengaktifkan drift detection setiap pagi, seperti yang kita rancang di episode 18.
Tip
Untuk workflow yang lebih kolaboratif, manfaatkan Digger — yang kita perkenalkan di episode 14 — sehingga output tofu plan diposting langsung sebagai komentar di PR. Approve di komentar akan memicu apply, menjaga seluruh interaksi tetap berada di dalam GitHub tanpa SaaS eksternal.
Sebelum arsitektur ini disebut production-grade, pastikan semua item berikut terpenuhi:
tofu test berjalan di pipeline untuk setiap PR.Code review infrastruktur memerlukan mata yang berbeda dari review aplikasi. Beberapa hal yang wajib diperiksa:
tofu plan menunjukkan perubahan yang sesuai ekspektasi?prevent_destroy untuk resource kritis.sensitive = true dan tidak pernah dicetak?tofu fmt sudah bersih dan nama variabel konsisten?Warning
Jangan pernah menyetujui PR yang mengubah resource produksi tanpa melihat output plan. Jika pipeline menyediakan plan sebagai artifact atau komentar PR, pastikan plan tersebut benar-benar diperiksa sebelum tombol merge ditekan.
Selamat — kalian telah mencapai episode terakhir. Mari kita tengok kembali seluruh perjalanan:
tofu init, tofu plan, tofu apply.tofu test.Pada episode 20 ini, kita telah merancang Complete Production-Grade Enterprise OpenTofu Architecture — fondasi state terenkripsi dengan AWS KMS, dynamic provider iteration, reusable modules, framework tofu test, Terragrunt dan Digger dengan GitHub Actions OIDC, gerbang policy OPA, hingga drift detection otomatis — ditutup dengan checklist kesiapan produksi dan panduan code review.
Key takeaway:
tofu test menjamin kualitas, Checkov menjaga keamanan, OPA menjaga compliance.Perjalanan kalian dimulai dari menjalankan tofu init pertama di episode 2, dan kini berakhir dengan kemampuan merancang arsitektur yang setara dengan yang digunakan perusahaan kelas dunia. OpenTofu adalah bukti bahwa infrastruktur open-source sepenuhnya bisa menjadi tulang punggung produksi — tanpa lock-in, tanpa biaya lisensi tersembunyi, dan dengan komunitas yang terus berkembang.
Terima kasih sudah bertahan hingga episode ke-20. Jangan berhenti di sini — terapkan yang kalian pelajari di project nyata, bagikan ilmu ke sesama engineer, dan teruslah membangun. Sampai jumpa di series berikutnya!