Thuta Learning
ရှာဖွေရန်
ExercisesDevOpsintermediate

လက်တွေ့ လေ့ကျင့်ခန်း အစုံ ၂

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • လက်တွေ့ လေ့ကျင့်ခန်း အစုံ ၂ ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် terraform command/HCL code ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

ဒီ round က round ၁ ထက် အဆင့်မြင့်ပါတယ် — skill တစ်ခုချင်းစီကို ခွဲစမ်းမယ့်အစား တစ်ခါတည်း ပေါင်းသုံးရမှာပါ။ Module ကို ဘယ်လို layer ခွဲသင့်လဲ ဆုံးဖြတ်ခြင်း, `count` နဲ့ `for_each` ကို scenario အလိုက် ရွေးချယ်ခြင်း, production remote backend setup ကို document အနေနဲ့ ရေးဆွဲခြင်း — ဒါတွေ ပါဝင်ပါတယ်။ Task တစ်ခုကို ၁၀ မိနစ်ခန့် ယူပါ.

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Task 1: Web app project (network, compute, database, monitoring) ကို module ၄ ခု ဘယ်လို ခွဲမလဲ ဒီဇိုင်းရေးပြီး, module တစ်ခုစီရဲ့ input/output ဘာတွေဖြစ်သင့်လဲ ရေးပါ။ Task 2: Server ၅ လုံးကို 'server-1' to 'server-5' ဆိုတဲ့ fixed name (ဖျက်ပြင်ခဲရင် ကျန် server မထိခိုက်စေချင်) နဲ့ create ချင်ရင် `count` သုံးမလား `for_each` သုံးမလား ရွေးချယ်ပြီး ဘာကြောင့်လဲ ရှင်းပါ။ Task 3: Local state ကနေ S3 remote backend ဆီ migrate လုပ်ဖို့ step-by-step plan ရေးပါ (backup, migrate, verify အစီအစဉ်ပါ ထည့်ပါ)။ Task 4: 'CI pipeline က dev environment ကို auto-apply ခွင့်ပြု, production environment ကတော့ manual approval လိုချင်တယ်' ဆိုတဲ့ requirement အတွက် pipeline step အကြမ်းကို ရေးဆွဲပါ။

အတူတူ ကြည့်မယ်

text
# Task 2 - count vs for_each
Requirement: named servers, safe to remove one without
affecting the others -> use for_each (key-based), NOT count
(index-based) — removing an item from a list with count
shifts every subsequent index and can force unwanted recreates.

# Task 3 - local -> S3 backend migration
1. terraform state pull > backup.tfstate   (manual backup first)
2. Add the backend "s3" { ... } block to the config
3. terraform init                          (Terraform detects
   the backend change and offers to migrate state)
4. Confirm the migration prompt
5. terraform plan                          (should show 0 changes
   if migration succeeded — same resources, new state location)
You should see
Module layer ဒီဇိုင်း, count/for_each ဆုံးဖြတ်ချက်, remote backend migration plan နှင့် environment-scoped CI/CD flow ရရှိလာမည်။

၅ မိနစ် စမ်းကြည့်

Task 3 ရဲ့ migration plan ကို local `local_file` resource (Basic chapter) ပေါ်မှာ (local state ကနေ file-based simple backend တစ်ခုသို့ simulate migrate) အမှန်တကယ် run ကြည့်ပြီး, step တစ်ခုချင်းစီ ဘာဖြစ်လဲ မှတ်ကြည့်ပါ။

သတိလေးတစ်ချက်

Backend migration ကို production state ပေါ်မှာ လုပ်ခင် maintenance window (team အားလုံး apply မလုပ်ဖို့ သဘောတူထားတဲ့ အချိန်) ကို သတ်မှတ်ပါ — migration နဲ့ တစ်ချိန်တည်း တစ်ယောက်ယောက်က apply လုပ်နေရင် state conflict ဖြစ်နိုင်ပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Backend migration ကို backup မလုပ်ဘဲ တိုက်ရိုက် run ခြင်း — migration fail ဖြစ်ရင် state ပျောက်ဆုံးနိုင်ပါတယ်
  • count/for_each ရွေးချယ်ချက်ကို 'ရေးရလွယ်တာ' ကိုပဲ ကြည့်ပြီး ဆုံးဖြတ်ခြင်း (long-term maintainability ကို ထည့်မတွက်ခြင်း)

အခု ကိုယ်တိုင် စမ်းကြည့်

Task 3 ရဲ့ migration plan ကို local `local_file` resource (Basic chapter) ပေါ်မှာ (local state ကနေ file-based simple backend တစ်ခုသို့ simulate migrate) အမှန်တကယ် run ကြည့်ပြီး, step တစ်ခုချင်းစီ ဘာဖြစ်လဲ မှတ်ကြည့်ပါ။

You'll know it worked when: Module layer ဒီဇိုင်း, count/for_each ဆုံးဖြတ်ချက်, remote backend migration plan နှင့် environment-scoped CI/CD flow ရရှိလာမည်။

လက်တွေ့ လေ့ကျင့်ခန်း အစုံ ၂ | Thuta Learning