Mendalami mekanisme state management dalam Terraform — konsep paling kritis yang membedakan Terraform dari tool provisioning sederhana.

Apa yang Akan Dipelajari? #

State adalah file JSON yang merekam mapping antara konfigurasi Terraform Anda dan resource aktual di infrastructure. State management yang buruk adalah penyebab #1 masalah di production Terraform. Section ini membahas semua aspek state dari local hingga remote, dari locking hingga migration.

Artikel dalam Section Ini #

ArtikelTopik Utama
LocalState file lokal — cara kerja dan keterbatasannya
RemoteRemote backend (S3, GCS, Azure Blob) untuk team collaboration
LockingMencegah concurrent operation yang merusak state
ImportMembawa resource existing ke dalam Terraform state
MigrationMemindahkan state antar backend atau reorganisasi
Anti-PatternKesalahan umum dalam state management yang harus dihindari

State Flow #

flowchart TD
    subgraph Write Path
        TF["Terraform Apply"] --> SF["State File"]
        SF -->|Lock| RB["Remote Backend<br/>(S3, GCS, Azure)"]
    end

    subgraph Read Path
        TP["Terraform Plan"] -->|Read| SF2["Read State"]
        SF2 -->|Compare| API["Cloud API<br/>(Actual State)"]
    end

    subgraph Drift
        API -->|Diff| Drift["Drift Detected"]
        Drift -->|Inform| TP
    end

    TF --> TP

    style Write Path fill:#e3f2fd
    style Read Path fill:#e8f5e9
    style Drift fill:#fff3e0

Local vs Remote State #

flowchart LR
    subgraph Local["Local State"]
        LS["terraform.tfstate<br/>Di local machine"]
        LR["Hanya untuk<br/>solo developer"]
    end

    subgraph Remote["Remote State"]
        RS["Backend: S3, GCS,<br/>Azure Blob, Terraform Cloud"]
        RL["Locking built-in"]
        RV["Version history"]
        RT["Team collaboration"]
    end

    Local -->|"Migrate"| Remote

    style Local fill:#ffebee
    style Remote fill:#e8f5e9

State Anti-Patterns #

flowchart TD
    AP1["❌ Manual edit state file"] --> FIX1["✅ Gunakan terraform state mv/rm"]
    AP2["❌ Shared state file tanpa locking"] --> FIX2["✅ Remote backend + locking"]
    AP3["❌ Store secrets di state"] --> FIX3["✅ Encrypt state + limit access"]
    AP4["❌ No state backup"] --> FIX4["✅ Enable versioning di backend"]

    style AP1 fill:#ffebee
    style AP2 fill:#ffebee
    style AP3 fill:#ffebee
    style AP4 fill:#ffebee
    style FIX1 fill:#e8f5e9
    style FIX2 fill:#e8f5e9
    style FIX3 fill:#e8f5e9
    style FIX4 fill:#e8f5e9

State management yang baik adalah fondasi dari Terraform yang reliable di production. Lanjutkan ke Security untuk mempelajari cara melindungi state file dan secrets.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact