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 #
| Artikel | Topik Utama |
|---|---|
| Apa itu Variable? | Konsep input variable dan perannya dalam konfigurasi |
| Type & Validation | Type constraints (string, number, list, map, object) dan custom validation |
| File & Environment | Mengirim 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:#e1bee7Type 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:#fff3e0Validation 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.