ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
Config ထဲမှာ `instance_type = "t3.micro"` လို့ hardcode ရေးထားရင် environment (dev vs prod) ကူးတိုင်း code ကို manual ပြင်ရပါလိမ့်မယ် — Input Variable (`variable "name" { type = ... }`) ကို သုံးရင် value ကို run time မှာ ပေးပို့နိုင်ပါတယ် (command line flag, `.tfvars` file, environment variable, ဒါမှမဟုတ် default value)။ Variable ရဲ့ `type` (string, number, bool, list, map, object) ကို specify ထားရင် Terraform က value မှားရေးလိုက်ရင် apply မလုပ်ခင် error ပြပေးပါတယ်.
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
`variable "instance_type" { type = string; default = "t3.micro" }` လို့ define လုပ်ပြီး, resource block ထဲမှာ `instance_type = var.instance_type` လို့ reference လုပ်ရင်, `terraform apply -var="instance_type=t3.large"` (ဒါမှမဟုတ် `.tfvars` file) နဲ့ value ကို override လုပ်နိုင်ပါတယ် — dev environment အတွက် instance size သေးသေး, prod environment အတွက် instance size ကြီးကြီး ဆိုတာမျိုးကို config file တစ်ခုတည်းနဲ့ ကိုင်တွယ်လို့ရပါတယ်.
အတူတူ ကြည့်မယ်
variable "instance_type" {
description = "EC2 instance size"
type = string
default = "t3.micro"
}
variable "environment" {
type = string
}
resource "aws_instance" "web" {
instance_type = var.instance_type
tags = {
Environment = var.environment
}
}$ terraform apply -var="environment=staging"
var.instance_type
EC2 instance size
Enter a value: (uses default "t3.micro" if left blank)၅ မိနစ် စမ်းကြည့်
variable ၂ ခု (instance_type, environment) ကို define လုပ်ပြီး `-var` flag နဲ့ value ပေးပို့ကာ `terraform plan` run ကြည့်ပါ — value ကို default နဲ့ override ၂ မျိုးလုံး စမ်းကြည့်ပါ။
သတိလေးတစ်ချက်
`.tfvars` file ထဲမှာ sensitive value (password, API key) ရေးထားရင် git repository ထဲ commit မလုပ်မိအောင် `.gitignore` ထဲ ထည့်ထားပါ။