Mempelajari cara mengelola multiple environment (dev, staging, production) dengan Terraform secara efisien dan konsisten.

Apa yang Akan Dipelajari? #

Mengelola multiple environment adalah tantangan nyata dalam Terraform. Section ini membahas berbagai strategi — dari directory-based approach hingga workspace — beserta kelebihan dan kekurangan masing-masing.

Artikel dalam Section Ini #

ArtikelTopik Utama
Apa itu Environment?Konsep environment dalam konteks IaC
Jenis EnvironmentDev, staging, production — karakteristik dan kebutuhan masing-masing
Directory BasedMenggunakan struktur folder terpisah untuk setiap environment
WorkspaceMenggunakan Terraform Workspace untuk multi-environment

Environment Strategy #

flowchart TD
    subgraph Directory["Directory-Based"]
        D_ROOT["root/<br/>├── dev/<br/>├── staging/<br/>└── production/"]
        D_PRO["Explicit separation"]
        D_CON["More files to maintain"]
    end

    subgraph Workspace["Workspace-Based"]
        W_ROOT["Single config<br/>+ workspace select"]
        W_PRO["Less duplication"]
        W_CON["Hidden differences"]
    end

    subgraph Terragrunt["Terragrunt"]
        T_ROOT["DRY config<br/>+ per-env overrides"]
        T_PRO["Best of both"]
        T_CON["Extra tool"]
    end

    D_ROOT -->|"Alternatif"| W_ROOT
    W_ROOT -->|"Alternatif"| T_ROOT

    style Directory fill:#e3f2fd
    style Workspace fill:#e8f5e9
    style Terragrunt fill:#fff3e0

Directory-Based Structure #

flowchart TD
    subgraph Shared["Shared Modules"]
        MOD_VPC["modules/vpc/"]
        MOD_EC2["modules/ec2/"]
    end

    subgraph Dev["environments/dev/"]
        DEV_MAIN["main.tf<br/>instance_type = t3.micro"]
    end

    subgraph Prod["environments/production/"]
        PROD_MAIN["main.tf<br/>instance_type = t3.xlarge"]
    end

    MOD_VPC --> Dev
    MOD_VPC --> Prod
    MOD_EC2 --> Dev
    MOD_EC2 --> Prod

    style Shared fill:#f3e5f5
    style Dev fill:#e8f5e9
    style Prod fill:#fff3e0

Environment Comparison #

flowchart LR
    subgraph Dev["Development"]
        D_INST["t3.micro"]
        D_HA["Single AZ"]
        D_BACKUP["No backup"]
        D_MONITOR["Basic monitoring"]
    end

    subgraph Prod["Production"]
        P_INST["t3.xlarge"]
        P_HA["Multi-AZ"]
        P_BACKUP["30-day backup"]
        P_MONITOR["Full monitoring"]
    end

    Dev -->|"Promote"| Prod

    style Dev fill:#e8f5e9
    style Prod fill:#fff3e0

Setelah memahami environment, lanjutkan ke Multi Provider untuk mempelajari cara menggunakan beberapa cloud provider sekaligus.

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