Memahami cara membuat konfigurasi Terraform yang fleksibel dan reusable menggunakan input variables, type constraints, dan validation rules.

Apa yang Akan Dipelajari? #

Variable memungkinkan Anda memparameter konfigurasi Terraform sehingga bisa digunakan di berbagai environment tanpa mengubah kode. Section ini membahas deklarasi variable, type system, validation, dan berbagai cara mengirim nilai variable.

Artikel dalam Section Ini #

ArtikelTopik Utama
Apa itu Variable?Konsep input variable dan perannya dalam konfigurasi
Type & ValidationType constraints (string, number, list, map, object) dan custom validation
File & EnvironmentMengirim nilai lewat .tfvars, environment variable, dan CLI flags

Variable Priority #

flowchart TD
    A["1. -var flag<br/>terraform apply -var='name=value'"] --> B["2. .tfvars file<br/>terraform.tfvars"]
    B --> C["3. .auto.tfvars<br/>*.auto.tfvars"]
    C --> D["4. TF_VAR_ env var<br/>export TF_VAR_name=value"]
    D --> E["5. Default value<br/>default = 'value'"]
    E --> F["6. Interactive prompt<br/>Terraform bertanya"]

    style A fill:#ffcdd2
    style B fill:#ffe0b2
    style C fill:#fff9c4
    style D fill:#c8e6c9
    style E fill:#b3e5fc
    style F fill:#e1bee7

Type System #

flowchart LR
    subgraph Primitive
        S["string<br/>'hello'"]
        N["number<br/>42, 3.14"]
        B["bool<br/>true, false"]
    end

    subgraph Collection
        L["list(string)<br/>['a', 'b', 'c']"]
        M["map(number)<br/>{a=1, b=2}"]
        S2["set(string)<br/>['a', 'b']"]
    end

    subgraph Complex
        O["object({<br/>  name=string<br/>  age=number<br/>})"]
        TU["tuple([<br/>  string, number<br/>])"]
    end

    style Primitive fill:#e3f2fd
    style Collection fill:#e8f5e9
    style Complex fill:#fff3e0

Validation Example #

variable "instance_type" {
  type        = string
  description = "EC2 instance type"

  validation {
    condition     = can(regex("^t3\.", var.instance_type))
    error_message = "Instance type harus dari family t3."
  }
}

Setelah memahami variable, pelajari Output untuk mengetahui cara mengekspos informasi dari konfigurasi Terraform.

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