[ Terraform Cloud ] How to Export or Backup Variables from Terraform Cloud to Local Machine
Infrastructure as a Code ဖြစ်တဲ့အတွက် Code တစ်ခု ပြင်လိုက်တိုင်းမှာ ကျွန်တော်တို့ရဲ့ Real World Infra အပေါ်မှာ Impact အရမ်းကြီးပါတယ်။ သုံးထားတဲ့ Variables တွေဆိုလည်းအဲ့လိုပါပဲ Variable တစ်ခုပေါ်မူတည်ပြီး Changes အများကြီးဖြစ်သွားနိုင်ပါတယ်။ Local မှာ Variable ထားပြီးသုံးတာ ပြဿနာ မဟုတ်ပေမယ့် Terraform Cloud ကိုပဲသုံးပြီး Variable ကိုလည်း Terraform Cloud Workspace မှာပဲ ထည့်ပြီးသုံးတယ်ဆိုရင် တစ်ခုသတိထားရမှာက Terraform Cloud Workspace ရဲ့ Variables တွေမှာ Version Control မရှိပါဘူး။ အဲ့တော့ ကျွန်တော်တို့က Variables ကို Changes လုပ်ပြီး Rollback ပြန်သွားချင်တာဖြစ်ဖြစ် အရင်အတိုင်းပြန်ထားချင်တာဖြစ်ဖြစ် တစ်ခုနှစ်ခုဆို ကိစ္စမရှိပေမယ့် Value တွေအများကြီး Update လုပ်မိတဲ့အခါ မှတ်မိဖို့ခက်ပါတယ်။ ကျွန်တော်ကတော့ Variables တွေ Update မလုပ်ခင် အမြဲ Backup လုပ်လေ့ရှိပါတယ်။
သာမာန်အားဖြင့်ဆိုရင် Terraform Cloud က Variable export ထုတ်တာ Support မပေးသေးပါဘူး။ ဒါကို ကျွန်တော်က API Call နဲ့ Variable တွေကိုလှမ်းခေါ်ဖို့ စ စဉ်းစားဖြစ်ရင်းဒီ Script လေးရေးထားဖြစ်တာပါ။
API Call အတွက်ကတော့ Terraform Cloud မှာရှိတဲ့ Origination Name ၊ Workspace Name နဲ့ အဲ့ Workspace ကို access ရတဲ့ terraform cloud account ရဲ့ api token လိုပါတယ်။
Token ကိုတော့ Account Settings > Tokens ဆိုတဲ့နေရာမှာ Generate လုပ်ပြီးရယူနိုင်ပါတယ်။
Script ကိုတော့ ဒီမှာကြည့်နိင်ပါတယ်။
https://github.com/wwwaiyan/terraform-cloud-variable-export
Bash Script ဖြစ်လို့ Linux, Mac နဲ့ Windows မှာဆို WSL သွင်းထားရင် Run လို့ရပါတယ်။ Prerequisite ကတော့ curl
နဲ့ jq
ဆိုတဲ့ Package လေးတွေသွင်းထားဖို့လိုပါမယ်။
Script ကို Run လိုက်ရင်တော့ Token အရင်တောင်းပါလိမ့်မယ် Token Copy ကူး ထည့်လိုက်ရင်တော့ Sensitive Text လုပ်ထားတာမလို့ ဘာမှ မပေါ်ရင် Enter ခေါက်ပြီးဆက်သွားနိုင်ပါတယ်။
ပြီးရင်တော့ လိုအပ်တဲ့ Origination Name နဲ့ Workspace Name ထည့်ပေးရမှာပါ နောက်ဆုံးမှာတော့ Save ချင်တဲ့ Filename ပေးလို့်ရပါတယ် မပေးချင်လည်း Default terraform.tfvars
ဆိုပြီး Save သွားပါလိမ့်မယ်။
Script ပြီးသွားတဲ့အခါ Terraform Cloud Workspace ပေါ်က Variables တွေရောက်လာပါလိမ့်မယ်။ Sensitive Data တွေပါရင်တော့ ဂရုစိုက်ဖို့လိုပါလိမ့်မယ်။
အိုကေဗျာ ဒါဆိုရင်တော့ Backup လည်းရပြီဆိုတော့ စိတ်ချလက်ချလည်း Changes လုပ်လို့ရပါပြီ။
Just for knowledge sharing …