ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

Terraform developer များသည် AWS အခြေခံအဆောက်အအုံနှင့် လုပ်ဆောင်ရန်အတွက် အတော်လေး အဆင်ပြေသော အကောင်းဆုံး အလေ့အကျင့်များကို ပေးဆောင်နေပုံရသည်။ ထူးခြားချက်တစ်ခုပဲ ရှိတယ်။ အချိန်ကြာလာသည်နှင့်အမျှ၊ ပတ်ဝန်းကျင်၏ အရေအတွက်သည် တိုးလာကာ တစ်ခုစီတွင် ကိုယ်ပိုင်အင်္ဂါရပ်များရှိသည်။ အပလီကေးရှင်းအစုစု၏ မိတ္တူနီးပါးသည် အနီးအနားဒေသတွင် ပေါ်လာသည်။ Terraform ကုဒ်ကို လိုအပ်ချက်များအသစ်အရ ဂရုတစိုက် ကူးယူ တည်းဖြတ်ရန် လိုအပ်သည် သို့မဟုတ် နှင်းပွင့်အဖြစ် ပြုလုပ်ထားသည်။

ကြီးမား၍ ရှည်လျားသော ပရောဂျက်များအတွက် ပရမ်းပတာနှင့် လက်စွဲလုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများအကြောင်း ကျွန်ုပ်၏အစီရင်ခံစာ။

ဗီဒီယိုများ:

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

အသက် 40 ၊ IT မှာ နှစ် 20 ရှိပါပြီ။ Ixtens မှာ အလုပ်လုပ်နေတာ ၁၂ နှစ်ရှိပါပြီ။ ကျွန်ုပ်တို့သည် e-commerce-driven-development တွင် ပါဝင်ဆောင်ရွက်နေပါသည်။ ပြီးတော့ ကျွန်တော် DevOps အလေ့အကျင့်တွေကို 12 နှစ်ကြာ လေ့ကျင့်ခဲ့တယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ကျွန်ုပ်၏ဇာတ်လမ်းသည် ထုတ်ဖော်ပြောဆိုခြင်းမရှိသော သဘောတူညီချက်နောက်ကွယ်တွင် ဖုံးကွယ်ထားသော နာမည်မပြောနိုင်သော ကုမ္ပဏီတစ်ခုရှိ ပရောဂျက်တစ်ခုတွင် ကျွန်ုပ်၏အတွေ့အကြုံအကြောင်းဖြစ်သည်။

ပရောဂျက်၏စကေးကို နားလည်ရန်အတွက် ဆလိုက်ပေါ်ရှိ နံပါတ်များကို ညွှန်ပြထားသည်။ နောက်ပြောမယ့် အရာအားလုံးဟာ Amazon နဲ့ သက်ဆိုင်ပါတယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ကျွန်တော် ဒီပရောဂျက်ကို လွန်ခဲ့တဲ့ 4 နှစ်လောက်က ပါဝင်ခဲ့တယ်။ ပရောဂျက်ကြီးထွားလာသောကြောင့် အခြေခံအဆောက်အအုံ ပြန်လည်ပြင်ဆင်ရေးမှာ အပြည့်အ၀ရှိနေပါသည်။ သုံးတဲ့ပုံစံတွေက အဆင်မပြေတော့ဘူး။ ပရောဂျက်၏ စီစဉ်ထားသော တိုးတက်မှုအားလုံးကို ဖြည့်ဆည်းပေးခြင်းဖြင့် အသစ်အဆန်းများ ထွက်ပေါ်လာရန် လိုအပ်ပါသည်။

မနေ့က Dodo Pizza မှာဖြစ်ပျက်ခဲ့တာတွေကို ပြောပြပေးတဲ့ Matvey ကို ကျေးဇူးတင်ပါတယ်။ ဒါက လွန်ခဲ့တဲ့ ၄ နှစ်လောက်က ဒီမှာ ဖြစ်ပျက်ခဲ့တာ။

Developer တွေ လာပြီး အခြေခံ အဆောက်အအုံ ကုဒ်ကို စလုပ်တယ်။

ဤအရာကို လိုအပ်သည့် အထင်ရှားဆုံးအကြောင်းရင်းမှာ စျေးကွက်ရှာဖွေရန် အချိန်ဖြစ်သည်။ DevOps အဖွဲ့သည် စတင်ရောင်းချချိန်တွင် ပိတ်ဆို့မှုမရှိကြောင်း သေချာစေရန် လိုအပ်ပါသည်။ ထို့အပြင် Terraform နှင့် Puppet ကို ပထမအဆင့်တွင် အသုံးပြုခဲ့သည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

Terraform သည် HashiCorp မှ open source ပရောဂျက်တစ်ခုဖြစ်သည်။ ဒါက ဘာလဲဆိုတာတောင် မသိတဲ့သူတွေအတွက် နောက်ဆလိုက်အနည်းငယ်ပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ကုဒ်အဖြစ် အခြေခံအဆောက်အဦဆိုသည်မှာ ကျွန်ုပ်တို့၏အခြေခံအဆောက်အအုံများကို ဖော်ပြနိုင်ပြီး ကျွန်ုပ်တို့ဖော်ပြခဲ့သည့်အရင်းအမြစ်များကို ရရှိကြောင်းသေချာစေရန် စက်ရုပ်အချို့ကို တောင်းဆိုနိုင်သည်။

ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် virtual machine တစ်ခုလိုအပ်သည်။ ကျွန်ုပ်တို့သည် လိုအပ်သော ဘောင်များစွာကို ထည့်သွင်းဖော်ပြပါမည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

၎င်းပြီးနောက်၊ ကျွန်ုပ်တို့သည် console တွင် Amazon သို့ဝင်ရောက်ခွင့်ကို configure လုပ်ပါမည်။ ကျွန်ုပ်တို့သည် Terraform အစီအစဉ်ကို တောင်းဆိုပါမည်။ Terraform အစီအစဉ်က "ကောင်းပြီ၊ မင်းရဲ့အရင်းအမြစ်အတွက် ဒီအရာတွေကို ငါတို့လုပ်နိုင်တယ်။" ပြီးတော့ အနည်းဆုံး အရင်းအမြစ် တစ်ခု ထပ်ထည့်မယ်။ ပြီးတော့ အပြောင်းအလဲတွေ မျှော်လင့်မထားဘူး။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

သင်အရာရာတိုင်းကို ပျော်ရွှင်ကျေနပ်သည်နှင့် Terraform ကို လျှောက်ထားရန် သင်တောင်းဆိုနိုင်ပြီး Terraform သည် သင့်အတွက် စံနမူနာတစ်ခုကို ဖန်တီးပေးမည်ဖြစ်ပြီး သင့် cloud တွင် virtual machine တစ်ခုကို ရရှိမည်ဖြစ်သည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ထို့အပြင် ကျွန်ုပ်တို့၏ ပရောဂျက်ကို ဖော်ဆောင်လျက်ရှိသည်။ အဲဒီမှာ အပြောင်းအလဲတချို့ ထပ်ထည့်နေတယ်။ နောက်ထပ် သာဓကတွေ တောင်းပါတယ်၊ 53 ထည့်သွင်းထားပါတယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ပြီးတော့ ငါတို့ ထပ်လုပ်တယ်။ အစီအစဉ်ဆွဲပါ။ ဘယ်လို အပြောင်းအလဲတွေ စီစဉ်ထားလဲဆိုတာကို ကျွန်တော်တို့ မြင်ပါတယ်။ လျှောက်ထားတယ်။ ဤသည်မှာ ကျွန်ုပ်တို့၏ အခြေခံအဆောက်အအုံ ကြီးထွားလာပုံပင်ဖြစ်သည်။

Terraform သည် state files ဟုခေါ်သော အရာတစ်ခုကို အသုံးပြုသည်။ ဆိုလိုသည်မှာ၊ Amazon သို့သွားသော ပြောင်းလဲမှုအားလုံးကို သင်ဖော်ပြခဲ့သည့် အရင်းအမြစ်တစ်ခုစီအတွက် Amazon တွင် ဖန်တီးထားသည့် ဆက်စပ်အရင်းအမြစ်များ ရှိသည့် ဖိုင်တစ်ခုတွင် သိမ်းဆည်းထားသည်။ ထို့ကြောင့်၊ အရင်းအမြစ်တစ်ခု၏ဖော်ပြချက်ပြောင်းလဲသောအခါ၊ Terraform သည် Amazon တွင်ပြောင်းလဲရန်လိုအပ်သည်များကိုအတိအကျသိသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဤပြည်နယ်ဖိုင်များသည် မူလက ဖိုင်များသာဖြစ်သည်။ ပြီးတော့ အဲဒါတွေကို Git မှာ သိမ်းထားတယ်၊ အဲဒါက အရမ်းအဆင်မပြေဘူး။ တစ်စုံတစ်ယောက်သည် အပြောင်းအလဲများပြုလုပ်ရန် အမြဲမေ့လျော့သွားပြီး ပဋိပက္ခများစွာ ပေါ်ပေါက်ခဲ့သည်။

ယခုအခါတွင် နောက်ခံဖိုင်ကို အသုံးပြု၍ရနိုင်သည်၊ ဆိုလိုသည်မှာ Terraform သည် မည်သည့်ပုံးနှင့် မည်သည့်သော့ဖြင့် ပြည်နယ်ဖိုင်ကို သိမ်းဆည်းသင့်သည်ကို သတ်မှတ်ထားသည်။ ပြီးတော့ Terraform ကိုယ်တိုင်က ဒီပြည်နယ်ဖိုင်ကို ရယူပြီး မှော်ပညာအားလုံးကို လုပ်ဆောင်ပြီး နောက်ဆုံးရလဒ်ကို ပြန်ထုတ်ပေးပါလိမ့်မယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ကျွန်ုပ်တို့၏ အခြေခံအဆောက်အအုံသည် ကြီးထွားလာသည်။ ဤသည်မှာ ကျွန်ုပ်တို့၏ကုဒ်ဖြစ်သည်။ ယခုကျွန်ုပ်တို့သည် virtual machine တစ်ခုကိုဖန်တီးလိုခြင်းမဟုတ်ပါ၊ ကျွန်ုပ်တို့သည်စမ်းသပ်မှုပတ်ဝန်းကျင်တစ်ခုရှိလိုပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

Terraform သည် သင့်အား module တစ်ခုကဲ့သို့ ဖန်တီးနိုင်စေသည်၊ ဆိုလိုသည်မှာ၊ အချို့သောဖိုင်တွဲများတွင် တူညီသောအရာကို ဖော်ပြပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဥပမာအားဖြင့်၊ စမ်းသပ်ခြင်းတွင်၊ ဤ module ကိုခေါ်ဆိုပြီး ကျွန်ုပ်တို့သည် Terraform ကို ကွပ်မျက်ပြီး မော်ဂျူးကိုယ်တိုင်တွင် ကျင့်သုံးခြင်းကဲ့သို့ တူညီသောအရာကို ရယူပါ။ စမ်းသပ်ရန်အတွက် ဤကုဒ်ရှိပါမည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ထုတ်လုပ်မှုအတွက်၊ ကျွန်ုပ်တို့သည် စမ်းသပ်ရာတွင် ကြီးမားသော သာဓကများ မလိုအပ်သောကြောင့်၊ ထုတ်လုပ်မှုတွင်၊ ကြီးမားသော သာဓကများသည်သာ အသုံးဝင်သောကြောင့် ထိုနေရာတွင် ပြောင်းလဲမှုအချို့ကို ပေးပို့နိုင်ပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ပြီးရင် ပရောဂျက်ကို ပြန်သွားမယ်။ ဒါဟာ ခက်ခဲတဲ့အလုပ်တစ်ခုဖြစ်ပြီး စီစဉ်ထားတဲ့ အခြေခံအဆောက်အအုံက အလွန်ကြီးမားပါတယ်။ ထို့အပြင်၊ လူတိုင်းအတွက် အဆင်ပြေစေရန်အတွက် ကုဒ်အားလုံးကို တနည်းနည်းနဲ့ ထားရန် လိုအပ်ပါသည်- ဤကုဒ်ကို ပြုပြင်ထိန်းသိမ်းသည့် သူများအတွက်ရော အပြောင်းအလဲပြုလုပ်သူများအတွက်ရော။ ဆော့ဖ်ဝဲရေးသားသူ မည်သူမဆို ပလပ်ဖောင်း၏အစိတ်အပိုင်းအတွက် လိုအပ်သလို အခြေခံအဆောက်အဦများကို ပြုပြင်နိုင်စေရန် စီစဉ်ထားပါသည်။

သင့်တွင် ကြီးမားသောပရောဂျက်တစ်ခုရှိလျှင် ၎င်းသည် HashiCorp ကိုယ်တိုင်က အကြံပြုထားသည့် လမ်းညွှန်သစ်ပင်ဖြစ်ပြီး အခြေခံအဆောက်အအုံတစ်ခုလုံးကို အပိုင်းသေးလေးများခွဲကာ သီးခြားဖိုင်တွဲတစ်ခုတွင် အပိုင်းတစ်ပိုင်းစီဖော်ပြရန် သင့်လျော်ပါသည်။

အရင်းအမြစ်များ ကျယ်ပြောလှသော စာကြည့်တိုက်ရှိခြင်း ၊ စမ်းသပ်ခြင်းနှင့် ထုတ်လုပ်ခြင်းတွင် ခန့်မှန်းခြေအားဖြင့် တူညီသောအရာကို သင်ခေါ်ဆိုနိုင်ပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ကျွန်ုပ်တို့၏အခြေအနေတွင်၊ ၎င်းသည် ဆော့ဖ်ဝဲအင်ဂျင်နီယာများအတွက် စမ်းသပ်မှု သို့မဟုတ် စမ်းသပ်မှုအတွက် တစ်နည်းနည်းဖြင့် ပိုမိုရိုးရှင်းစွာရယူရသောကြောင့် ကျွန်ုပ်တို့၏အခြေအနေတွင်၊ ၎င်းသည် လုံး၀မသင့်လျော်ပါ။ ဒါပေမယ့် ဖိုင်တွဲတွေကို ဖြတ်မသွားဘဲ လိုအပ်တဲ့ အတွဲလိုက်မှာ မသုံးချင်ဘဲ ဒေတာဘေ့စ်တက်လာမှာကို စိုးရိမ်ပြီး ဒီဒေတာဘေ့စ်ကို အသုံးပြုတဲ့ သာဓကတွေ တက်လာမှာကို စိုးရိမ်မိပါတယ်။ ထို့ကြောင့်၊ စမ်းသပ်မှုအားလုံးကို ဖိုင်တွဲတစ်ခုမှ စတင်ခဲ့သည်။ တူညီသော module များကို ထိုနေရာတွင် ခေါ်သော်လည်း အရာအားလုံးကို တစ်ကြိမ်တည်းတွင် ပြီးမြောက်ခဲ့သည်။

Terraform သည် မှီခိုမှုအားလုံးကို ဂရုစိုက်သည်။ ထို့အပြင်၊ သင်သည် အသစ်ဖန်တီးထားသော ဥပမာတစ်ခုမှ IP လိပ်စာတစ်ခုရနိုင်စေရန်နှင့် route53 မှတ်တမ်းတွင် ဤ IP လိပ်စာကို ရယူနိုင်ရန် ၎င်းသည် အစဉ်လိုက်အရင်းအမြစ်များကို အမြဲတမ်းဖန်တီးပေးပါသည်။

ထို့အပြင် ပလက်ဖောင်းသည် အလွန်ကြီးမားသည်။ တစ်နာရီကြာလျှင်ပင် ၈ နာရီကြာလျှင်ပင် စမ်းသပ်မှုတစ်ခုကို စတင်ခြင်းသည် အလွန်စျေးကြီးသောလုပ်ငန်းဖြစ်သည်။

ပြီးတော့ ငါတို့က ဒီကိစ္စကို အလိုအလျောက်လုပ်တယ်။ ပြီးတော့ Jenkins အလုပ်က ကျွန်တော်တို့ကို stack ကို run စေတယ်။ ၎င်းတွင်၊ developer သည် စမ်းသပ်လိုသော အပြောင်းအလဲများနှင့် လိုအပ်သော ရွေးချယ်မှုများ၊ အစိတ်အပိုင်းများနှင့် အတိုင်းအတာအားလုံးကို သတ်မှတ်ဖော်ပြရန် လိုအပ်ပါသည်။ သူသည် စွမ်းဆောင်ရည်စမ်းသပ်မှုကို လိုချင်ပါက၊ သာဓကများ ပိုယူနိုင်သည်။ ဖောင်ပုံစံအချို့ဖွင့်ထားသည်ကို စစ်ဆေးရန် လိုအပ်ပါက အနည်းဆုံးအခကြေးငွေဖြင့် စတင်နိုင်သည်။ ထို့အပြင် အစုအဖွဲ့တစ်ခု လိုအပ်သည် ရှိ၊ မရှိ၊ စသည်တို့ကိုလည်း ဖော်ပြပါ။

ထို့နောက် Jenkins သည် Terraform ဖိုဒါရှိ ကုဒ်ကို အနည်းငယ်ပြုပြင်ထားသည့် shell script တစ်ခုကို တွန်းလိုက်သည်။ မလိုအပ်သောဖိုင်များကို ဖယ်ရှားပြီး လိုအပ်သောဖိုင်များကို ထပ်ထည့်ပါသည်။ ထို့နောက် Terraform ၏ run တစ်ချက်ဖြင့် stack ကိုမြှင့်ထားသည်။

ပြီးတော့ ငါမလုပ်ချင်တဲ့ တခြားအဆင့်တွေ ရှိသေးတယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

စမ်းသပ်ခြင်းအတွက် ကျွန်ုပ်တို့သည် ထုတ်လုပ်ခြင်းထက် ရွေးချယ်စရာအနည်းငယ်ပိုလိုသောကြောင့်၊ ဤကော်ပီများတွင် စမ်းသပ်ရန်အတွက်သာ လိုအပ်သော အင်္ဂါရပ်များကို ထည့်သွင်းနိုင်စေရန်အတွက် မော်ဂျူးများ၏ မိတ္တူများကို ကူးယူရမည်ဖြစ်သည်။

စမ်းသပ်ခြင်းတွင် နောက်ဆုံးတွင် ထုတ်လုပ်ရေးသို့ ရောက်သွားမည့် ထိုပြောင်းလဲမှုများကို စမ်းသပ်လိုသည်မှာ ဖြစ်ပျက်သွားပါသည်။ ဒါပေမယ့် တကယ်တမ်းတော့ တစ်ချက်စမ်းသပ်ပြီးတာနဲ့ အနည်းငယ်ကွဲပြားတဲ့တစ်ခုကို ထုတ်လုပ်မှုမှာ အသုံးပြုခဲ့ပါတယ်။ ထုတ်လုပ်မှုတွင် ပြောင်းလဲမှုအားလုံးကို စစ်ဆင်ရေးအဖွဲ့မှ ကျင့်သုံးသည့်ပုံစံတွင် ကွဲလွဲမှုအနည်းငယ်ရှိခဲ့သည်။ တစ်ခါတရံမှာ စမ်းသပ်မှုကနေ ထုတ်လုပ်မှုအထိ လုပ်ဆောင်ရမယ့် အပြောင်းအလဲတွေက အခြားဗားရှင်းမှာ ကျန်ရှိနေခဲ့ပါတယ်။

ထို့အပြင်၊ ရှိပြီးသားဝန်ဆောင်မှုအချို့နှင့် အနည်းငယ်ကွဲပြားသည့် ဝန်ဆောင်မှုအသစ်တစ်ခု ထပ်ထည့်လိုက်သည့် ပြဿနာတစ်ခုရှိသည်။ ရှိပြီးသား module တစ်ခုကို မွမ်းမံမည့်အစား၊ ၎င်းကို မိတ္တူကူးပြီး လိုအပ်သော အပြောင်းအလဲများကို ထည့်ရပါမည်။

အခြေခံအားဖြင့်၊ Terraform သည် တကယ့်ဘာသာစကားမဟုတ်ပါ။ ဒါက ကြေငြာချက်ပါ။ တစ်ခုခုကို ကြေငြာဖို့ လိုရင် ကြေညာမယ်။ အားလုံးအလုပ်လုပ်ပါတယ်။

တစ်ချိန်ချိန်တွင်၊ ကျွန်ုပ်၏ဆွဲတင်တောင်းဆိုမှုများထဲမှ တစ်ခုကို ဆွေးနွေးနေချိန်တွင်၊ ကျွန်ုပ်၏ လုပ်ဖော်ကိုင်ဖက်တစ်ဦးမှ နှင်းပွင့်များကို ဖန်တီးရန် မလိုအပ်ကြောင်း ပြောကြားခဲ့ပါသည်။ သူဘာကိုဆိုလိုသည်ကို ကျွန်တော်သိချင်သည်။ ကမ္ဘာပေါ်တွင် တူညီသော နှင်းပွင့်နှစ်ပွင့်မျှမရှိသော သိပ္ပံပညာအရ ၎င်းတို့အားလုံးသည် အနည်းငယ်ကွဲပြားပါသည်။ ဒါကိုကြားပြီးတာနဲ့ Terraform ကုဒ်ရဲ့ အလေးချိန်အပြည့်ကို ချက်ချင်းခံစားလိုက်ရတယ်။ ဗားရှင်းတစ်ခုမှ ဗားရှင်းတစ်ခုသို့ ရွှေ့ရန် လိုအပ်သောအခါတွင် Terraform သည် ဖောက်ထွင်းကွင်းဆက်ပြောင်းလဲမှုများ လိုအပ်ပြီး ဆိုလိုသည်မှာ ကုဒ်သည် နောက်ဗားရှင်းနှင့် လိုက်ဖက်မှုမရှိတော့ပါ။ Terraform ၏နောက်ထပ်ဗားရှင်းသို့ အခြေခံအဆောက်အအုံကို ယူဆောင်လာရန်အတွက် အခြေခံအဆောက်အအုံအတွင်းရှိ ဖိုင်များ၏ ထက်ဝက်နီးပါးကို လွှမ်းခြုံထားသည့် ဆွဲထုတ်တောင်းဆိုမှုတစ်ခု ပြုလုပ်ရမည်ဖြစ်သည်။

ထိုသို့သော နှင်းပွင့်များ ပေါ်လာပြီးနောက်၊ ကျွန်ုပ်တို့ ရေးထားသော Terraform ကုဒ်အားလုံးသည် ကြီးမား၍ ကြီးမားသော နှင်းထုကြီးအဖြစ်သို့ ပြောင်းလဲသွားသည်။

လည်ပတ်မှုပြင်ပတွင်ရှိသော ပြင်ပ developer တစ်ဦးအတွက်၊ ၎င်းသည် သူ့အတွက် အရေးမကြီးပါ၊ သူဆွဲထုတ်ရန် တောင်းဆိုမှုကြောင့်၊ သူ၏ အရင်းအမြစ်ကို စတင်ခဲ့သည်။ ဒါပါပဲ၊ သူ့အတွက် စိုးရိမ်စရာတော့ မရှိပါဘူး။ အားလုံးအဆင်ပြေကြောင်းသေချာစေသော DevOps အဖွဲ့သည် ဤပြောင်းလဲမှုအားလုံးကိုပြုလုပ်ရန် လိုအပ်ပါသည်။ ပြီးတော့ ဒီပြောင်းလဲမှုတွေရဲ့ ကုန်ကျစရိတ်က နှင်းပွင့်တစ်ခုစီတိုင်းနဲ့ အများကြီး တိုးလာပါတယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဆွေးနွေးပွဲတစ်ခုတွင် ကျောင်းသားတစ်ဦးသည် ကျောက်သင်ပုန်းပေါ်တွင် မြေဖြူခဲဖြင့် ပြီးပြည့်စုံသော စက်ဝိုင်းနှစ်ခုကို ဆွဲပုံနှင့်ပတ်သက်၍ ပုံပြင်တစ်ပုဒ်ရှိသည်။ သံလိုက်အိမ်မြှောင်မပါဘဲ ချောမွေ့စွာဆွဲနိုင်ပုံကို ဆရာမအံ့သြမိသည်။ ကျောင်းသားက “သိပ်ရိုးစင်းပါတယ်၊ ငါက အသားကြိတ်စက်နဲ့ စစ်တပ်မှာ နှစ်နှစ်ကြာအောင် နေခဲ့ရတာ။”

ဒီပရောဂျက်မှာ ပါဝင်ခဲ့တဲ့ လေးနှစ်အထဲက Terraform ကို နှစ်နှစ်လောက် လုပ်ခဲ့တယ်။ ထို့အပြင်၊ ကျွန်ုပ်တွင် လှည့်ကွက်အချို့၊ Terraform ကုဒ်ကို ရိုးရှင်းအောင်ပြုလုပ်နည်းအတွက် အကြံဉာဏ်အချို့၊ ပရိုဂရမ်းမင်းဘာသာစကားတစ်ခုကဲ့သို့ ၎င်းနှင့်အလုပ်လုပ်ပြီး ဤကုဒ်ကို နောက်ဆုံးရထားရမည့် developer များအတွက် ဝန်ထုပ်ဝန်ပိုးကို လျှော့ချပေးပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ကျွန်တော် ပထမဆုံး စပြောချင်တာက Symlinks ပါ။ Terraform တွင် ထပ်တူထပ်မျှသော ကုဒ်များစွာရှိသည်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် အခြေခံအဆောက်အအုံတစ်ခု ဖန်တီးသည့်နေရာတိုင်းနီးပါးတွင် ဝန်ဆောင်မှုပေးသူကို ခေါ်ဆိုမှုသည် အတူတူပင်ဖြစ်သည်။ ပြီးတော့ သီးခြား folder ထဲမှာ ထည့်ထားရတာ ယုတ္တိရှိပါတယ်။ ဝန်ဆောင်မှုပေးသူသည် ဤဖိုင်သို့ Symlinks ပြုလုပ်ရန် မည်သည့်နေရာတွင်မဆို လိုအပ်သည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဥပမာအားဖြင့်၊ ထုတ်လုပ်မှုတွင် သင်သည် ပြင်ပ Amazon အကောင့်အချို့သို့ ဝင်ရောက်ခွင့်ကို ရရှိစေမည့် ယူဆချက်အခန်းကဏ္ဍကို အသုံးပြုသည်။ ဖိုင်တစ်ဖိုင်ကို ပြောင်းလိုက်ခြင်းဖြင့်၊ အရင်းအမြစ်သစ်ပင်ရှိ ကျန်ဖိုင်အားလုံးသည် Terraform မှ မည်သည့် Amazon အပိုင်းကို ဝင်ရောက်ရမည်ကို သိရှိနိုင်ရန် လိုအပ်သော အခွင့်အရေးများ ရရှိမည်ဖြစ်သည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

Symlinks ဘယ်မှာပျက်သလဲ ငါပြောခဲ့သလိုပဲ Terraform မှာ ပြည်နယ်ဖိုင်တွေရှိတယ်။ ပြီးတော့ သူတို့က အရမ်းမိုက်တယ်။ သို့သော်အရာမှာ Terraform သည်ပထမနေရာတွင် backend ကိုစတင်ခြင်းဖြစ်သည်။ ထို့အပြင် ဤဘောင်များတွင် မည်သည့်ကိန်းရှင်ကိုမျှ အသုံးမပြုနိုင်ပါ၊ ၎င်းတို့ကို အမြဲတမ်း စာသားဖြင့် ရေးသားရမည်ဖြစ်သည်။

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

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ငါတို့ဘာဆက်လုပ်နိုင်မလဲ။ Terraform နှင့် အလုပ်မလုပ်မီ၊ သင်သည် ၎င်းကို စတင်ရန် လိုအပ်သည်။ စတင်ချိန်တွင်၊ Terraform သည် ပလပ်အင်အားလုံးကို ဒေါင်းလုဒ်လုပ်သည်။ တစ်ချိန်ချိန်တွင် ၎င်းတို့သည် monolith မှ နောက်ထပ် microservice ဗိသုကာတစ်ခုသို့ ကွဲသွားကြသည်။ ပြီးတော့ module တွေအားလုံးကို ဆွဲထုတ်နိုင်အောင် Terraform init ကို အမြဲလုပ်ဖို့လိုအပ်ပါတယ်။

ထို့အပြင် သင်သည် ပထမဦးစွာ variable အားလုံးကိုရနိုင်သည့် shell script ကိုသုံးနိုင်သည်။ shell script သည် မည်သည့်နည်းနှင့်မျှ အကန့်အသတ်မရှိပါ။ ဒုတိယအချက်ကတော့ လမ်းကြောင်းတွေပါ။ ကျွန်ုပ်တို့သည် repository အတွင်းရှိလမ်းကြောင်းကို state file ၏သော့အဖြစ်အမြဲအသုံးပြုပါက၊ ထို့ကြောင့်၊ ဤနေရာတွင် error သည် ရှင်းသွားမည်ဖြစ်ပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဒေတာဘယ်မှာရနိုင်မလဲ။ JSON ဖိုင်။ Terraform သည် သင့်အား hcl (HashiCorp Configuration Language) တွင်သာမက JSON တွင်လည်း အခြေခံအဆောက်အဦများကို ရေးသားနိုင်စေပါသည်။

JSON သည် shell script မှဖတ်ရန်လွယ်ကူသည်။ ထို့ကြောင့်၊ သင်သည် configuration file ကို တစ်နေရာရာတွင် ပုံးဖြင့်ထည့်နိုင်သည်။ Terraform ကုဒ်နှင့် shell script တို့တွင် ဤပုံးကို အသုံးပြုပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

Terraform အတွက် ပုံးတစ်ပုံးရှိဖို့ ဘာကြောင့်အရေးကြီးတာလဲ။ ဝေးလံခေါင်သီသောပြည်နယ်ဖိုင်များကဲ့သို့အရာရှိသောကြောင့်ဖြစ်သည်။ Amazon ကိုပြောပြရန်အတွက် အရင်းအမြစ်အချို့ကို ပြုစုပျိုးထောင်သောအခါတွင် “ကျေးဇူးပြု၍ ဥပမာကို မြှင့်တင်ပါ”၊ လိုအပ်သော ဘောင်များကို သတ်မှတ်ရန် လိုအပ်ပါသည်။

ပြီးတော့ ဒီသတ်မှတ်စနစ်ကို အခြားဖိုင်တွဲအချို့မှာ သိမ်းဆည်းထားပါတယ်။ ပြီးတော့ ငါသွားပြောနိုင်တယ်- "Terraform၊ ကျေးဇူးပြုပြီး အဲဒီအရင်းအမြစ်ရဲ့ ပြည်နယ်ဖိုင်ကို ပြေးပြီး ဒီသတ်မှတ်သူတွေကို ငါ့ကိုယူပါ။" ထို့ကြောင့် မတူညီသော ဒေသများ သို့မဟုတ် ပတ်ဝန်းကျင်များကြားတွင် အချို့သော ပေါင်းစည်းမှုတစ်ခု ပေါ်လာသည်။

အဝေးထိန်းပြည်နယ်ဖိုင်ကို အသုံးပြုရန် အမြဲတမ်းမဖြစ်နိုင်ပါ။ ဥပမာအားဖြင့်၊ သင်သည် လက်ဖြင့် VPC တစ်ခုကို ဖန်တီးခဲ့သည်။ VPC ကိုဖန်တီးပေးသော Terraform ကုဒ်သည် အချိန်ကြာမြင့်မည်ဖြစ်ပြီး သင်တစ်ဦးနှင့်တစ်ဦး ချိန်ညှိရန် လိုအပ်သောကြောင့် ကွဲပြားသော VPC များကို ဖန်တီးပေးသောကြောင့် အောက်ပါလှည့်ကွက်ကို အသုံးပြုနိုင်ပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဆိုလိုသည်မှာ၊ VPC တစ်ခုလုပ်ပုံပေါ်သည့် module တစ်ခုကိုပြုလုပ်ပြီး ၎င်းသည်သင့်အား identifiers များကိုပေးသည်၊ သို့သော် အမှန်တကယ်တွင် တူညီသောဥပမာကိုဖန်တီးရန်အသုံးပြုနိုင်သည့် hardcoded တန်ဖိုးများပါသည့်ဖိုင်တစ်ခုရှိပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ပြည်နယ်ဖိုင်ကို cloud တွင်သိမ်းဆည်းရန် အမြဲတမ်းမလိုအပ်ပါ။ ဥပမာအားဖြင့်၊ မော်ဂျူးများကို စမ်းသပ်သည့်အခါ၊ ဖိုင်ကို စမ်းသပ်သည့်အချိန်တွင် ဒစ်ပေါ်တွင် သိမ်းဆည်းထားမည့် backend အစပြုခြင်းကို သင်အသုံးပြုနိုင်ပါသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

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

HashiCorp သည် Terraform ကုဒ်ကို ဖော်မတ်မည်ကဲ့သို့ ပြုလုပ်ရမည်ကို နားလည်ထားသည်။ Terraform fmt သည် သင့်အား ဤယုံကြည်ချက်နှင့်အညီ သင်တည်းဖြတ်သည့်ကုဒ်ကို ဖော်မတ်လုပ်ခွင့်ပေးသည်။ ထို့ကြောင့်၊ စမ်းသပ်မှုများသည် ဖော်မတ်သည် HashiCorp ကို သိမ်းပိုက်ထားသည်နှင့် ကိုက်ညီမှုရှိမရှိ စစ်ဆေးရန် လိုအပ်သည်၊ သို့မှသာ ကွင်းစကွင်းပိတ်တည်နေရာကို ပြောင်းလဲရန် မလိုအပ်တော့ပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

နောက်တစ်ခုက Terraform validate ဖြစ်ပါတယ်။ ကွင်းစဥ်အားလုံးကို တွဲထားခြင်းရှိမရှိ syntax - ala ကို စစ်ဆေးခြင်းထက် အနည်းငယ်ပိုပါသည်။ ဒီမှာ ဘာအရေးကြီးလဲ။ ကျွန်ုပ်တို့၏ အခြေခံအဆောက်အအုံသည် အလွန်ကျယ်ပြန့်ပါသည်။ အဲဒီထဲမှာ မတူကွဲပြားတဲ့ အဖေတွေ အများကြီးရှိတယ်။ တစ်ခုချင်းစီတွင် Terraform ကို validate လုပ်ရန်လိုအပ်သည်။

ထို့ကြောင့်၊ စမ်းသပ်မှုကို အရှိန်မြှင့်ရန်၊ parallel ကိုအသုံးပြု၍ လုပ်ငန်းစဉ်များစွာကို အပြိုင်လုပ်ဆောင်ပါသည်။

Parallel က အရမ်းမိုက်တဲ့ အရာဖြစ်ပြီး သုံးပါ။

သို့သော် Terraform စတင်သည့်အခါတိုင်း၊ ၎င်းသည် HashiCorp သို့သွားကာ “နောက်ဆုံးပေါ် plugin ဗားရှင်းများကား အဘယ်နည်း။ ပြီးတော့ ကက်ရှ်မှာ ရှိတဲ့ ပလပ်အင်က မှန်ကန်သလား၊ မှားသလား။" ပြီးတော့ ဒါက ခြေလှမ်းတိုင်း နှေးသွားတယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

အကယ်၍ သင်သည် Terraform ၏ plugins များဘယ်မှာရှိသည်ကိုပြောပြပါက Terraform သည် "ကောင်းပြီ၊ ဒါကအဲဒီမှာနောက်ဆုံးပေါ်အရာဖြစ်နိုင်တယ်။ ငါဘယ်မှမသွားပါဘူး၊ မင်းရဲ့ Terraform ကုဒ်ကို ချက်ချင်းအတည်ပြုလိုက်မယ်။"

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဖိုဒါကို လိုအပ်သော ပလပ်အင်များဖြင့် ဖြည့်ရန်အတွက်၊ ကျွန်ုပ်တို့တွင် စတင်လုပ်ဆောင်ရန် လိုအပ်သည့် အလွန်ရိုးရှင်းသော Terraform ကုဒ်တစ်ခုရှိသည်။ ဤတွင်၊ သင်သည် သင့်ကုဒ်တွင် တစ်နည်းနည်းဖြင့် ပါဝင်သည့် ပံ့ပိုးပေးသူအားလုံးကို သတ်မှတ်ရန် လိုအပ်သည်၊ သို့မဟုတ်ပါက Terraform သည် "ကက်ရှ်တွင် မရှိသောကြောင့် အချို့သောဝန်ဆောင်မှုပေးသူကို ကျွန်ုပ်မသိပါ။"

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

နောက်တစ်ခုကတော့ Terraform အစီအစဉ်ပါ။ ကျွန်တော်ပြောခဲ့သလိုပဲ ဖွံ့ဖြိုးတိုးတက်မှုက စက်ဘီးစီးတယ်။ ကျွန်ုပ်တို့သည် ကုဒ်ကို အပြောင်းအလဲလုပ်သည်။ ထို့နောက် အခြေခံအဆောက်အအုံအတွက် မည်သို့သော အပြောင်းအလဲများကို စီစဉ်ထားသည်ကို သိရှိရန် လိုအပ်သည်။

အခြေခံအဆောက်အအုံသည် အလွန်ကြီးမားသောအခါတွင်၊ သင်သည် မော်ဂျူးတစ်ခုကို ပြောင်းလဲနိုင်ပြီး စမ်းသပ်မှုပတ်ဝန်းကျင် သို့မဟုတ် အချို့သောဒေသအချို့ကို ပြုပြင်ကာ အိမ်နီးချင်းတစ်ခုကို ချိုးဖျက်နိုင်သည်။ ထို့ကြောင့်၊ Terraform အစီအစဥ်ကို အခြေခံအဆောက်အအုံတစ်ခုလုံးအတွက် ပြုလုပ်ထားသင့်ပြီး မည်သည့်အပြောင်းအလဲများ စီစဉ်ထားသည်ကို ပြသသင့်သည်။

ဒါကို စမတ်ကျကျ လုပ်နိုင်ပါတယ်။ ဥပမာအားဖြင့်၊ ကျွန်ုပ်တို့သည် မှီခိုမှုကို ဖြေရှင်းပေးသည့် Python script ကို ရေးခဲ့သည်။ ပြောင်းလဲခဲ့သည့်အပေါ်မူတည်၍ Terraform module တစ်ခု သို့မဟုတ် သီးခြားအစိတ်အပိုင်းတစ်ခုမျှသာဖြစ်ပြီး ၎င်းသည် မှီခိုနေသောဖိုင်တွဲများအားလုံးအတွက် အစီအစဉ်များပြုလုပ်ပေးပါသည်။

တောင်းဆိုချက်အရ Terraform အစီအစဉ်များကို ပြုလုပ်ရပါမည်။ အနည်းဆုံးတော့ ဒါပဲလုပ်တယ်။

ဟုတ်ပါတယ်၊ အပြောင်းအလဲတိုင်းအတွက်၊ ကတိကဝတ်တိုင်းအတွက် စမ်းသပ်မှုတွေလုပ်ရတာ ကောင်းပါတယ်၊ ဒါပေမယ့် အစီအစဉ်တွေက အတော်လေးကို ဈေးကြီးတဲ့အရာပါ။ ပြီးတော့ ကျနော်တို့ တောင်းဆိုချက်တစ်ခုအရ “ကျေးဇူးပြုပြီး အစီအစဉ်တွေ ပေးပါဦး” လို့ ပြောပါတယ်။ စက်ရုပ်စတင်သည်။ မှတ်ချက်များ ပေးပို့ပါ သို့မဟုတ် သင့်ပြောင်းလဲမှုများမှ မျှော်လင့်ထားသည့် အစီအစဉ်အားလုံးကို ပူးတွဲပါ ။

အစီအစဥ်တစ်ခုသည် အလွန်စျေးကြီးသော အရာတစ်ခုဖြစ်သည်။ Terraform သည် Amazon သို့သွား၍ “ဤဥပမာ ရှိပါသေးသလား။ ဤအလိုအလျောက်စကေးတွင် အတိအကျတူညီသောဘောင်များ ရှိပါသလား။ ၎င်းကို အရှိန်မြှင့်ရန်အတွက် သင်သည် refresh=false ကဲ့သို့သော ကန့်သတ်ချက်တစ်ခုကို အသုံးပြုနိုင်သည်။ ဆိုလိုသည်မှာ Terraform သည် S3 မှပြည်နယ်ကိုဒေါင်းလုဒ်လုပ်လိမ့်မည်။ ပြီးတော့ ပြည်နယ်က Amazon နဲ့ အတိအကျ ကိုက်ညီမယ်လို့ ယုံကြည်ပါတယ်။

ထိုသို့သော Terraform အစီအစဉ်သည် ပိုမိုမြန်ဆန်သော်လည်း အခြေအနေသည် သင်၏အခြေခံအဆောက်အအုံနှင့် ကိုက်ညီမှုရှိရမည်၊ ဆိုလိုသည်မှာ တစ်နေရာရာတွင်၊ တစ်ချိန်ချိန်တွင် Terraform ပြန်လည်စတင်ခြင်းကို စတင်ရပါမည်။ Terraform refresh သည် ၎င်းကိုအတိအကျလုပ်ဆောင်သည်- ပြည်နယ်သည် အမှန်တကယ်အခြေခံအဆောက်အအုံရှိအရာများနှင့်ကိုက်ညီသည်။

နောက်ပြီးတော့ လုံခြုံရေးအကြောင်း ပြောဖို့လိုတယ်။ ဤနေရာ၌ ကျွန်ုပ်တို့ စတင်ရန် လိုအပ်ပါသည်။ သင် Terraform ကို run ပြီး Terraform သည် သင့်အခြေခံအဆောက်အအုံပေါ်တွင် လုပ်ဆောင်သည့်နေရာတွင် အားနည်းချက်တစ်ခုရှိသည်။ ဆိုလိုသည်မှာ၊ သင်သည် အခြေခံအားဖြင့် ကုဒ်ကို လုပ်ဆောင်နေခြင်းဖြစ်သည်။ ဆွဲထုတ်ခြင်း တောင်းဆိုချက်တွင် အန္တရာယ်ရှိသော ကုဒ်တစ်မျိုးမျိုး ပါဝင်နေပါက၊ ၎င်းကို ဝင်ရောက်နိုင်လွန်းသည့် အခြေခံအဆောက်အအုံတစ်ခုပေါ်တွင် လုပ်ဆောင်နိုင်သည်။ ထို့ကြောင့် Terraform အစီအစဉ်ကို သင်လုပ်ဆောင်သည့်နေရာတွင် သတိထားပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

နောက်တစ်ခုပြောချင်တာက user-data testing ပါ။

အသုံးပြုသူဒေတာဆိုတာဘာလဲ။ Amazon တွင်၊ ကျွန်ုပ်တို့သည် ဥပမာတစ်ခုဖန်တီးသောအခါ၊ ကျွန်ုပ်တို့သည် ဥပမာ- meta data ဖြင့် စာတစ်စောင်ပေးပို့နိုင်သည်။ instance စတင်သောအခါ၊ များသောအားဖြင့် cloud init သည် ဤဥပမာများတွင် အမြဲရှိနေပါသည်။ Cloud init က ဒီစာကိုဖတ်ပြီး "အိုကေ၊ ဒီနေ့ ငါက load balancer" လို့ပြောထားတယ်။ ထိုပဋိညာဉ်များနှင့်အညီ လုပ်ဆောင်ချက်အချို့ကို လုပ်ဆောင်တော်မူသည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

သို့သော် ကံမကောင်းစွာပဲ၊ ကျွန်ုပ်တို့သည် Terraform အစီအစဉ်ကို ပြုလုပ်ပြီး Terraform ကို အသုံးပြုသောအခါ၊ အသုံးပြုသူ-ဒေတာသည် ဤဂဏန်းများကဲ့သို့ပင် ဖြစ်သည်။ ဆိုလိုသည်မှာ၊ သူသည် သင့်အား hash ကို ရိုးရိုးရှင်းရှင်း ပို့ပေးသည်။ အစီအစဉ်တွင် သင်ကြည့်ရှုနိုင်သမျှမှာ အပြောင်းအလဲများ ရှိ၊ မရှိ သို့မဟုတ် hash သည် တူညီနေဦးမည် ဖြစ်သည်။

ဒါကို သင်က ဂရုမစိုက်ရင်၊ ကွဲအက်နေတဲ့ စာသားဖိုင်အချို့ဟာ တကယ့်အခြေခံအဆောက်အဦပေါ်မှာ Amazon မှာ ဆုံးသွားနိုင်ပါတယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

တနည်းအားဖြင့် လုပ်ဆောင်သောအခါတွင်၊ သင်သည် အခြေခံအဆောက်အဦတစ်ခုလုံးကို မသတ်မှတ်ဘဲ၊ နမူနာပုံစံကိုသာ သတ်မှတ်နိုင်သည်။ ကုဒ်ထဲတွင် “ကျေးဇူးပြု၍ ဤပုံစံကို ကျွန်ုပ်၏ဖန်သားပြင်ပေါ်တွင် ပြသပါ။” ရလဒ်အနေဖြင့် Amazon တွင် သင့်ဒေတာပုံသဏ္ဍာန်ကို ပရင့်ထုတ်နိုင်မည်ဖြစ်သည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

အခြားရွေးချယ်စရာမှာ အသုံးပြုသူ-ဒေတာကို ထုတ်လုပ်ရန် မော်ဂျူးတစ်ခုကို အသုံးပြုရန်ဖြစ်သည်။ ဤ module ကိုသင်အသုံးပြုလိမ့်မည်။ သင်သည် ဒစ်ခ်ပေါ်တွင် ဖိုင်ကို လက်ခံရရှိမည်ဖြစ်သည်။ ရည်ညွှန်းချက်တစ်ခုနှင့် နှိုင်းယှဉ်ပါ။ ထို့ကြောင့်၊ အချို့သောသူသည် အသုံးပြုသူ-ဒေတာကို အနည်းငယ်ပြုပြင်ရန် ဆုံးဖြတ်ပါက၊ သင်၏စမ်းသပ်မှုများသည် "အိုကေ၊ ဤနေရာတွင် အပြောင်းအလဲအချို့ရှိပါသည် - ဒါက ပုံမှန်ပါပဲ။"

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

နောက်တစ်ခုပြောချင်တာက Automate Terraform နဲ့သက်ဆိုင်ပါတယ်။

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

စမ်းသပ်မှုပတ်ဝန်းကျင်အတွက်၊ ဒါက ပုံမှန်ပါပဲ။ ဆိုလိုသည်မှာ၊ စမ်းသပ်မှုပတ်ဝန်းကျင်ကိုဖန်တီးသည့်အလုပ်သည် developer အားလုံးလိုအပ်သောအရာဖြစ်သည်။ ထို့အပြင် "အရာရာတိုင်းသည် ကျွန်ုပ်အတွက် လုပ်ဆောင်ခဲ့သည်" ကဲ့သို့သော အသုံးအနှုန်းသည် ရယ်စရာကောင်းသော meme မဟုတ်သော်လည်း လူတစ်ဦးသည် စိတ်ရှုပ်ထွေးသွားကာ အစုလိုက်တစ်ခုတင်ကာ ဤအတွဲတွင် စမ်းသပ်မှုများ လုပ်ဆောင်ခဲ့ကြောင်း သက်သေပြသည်။ ပြီးတော့ အဲဒီမှာ အားလုံးအဆင်ပြေကြောင်း သေချာအောင်လုပ်ပြီး "ကောင်းပြီ၊ ငါထုတ်မယ့်ကုဒ်ကို စမ်းသပ်ပြီးပြီ" လို့ ပြောပါတယ်။

ထုတ်လုပ်မှု၊ သဲပုံး နှင့် လုပ်ငန်းပိုမိုအရေးပါသော အခြားပတ်ဝန်းကျင်များတွင်၊ အရင်းအမြစ်အချို့ကို မည်သူ့ကိုမျှ မသေဆုံးစေဘဲ လုံခြုံစွာတစ်စိတ်တစ်ပိုင်း အသုံးပြုနိုင်သည်။ ၎င်းတို့မှာ- အော်တိုစကေးအုပ်စုများ၊ လုံခြုံရေးအဖွဲ့များ၊ အခန်းကဏ္ဍများ၊ route53 နှင့် အဆိုပါစာရင်းသည် အတော်လေးကြီးမားနိုင်သည်။ ဒါပေမယ့် ဘာတွေဖြစ်နေလဲဆိုတာကို စောင့်ကြည့်ပါ၊ အလိုအလျောက် လျှောက်လွှာအစီရင်ခံစာတွေကို ဖတ်ပါ။

အသုံးချရန် အန္တရာယ် သို့မဟုတ် ကြောက်စရာကောင်းသည့်နေရာ၊ ဥပမာ၊ ၎င်းတို့သည် ဒေတာဘေ့စ်တစ်ခုမှ ခိုင်မြဲသောရင်းမြစ်အချို့ဖြစ်ပါက၊ ထို့နောက် အခြေခံအဆောက်အအုံအချို့တွင် အသုံးမပြုရသေးသောပြောင်းလဲမှုများရှိနေကြောင်း အစီရင်ခံစာများကို လက်ခံရယူပါ။ ကြီးကြပ်မှုအောက်တွင် အင်ဂျင်နီယာသည် လျှောက်ထားရန် သို့မဟုတ် ၎င်း၏ ကွန်ဆိုးလ်မှ လုပ်ဆောင်ရန် အလုပ်များကို စတင်သည်။

Amazon တွင် Terminate protection ကဲ့သို့သော အရာတစ်ခုရှိသည်။ အချို့သောကိစ္စများတွင် သင့်အတွက်မလိုအပ်သော အပြောင်းအလဲများမှ ကာကွယ်ပေးနိုင်သည်။ ဆိုလိုသည်မှာ Terraform သည် Amazon သို့သွားပြီး "နောက်ထပ်တစ်ခုဖန်တီးရန်ဤဥပမာကိုသတ်ပစ်ရန်လိုအပ်သည်" ဟုပြောကြားခဲ့သည်။ Amazon က “တောင်းပန်ပါတယ်၊ ဒီနေ့တော့ မဟုတ်ပါဘူး။ ငါတို့မှာ Terminate Protection ရှိတယ်။"

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ပြီးတော့ ကိတ်မုန့်ပေါ်က icing က code optimization ဖြစ်ပါတယ်။ ကျွန်ုပ်တို့သည် Terraform ကုဒ်ဖြင့်အလုပ်လုပ်သောအခါ၊ ကျွန်ုပ်တို့သည် အလွန်များပြားသော parameters များကို module သို့ဖြတ်သန်းရမည်ဖြစ်သည်။ ဤအရာများသည် အရင်းအမြစ်တစ်မျိုးမျိုးကို ဖန်တီးရန်အတွက် လိုအပ်သော ကန့်သတ်ချက်များဖြစ်သည်။ ထို့အပြင် ကုဒ်သည် module မှ module တစ်ခုသို့၊ အထူးသဖြင့် modules များကို nested ဖြစ်နေပါက module တစ်ခုမှ module တစ်ခုသို့ ဖြတ်သန်းရန်လိုအပ်သည့် ကန့်သတ်ချက်များစာရင်းများအဖြစ်သို့ ပြောင်းလဲသွားပါသည်။

ပြီးတော့ ဖတ်ရတာ အရမ်းခက်တယ်။ ဒါကို ပြန်သုံးသပ်ဖို့ အရမ်းခက်တယ်။ မကြာခဏဆိုသလို အချို့သော ကန့်သတ်ချက်များသည် ပြန်လည်သုံးသပ်ပြီး လိုအပ်သည်များကို အတိအကျမသိနိုင်ပေ။ နောက်မှ ပြင်ဖို့ ဒါက အချိန်ကုန် ငွေကုန်တယ်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ထို့ကြောင့်၊ တန်ဖိုးအချို့ပါ၀င်သည့် ရှုပ်ထွေးသော ကန့်သတ်ဘောင်တစ်ခုကဲ့သို့သော အရာတစ်ခုကို အသုံးပြုရန် ကျွန်ုပ်အကြံပြုအပ်ပါသည်။ ဆိုလိုသည်မှာ၊ သင်သည် အချို့သောပတ်ဝန်းကျင်တွင် သင်ရရှိလိုသော တန်ဖိုးများ အားလုံးရှိသည့် ဖိုင်တွဲမျိုး လိုအပ်သည်။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဤ module ကိုခေါ်ဆိုခြင်းဖြင့်၊ ဘုံ module တစ်ခုတွင်ထုတ်ပေးသောသစ်ပင်ကိုရနိုင်သည်၊ ဆိုလိုသည်မှာ၊ အခြေခံအဆောက်အအုံတစ်ခုလုံးအတွက်တူညီသောဘုံ module တစ်ခုတွင်ဖြစ်သည်။

ဤ module တွင် Terraform တွင်ဒေသခံများအဖြစ်ထိုကဲ့သို့သောမကြာသေးမီကအင်္ဂါရပ်ကိုအသုံးပြုပြီးအချို့သောတွက်ချက်မှုများကိုသင်လုပ်ဆောင်နိုင်သည်။ ထို့နောက်၊ အထွက်တစ်ခုဖြင့်၊ array hashes စသည်တို့ပါဝင်နိုင်သည့် ရှုပ်ထွေးသော parameter အချို့ကိုပေးပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဒီမှာပဲ အကောင်းဆုံးရှာဖွေမှုတွေ ပြီးဆုံးသွားပါပြီ။ ပြီးတော့ Columbus အကြောင်း ပုံပြင်တစ်ပုဒ် ပြောပြချင်ပါတယ်။ အိန္ဒိယကိုရှာဖွေဖို့ သူ့ရဲ့လေ့လာရေးခရီးအတွက် ပိုက်ဆံရှာနေချိန်မှာ (သူထင်ထားတဲ့အတိုင်း) သူ့ကို ဘယ်သူမှမယုံကြဘဲ မဖြစ်နိုင်ဘူးလို့ ထင်နေကြတယ်။ ထို့နောက် သူက “ဥမကြွေဘူးလား” ဟုဆိုသည်။ အလွန်ချမ်းသာပြီး ထက်မြက်တဲ့ ဘဏ်လုပ်ငန်းရှင်တွေ အားလုံးက ကြက်ဥကို တစ်နည်းနည်းနဲ့ ထားဖို့ ကြိုးစားခဲ့ကြပါတယ်၊ ထို့နောက် ကိုလံဘတ်စ်သည် ကြက်ဥကိုယူကာ အနည်းငယ်ဖိလိုက်သည်။ အခွံက ကြေမွသွားပြီး ကြက်ဥက မလှုပ်မယှက်ဖြစ်နေပါတယ်။ သူတို့က "အိုး၊ အဲဒါက လွယ်လွန်းတယ်!" Columbus က “ဟုတ်တယ်၊ အဲဒါက ရိုးရှင်းလွန်းတယ်။ အိန္ဒိယကိုဖွင့်တဲ့အခါ လူတိုင်းက ဒီကုန်သွယ်ရေးလမ်းကြောင်းကို သုံးကြလိမ့်မယ်။”

ပြီးတော့ ငါမင်းကိုပြောခဲ့တာက တော်တော်ရိုးရှင်းပြီး အသေးအဖွဲအရာတွေ ဖြစ်နိုင်တယ်။ ၎င်းတို့အကြောင်း သင်လေ့လာပြီး ၎င်းတို့ကို စတင်အသုံးပြုသောအခါတွင်၊ ၎င်းသည် အရာဝတ္ထုများအတိုင်းဖြစ်သည်။ ဒါကြောင့် အခွင့်ကောင်းယူပါ။ ဒါတွေက သင့်အတွက် လုံးဝပုံမှန်မဟုတ်ရင်၊ အနည်းဆုံးတော့ ကြက်ဥမပြုတ်ကျအောင် ဘယ်လိုထားရမလဲဆိုတာ သင်သိမှာပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

အကျဉ်းချုံးကြည့်ရအောင်။

  • နှင်းပွင့်တွေကို ရှောင်ဖို့ ကြိုးစားပါ။ နှင့် နှင်းပွင့်များ နည်းပါးလေလေ၊ သင်၏ ကြီးမားသော အခြေခံအဆောက်အဦတစ်လျှောက် အပြောင်းအလဲများ ပြုလုပ်ရန် လိုအပ်သည့် အရင်းအမြစ်များ နည်းပါးလေလေ ဖြစ်သည်။
  • စဉ်ဆက်မပြတ်ပြောင်းလဲမှုများ။ ဆိုလိုသည်မှာ၊ ကုဒ်တွင် အချို့သော အပြောင်းအလဲများ ပေါ်ပေါက်လာသောအခါတွင်၊ သင်သည် သင်၏ အခြေခံအဆောက်အဦများကို ဤပြောင်းလဲမှုများနှင့် လိုက်လျောညီထွေဖြစ်အောင် တတ်နိုင်သမျှ မြန်မြန် ဆောင်ကျဉ်းပေးရန် လိုအပ်ပါသည်။ နှစ်လ သို့မဟုတ် သုံးလအကြာတွင် Elasticsearch ကို တစ်စုံတစ်ဦးမှ လာကြည့်ရန်၊ Terraform အစီအစဉ်ကို ပြုလုပ်ကာ သူမမျှော်လင့်ထားသည့် အပြောင်းအလဲများစွာ ရှိသည့် အခြေအနေမျိုး မဖြစ်သင့်ပါ။ ပြီးတော့ အရာအားလုံးကို စည်းစနစ်တကျဖြစ်အောင်လုပ်ဖို့ အချိန်အများကြီးယူရတယ်။
  • စမ်းသပ်မှုများနှင့် အလိုအလျောက်စနစ်။ သင့်ကုဒ်ကို စမ်းသပ်မှုများနှင့် လုပ်ဆောင်ချက်များ များလေလေ၊ သင်အရာရာတိုင်းကို မှန်မှန်ကန်ကန် လုပ်ဆောင်နေကြောင်း ယုံကြည်လေလေဖြစ်သည်။ အလိုအလျောက် ပေးပို့ခြင်းသည် သင့်ယုံကြည်မှုကို အဆများစွာ တိုးစေပါသည်။
  • စမ်းသပ်မှုနှင့် ထုတ်လုပ်မှုပတ်ဝန်းကျင်အတွက် ကုဒ်သည် တူညီလုနီးပါးဖြစ်သင့်သည်။ လက်တွေ့အားဖြင့်၊ ထုတ်လုပ်မှုသည် အနည်းငယ်ကွဲပြားနေသေးပြီး စမ်းသပ်မှုပတ်ဝန်းကျင်ထက် ကျော်လွန်သွားမည့် ကွဲလွဲချက်အချို့ ရှိပါသေးသည်။ မည်သို့ပင်ဆိုစေကာမူ အပေါင်း သို့မဟုတ် အနုတ်သည် ဤအရာကို သေချာစေနိုင်သည်။
  • အကယ်၍ သင့်တွင် Terraform ကုဒ်များစွာရှိပြီး ဤကုဒ်ကို နောက်ဆုံးရထားရန် အချိန်များစွာယူရပါက၊ ပြန်လည်ပြင်ဆင်ပြီး ကောင်းမွန်သောပုံစံရရှိရန် အချိန်နှောင်းမည်မဟုတ်ပါ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

  • မပြောင်းလဲနိုင်သော အခြေခံအဆောက်အဦ။ AMI ကို အချိန်ဇယားအတိုင်း ပို့ဆောင်ပေးသည်။
  • သင့်တွင် entry များများစွာရှိပြီး ၎င်းတို့ကို တသမတ်တည်းရှိစေလိုသည့်အခါ route53 အတွက် ဖွဲ့စည်းပုံ။
  • API နှုန်းကန့်သတ်ချက်များကို တိုက်ဖျက်ခြင်း။ Amazon က "ဒါပါပဲ၊ နောက်ထပ်တောင်းဆိုမှုတွေကို ငါလက်မခံနိုင်တော့ဘူး၊ ခဏစောင့်ပါ။" ပြီးတော့ ရုံးခန်းတစ်ဝက်လောက်က သူ့ရဲ့အခြေခံအဆောက်အအုံကို စတင်အသုံးပြုနိုင်တဲ့အထိ စောင့်နေပါတယ်။
  • သာဓကများ။ Amazon သည် စျေးပေါသော ပွဲမဟုတ်သော်လည်း အစက်အပြောက်များက သင့်ကို များစွာ ကယ်တင်နိုင်စေပါသည်။ အဲဒီ့မှာ အဲဒီအကြောင်း အစီရင်ခံစာတစ်ခုလုံးကို ပြောပြနိုင်ပါတယ်။
  • လုံခြုံရေးနှင့် IAM အခန်းကဏ္ဍများ။
  • ဆုံးရှုံးသွားသော အရင်းအမြစ်များကို ရှာဖွေခြင်း၊ သင့်တွင် Amazone တွင် အမည်မသိ ဇာစ်မြစ်များ ရှိနေပါက ၎င်းတို့သည် ငွေကို စားသည်။ ဥပမာများသည် တစ်လလျှင် $100-150 ကုန်ကျသော်လည်း၊ တစ်နှစ်လျှင် $1 ထက်ပိုပါသည်။ ထိုကဲ့သို့သော အရင်းအမြစ်များကို ရှာဖွေခြင်းသည် အမြတ်အစွန်းရှိသော လုပ်ငန်းတစ်ခုဖြစ်သည်။
  • နှင့် သာဓကများ။

ပရမ်းပတာနှင့် ကိုယ်တိုင်လုပ်ရိုးလုပ်စဉ်များကို တိုက်ဖျက်ရန် Terraform ရှိ ပုံစံများ။ Maxim Kostrikin (Ixtens)

ဒါပဲလား။ Terraform က အရမ်းမိုက်တယ်၊ မင်းသုံးတယ်။ ကျေးဇူးတင်ပါသည်!

မေးခွန်းများကို

အစီရင်ခံစာအတွက် ကျေးဇူးတင်ပါသည်။ သင့်ပြည်နယ်ဖိုင်သည် S3 တွင်ဖြစ်သည်၊ သို့သော် လူများစွာသည် ဤပြည်နယ်ဖိုင်ကိုယူ၍ ချဲ့ထွင်ရန်ကြိုးစားသည့်ပြဿနာကို သင်မည်သို့ဖြေရှင်းမည်နည်း။

ပထမဆုံးအနေနဲ့ ကျွန်တော်တို့ဟာ အလျင်လိုမှုမရှိပါဘူး။ ဒုတိယအနေဖြင့်၊ ကျွန်ုပ်တို့သည် ကုဒ်အပိုင်းအစအချို့ကို လုပ်ဆောင်နေကြောင်း အစီရင်ခံသည့် အလံများရှိသည်။ ဆိုလိုသည်မှာ၊ အခြေခံအဆောက်အအုံသည် အလွန်ကြီးမားသော်လည်း၊ တစ်စုံတစ်ဦးသည် တစ်ခုခုကို အဆက်မပြတ်အသုံးပြုနေသည်ဟု မဆိုလိုပါ။ တက်ကြွသောအဆင့်တစ်ခုရှိသောအခါ၊ ၎င်းသည်ပြဿနာတစ်ခုဖြစ်ခဲ့သည်၊ ကျွန်ုပ်တို့သည် Git တွင်ပြည်နယ်ဖိုင်များကိုသိမ်းဆည်းထားသည်။ ၎င်းသည် အရေးကြီးသည်၊ မဟုတ်ပါက တစ်စုံတစ်ဦးသည် ပြည်နယ်ဖိုင်တစ်ခု ပြုလုပ်မည်ဖြစ်ပြီး၊ အရာအားလုံး ဆက်လက်လုပ်ဆောင်နိုင်စေရန် ၎င်းတို့ကို လူကိုယ်တိုင် စုစည်းထားရမည်ဖြစ်သည်။ အခုက အဲလိုပြဿနာမရှိဘူး။ ယေဘုယျအားဖြင့် Terraform သည် ဤပြဿနာကို ဖြေရှင်းပေးသည်။ တစ်ခုခု အဆက်မပြတ် ပြောင်းလဲနေပါက သင်ပြောခဲ့သည့်စကားကို တားဆီးနိုင်သည့် သော့ခလောက်များကို အသုံးပြုနိုင်သည်။

သင်သည် open source သို့မဟုတ် လုပ်ငန်းကို အသုံးပြုနေပါသလား။

မည်သည့်လုပ်ငန်းမဆို၊ ဆိုလိုသည်မှာ သင်သွား၍ဒေါင်းလုဒ်လုပ်နိုင်သည့် အရာအားလုံးကို အခမဲ့ဖြစ်သည်။

ကျွန်တော့်နာမည် Stanislav ပါ။ အသေးအမွှားထပ်ထည့်ချင်ခဲ့တယ်။ သင်သည် ချေဖျက်၍မရသော သာဓကတစ်ခုကို ဖန်တီးနိုင်စေမည့် Amazon အင်္ဂါရပ်အကြောင်း ပြောခဲ့သည်။ ၎င်းသည် Terraform ကိုယ်တိုင်တွင်လည်းဖြစ်သည်၊ Life Second ဘလောက်တွင် အပြောင်းအလဲများကို တားမြစ်ခြင်း သို့မဟုတ် ဖျက်ဆီးခြင်းအား တားမြစ်ခြင်းအား သင်သတ်မှတ်နိုင်သည်။

အချိန်အကန့်အသတ်ရှိခဲ့သည်။ အမှတ်ကောင်းတယ်။

ကျွန်တော်လည်း အချက်နှစ်ချက်လောက် မေးချင်ပါတယ်။ ပထမဦးစွာသင်သည်စမ်းသပ်မှုအကြောင်းပြောခဲ့သည်။ စမ်းသပ်ကိရိယာတစ်ခုခုကို သင်အသုံးပြုခဲ့ပါသလား။ Test Kitchen ပလပ်အင်အကြောင်း ကျွန်တော်ကြားဖူးတယ်။ တစ်ခုခုတော့ ရှိကောင်းရှိမယ်။ Local Values ​​တွေအကြောင်းလည်း မေးချင်ပါတယ်။ ၎င်းတို့သည် Input Variables များနှင့် အခြေခံအားဖြင့် မည်သို့ကွာခြားသနည်း။ Local Values ​​များမှတဆင့် တစ်စုံတစ်ရာကို ကန့်သတ်ခြင်းမပြုရပါ။ ဒီအကြောင်းအရာကို အဖြေရှာဖို့ ကြိုးစားခဲ့ပေမယ့် တစ်နည်းနည်းနဲ့ ကိုယ့်ဘာသာကိုယ် အဖြေရှာမရခဲ့ပါဘူး။

ဤအခန်းအပြင်ဘက်တွင် အသေးစိတ်ပြောနိုင်ပါသည်။ ကျွန်ုပ်တို့၏စမ်းသပ်ကိရိယာများသည် လုံးဝကိုယ်တိုင်ပြုလုပ်ထားပါသည်။ စမ်းသပ်စရာ ဘာမှ မရှိဘူး။ ယေဘူယျအားဖြင့်၊ အလိုအလျောက်စမ်းသပ်မှုများသည် အခြေခံအဆောက်အဦတစ်နေရာရာကို ကောက်ယူပြီး၊ အိုကေကြောင်း စစ်ဆေးပြီးနောက် သင်၏အခြေခံအဆောက်အအုံသည် ကောင်းမွန်နေသေးကြောင်း အစီရင်ခံစာဖြင့် အရာအားလုံးကို ဖျက်ဆီးသည့်အခါ ရွေးချယ်စရာများရှိပါသည်။ စမ်းသပ်မှုအစုများကို နေ့တိုင်းလုပ်ဆောင်သောကြောင့် ကျွန်ုပ်တို့တွင် ၎င်းမရှိပါ။ လုံလောက်ပါတယ်။ တစ်ခုခုကွဲစပြုလာရင်၊ ငါတို့က တခြားနေရာမှာ မစစ်ဆေးဘဲနဲ့ ကွဲသွားလိမ့်မယ်။

ဒေသတန်ဖိုးများနှင့်ပတ်သက်၍ အခန်းအပြင်ဘက် စကားဝိုင်းကို ဆက်ကြည့်ရအောင်။

မင်္ဂလာပါ! အစီရင်ခံစာအတွက် ကျေးဇူးတင်ပါသည်။ အရမ်းအသိပေးတယ်။ အခြေခံအဆောက်အအုံကိုဖော်ပြရန် သင့်တွင် တူညီသောကုဒ်များစွာရှိကြောင်း သင်ပြောခဲ့သည်။ ဒီကုဒ်ကို ဖန်တီးဖို့ စဉ်းစားပြီးပြီလား။

မေးခွန်းကောင်း၊ ကျေးဇူးတင်ပါတယ်။ အဓိကအချက်မှာ အခြေခံအဆောက်အအုံကို ကုဒ်အဖြစ်အသုံးပြုသောအခါ၊ ကျွန်ုပ်တို့သည် ကုဒ်ကိုကြည့်ကာ ထိုကုဒ်၏နောက်ကွယ်တွင် မည်သည့်အခြေခံအဆောက်အအုံများ ရှိနေသည်ကို နားလည်သည်ဟု ယူဆပါသည်။ ကုဒ်ကို ထုတ်ပေးမည်ဆိုပါက ထိုနေရာတွင် မည်သို့သော အခြေခံအဆောက်အဦများ ရှိမည်ကို နားလည်ရန်အတွက် မည်သည့်ကုဒ်ကို ထုတ်ပေးမည်ကို ကျွန်ုပ်တို့ စိတ်ကူးကြည့်ရန် လိုအပ်ပါသည်။ ကျွန်ုပ်တို့သည် ကုဒ်ကို ဖန်တီးသည်၊ ၎င်းကို ကတိပြုသည်ဖြစ်စေ၊ အခြေခံအားဖြင့် အတူတူပင် ဖြစ်ပေသည်။ ဒီတော့ ငါတို့ရေးတဲ့လမ်းကို လိုက်ခဲ့၊ ရပြီ။ ၎င်းတို့ကို စတင်ပြုလုပ်သောအခါ အနည်းငယ်အကြာတွင် မီးစက်များ ပေါ်လာသည်။ ပြောင်းလဲဖို့ အရမ်းနောက်ကျနေပြီ။

jsonnet အကြောင်း တစ်ခုခု ကြားဖူးပါသလား။

နံပါတျ

ကြည့်ပါ၊ ဒါက အရမ်းမိုက်တယ်။ ၎င်းကို သင်အသုံးပြု၍ ဒေတာဖွဲ့စည်းပုံတစ်ခု ဖန်တီးနိုင်သည့် သီးခြားကိစ္စရပ်တစ်ခုကို ကျွန်ုပ်တွေ့မြင်ပါသည်။

မုတ်ဆိတ်ရိတ်စက်အကြောင်း ပြက်လုံးထုတ်သလိုမျိုး မင်းမှာရှိတဲ့အခါ မီးစက်တွေက ကောင်းတယ်။ ဆိုလိုတာက ပထမအကြိမ်က မျက်နှာချင်းမတူပေမယ့် နောက်တော့ လူတိုင်းမှာ တူညီတဲ့မျက်နှာရှိတယ်။ ဂျင်နရေတာများသည် အလွန်ကောင်းမွန်ပါသည်။ သို့သော် ကံမကောင်းစွာဖြင့်၊ ကျွန်ုပ်တို့၏မျက်နှာများသည် အနည်းငယ်ကွဲပြားပါသည်။ ဒါက ပြဿနာပါ။

ကြည့်ရုံပါပဲ။ ကျေးဇူးတင်ပါသည်!

ကျွန်ုပ်၏အမည်မှာ Maxim ဖြစ်ပြီး၊ ကျွန်ုပ်သည် Sberbank မှဖြစ်သည်။ သင် Terraform ကို ပရိုဂရမ်းမင်းဘာသာစကားတစ်ခုနှင့် ညီမျှစေရန် သင်မည်ကဲ့သို့ကြိုးစားနေပုံအကြောင်း အနည်းငယ်ပြောခဲ့သည်။ Ansible ကို သုံးရတာ ပိုလွယ်သလား။

ဤအရာများသည် အလွန်ကွဲပြားခြားနားသော အရာများဖြစ်သည်။ Ansible တွင် အရင်းအမြစ်များကို သင်ဖန်တီးနိုင်ပြီး Puppet သည် Amazon တွင် အရင်းအမြစ်များကို ဖန်တီးနိုင်သည်။ သို့သော် Terraform သည် ဖြောင့်ဖြောင့် ထက်မြက်လာသည်။

မင်းမှာ Amazon ပဲရှိလား။

ငါတို့မှာ Amazon တစ်ခုတည်းရှိတာမဟုတ်ဘူး။ ကျွန်ုပ်တို့တွင် Amazon တစ်ခုတည်းသာရှိသည်။ သို့သော် အဓိကအင်္ဂါရပ်မှာ Terraform ကို မှတ်မိသည်။ Ansible တွင် သင်သည် “ငါ့ကို ဥပမာ ၅ ကြိမ်ပေးပါ” ဟုပြောပါက ၎င်းသည် တိုးလာမည်ဖြစ်ပြီး၊ ထို့နောက် သင်သည် “ယခု ငါ ၃ ကြိမ်လိုသည်” ဟုပြောပါမည်။ Terraform က "ကောင်းပြီ၊ ငါ 5 ကိုသတ်မယ်" လို့ပြောပြီး Ansible က "ကောင်းပြီ၊ ဒါက မင်းအတွက် 3" လို့ပြောလိမ့်မယ်။ စုစုပေါင်း ၈။

မင်္ဂလာပါ! သင့်အစီရင်ခံစာအတွက် ကျေးဇူးတင်ပါသည်။ Terraform အကြောင်း ကြားရတာ အရမ်းစိတ်ဝင်စားဖို့ကောင်းတယ်။ Terraform သည် တည်ငြိမ်သောထုတ်လွှတ်မှုမရှိသေးကြောင်း ချက်ခြင်းမှတ်ချက်လေးတစ်ခုပေးလိုပါသည်၊ ထို့ကြောင့် Terraform ကို သတိကြီးကြီးထားပြီး ဆက်ဆံပါ။

ညစာအတွက် ကောင်းသောဇွန်း။ ဆိုလိုသည်မှာ သင်ဖြေရှင်းချက်လိုအပ်ပါက၊ တစ်ခါတစ်ရံတွင် မတည်မငြိမ်ဖြစ်သောအရာများကို ဖယ်ရှားပစ်ရန်၊ သို့သော် ၎င်းသည် အလုပ်လုပ်ပြီး ကျွန်ုပ်တို့ကို ကူညီပေးခဲ့သည်။

မေးစရာက ဒီလိုပါ။ သင်သည် Remote backend ကိုအသုံးပြုသည်၊ သင်သည် S 3 ကိုအသုံးပြုသည်။ အဘယ်ကြောင့်တရားဝင်နောက်ခံကိုမသုံးသနည်း။

တရားဝင်လား။

Terraform တိမ်တိုက်။

သူဘယ်တုန်းကပေါ်လာတာလဲ။

လွန်ခဲ့တဲ့ ၄ လလောက်ကပေါ့။

လွန်ခဲ့တဲ့ 4 နှစ်လောက်က ပေါ်လာခဲ့ရင် မင်းမေးခွန်းကို ငါဖြေနိုင်လိမ့်မယ်။

Built-in လုပ်ဆောင်ချက်နှင့် လော့ခ်ချထားပြီးဖြစ်ပြီး၊ ပြည်နယ်ဖိုင်ကို သိမ်းဆည်းနိုင်သည်။ စမ်းကြည့်ပါ။ ဒါပေမယ့် ကျွန်တော်လည်း မစမ်းသပ်ဖူးပါဘူး။

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

မင်း နှင်းပွင့်တွေအကြောင်း ပြောနေတာ ကိုင်း ဘာလို့မသုံးတာလဲ။ အဘယ့်ကြောင့် ထိုနည်းဖြင့် မအောင်မြင်ခဲ့သနည်း။

ကျွန်ုပ်တို့၏ချဉ်းကပ်မှုမှာ အခြေခံအဆောက်အအုံတစ်ခုလုံးသည် သိုလှောင်ရုံတစ်ခုတည်းတွင်သာဖြစ်သည်။ Terraform၊ ရုပ်သေး၊ ဤနှင့် တစ်နည်းနည်းဖြင့် ဆက်စပ်နေသည့် ဇာတ်ညွှန်းများအားလုံး၊ ၎င်းတို့အားလုံးသည် သိုလှောင်ရုံတစ်ခုထဲတွင် ရှိနေသည်။ ဤနည်းဖြင့် တိုးမြင့်ပြောင်းလဲမှုများကို တစ်ခုပြီးတစ်ခု စမ်းသပ်ကြောင်း သေချာစေနိုင်ပါသည်။ အကိုင်းအခက်များ အစုအဝေးဖြစ်ခဲ့လျှင် ဤကဲ့သို့သော ပရောဂျက်သည် ထိန်းသိမ်းရန် မဖြစ်နိုင်သလောက်ပင်။ ခြောက်လကျော်သွားတော့ ပြစ်ဒဏ်က တစ်မျိုးတစ်ဖုံ ကွဲလွဲသွားကြတယ်။ အဲဒါက ပြန်မပြင်ခင်ကနေ လွတ်မြောက်ချင်ခဲ့တာ။

ဒါဆို အလုပ်မဖြစ်ဘူးလား?

ဒါက လုံးဝအလုပ်မလုပ်ပါဘူး။

အကိုင်းအခက်မှာ ဖိုဒါဆလိုက်ကို ဖြတ်လိုက်တယ်။ ဆိုလိုသည်မှာ အကယ်၍ သင်သည် စမ်းသပ်မှုအစုတစ်ခုစီအတွက် ပြုလုပ်ပါက၊ ဥပမာ၊ အဖွဲ့ A တွင် ၎င်း၏ကိုယ်ပိုင်ဖိုင်တွဲရှိပြီး၊ အဖွဲ့ B တွင် ၎င်း၏ကိုယ်ပိုင်ဖိုင်တွဲရှိပြီး၊ ၎င်းသည်လည်း အလုပ်မဖြစ်ပါ။ လူတိုင်းနှင့်လိုက်ဖက်နိုင်လောက်အောင် လိုက်လျောညီထွေဖြစ်နိုင်သော ပေါင်းစည်းထားသော စမ်းသပ်ပတ်ဝန်းကျင်ကုဒ်တစ်ခုကို ဖန်တီးထားပါသည်။ ဆိုလိုသည်မှာ၊ ကျွန်ုပ်တို့သည် ကုဒ်တစ်ခုကို ထမ်းဆောင်ခဲ့သည်။

မင်္ဂလာပါ! ငါ့နာမည် Yura ပါ အစီရင်ခံစာအတွက် ကျေးဇူးတင်ပါသည်။ Module များအကြောင်းမေးခွန်း။ သင်က module တွေကိုသုံးနေတယ်လို့ပြောတာ။ အခြားသူတစ်ဦး၏ပြောင်းလဲမှုနှင့် ကိုက်ညီမှုမရှိသော module တစ်ခုတွင် အပြောင်းအလဲများပြုလုပ်ပါက ပြဿနာကို သင်မည်သို့ဖြေရှင်းမည်နည်း။ သင်သည် မော်ဂျူးများကို တစ်နည်းနည်းဖြင့် ဗားရှင်းပြောင်းခြင်း သို့မဟုတ် လိုအပ်ချက်နှစ်ခုနှင့်ကိုက်ညီစေရန် wunderwaffle တစ်ခုကို ယူဆောင်လာရန် ကြိုးစားနေပါသလား။

ဒါက နှင်းထုကြီးရဲ့ ပြဿနာပါ။ အပြစ်မရှိသောပြောင်းလဲမှုအချို့သည် အခြေခံအဆောက်အအုံ၏အစိတ်အပိုင်းအချို့ကို ချိုးဖျက်နိုင်သောအခါတွင် ကျွန်ုပ်တို့ခံစားရသည့်အရာဖြစ်သည်။ အချိန်အတော်ကြာမှ သိသာထင်ရှားလာပါလိမ့်မယ်။

အဲဒါက မပြေလည်သေးဘူးလား။

သင်သည် universal modules များပြုလုပ်သည်။ နှင်းပွင့်များကို ရှောင်ပါ။ ပြီးတော့ အရာအားလုံး ပြေလည်သွားလိမ့်မယ်။ အစီရင်ခံစာ၏ ဒုတိယနှစ်ဝက်တွင် ယင်းကို မည်သို့ရှောင်ရှားရမည်အကြောင်း ဖြစ်သည်။

မင်္ဂလာပါ! အစီရင်ခံစာအတွက် ကျေးဇူးတင်ပါသည်။ ရှင်းလင်းပေးစေလိုပါတယ်။ မြင်ကွင်းနောက်ကွယ်မှာ ကျွန်တော်လိုက်လာခဲ့တဲ့ ကြီးမားလှတဲ့ အမှိုက်ပုံကြီးတစ်ခုရှိတယ်။ ရုပ်သေးနှင့် အခန်းကဏ္ဍခွဲဝေမှုကို မည်သို့ပေါင်းစပ်ထားသနည်း။

အသုံးပြုသူ-ဒေတာ။

ဆိုလိုသည်မှာ သင်သည် ဖိုင်ကို တံတွေးထွေးပြီး တစ်နည်းတစ်ဖုံ လုပ်ဆောင်ခြင်းဖြစ်သည် ။

အသုံးပြုသူ-ဒေတာသည် မှတ်စုတစ်ခု၊ ဆိုလိုသည်မှာ ကျွန်ုပ်တို့သည် ရုပ်ပုံတစ်ပုံ၏ clone ပြုလုပ်သောအခါတွင် Daemon သည် ထိုနေရာတွင် တက်လာပြီး သူသည် မည်သူဖြစ်သည်ကို ဖော်ထုတ်ရန်ကြိုးစားရင်း၊ သူသည် load balancer ဖြစ်သည်ဟူသော မှတ်စုကို ဖတ်သည်။

ဆိုလိုသည်မှာ၊ ဤသည်မှာ ပေးဆောင်ထားသော သီးခြားလုပ်ငန်းစဉ်တစ်မျိုးလား။

ငါတို့က အဲဒါကို တီထွင်ခဲ့တာမဟုတ်ဘူး။ အဲဒါကို သုံးပါတယ်။

မင်္ဂလာပါ! User - data နဲ့ ပတ်သက်ပြီး မေးစရာရှိပါတယ်။ တစ်စုံတစ်ယောက်သည် မှားယွင်းသောနေရာသို့ တစ်စုံတစ်ယောက် ပေးပို့ရန် ပြဿနာများရှိနေသည်ဟု သင်ပြောခဲ့သည်။ User-data က ဘာကိုရည်ညွှန်းတယ်ဆိုတာ အမြဲတမ်းရှင်းရှင်းလင်းလင်းသိနိုင်ဖို့ Git မှာ အသုံးပြုသူဒေတာကို သိမ်းဆည်းဖို့ နည်းလမ်းတစ်ခုခုရှိပါသလား။

ကျွန်ုပ်တို့သည် ပုံစံပလိတ်မှ အသုံးပြုသူဒေတာကို ထုတ်ပေးပါသည်။ ဆိုလိုသည်မှာ၊ ကိန်းရှင်အချို့ကို ထိုနေရာတွင် အသုံးပြုသည်။ Terraform သည် နောက်ဆုံးရလဒ်ကိုထုတ်ပေးသည်။ ထို့ကြောင့်၊ သင်သည် ပုံစံပလိတ်ကို ကြည့်ရုံမျှဖြင့် ဘာဖြစ်လာမည်ကို မပြောနိုင်ပါ၊ အကြောင်းမှာ ပြဿနာအားလုံးသည် ဤ variable တွင် စာကြောင်းတစ်ခုဖြတ်သွားသည်ဟု developer က ထင်မှတ်ထားသည့်အချက်နှင့် ဆက်စပ်နေသောကြောင့် array တစ်ခုကို ၎င်းတွင် အသုံးပြုထားသည်။ သူ - Bam နှင့်ငါ - ဒါ - ဒါ - ဒါ, ၎င်းသည် အရင်းအမြစ်အသစ်ဖြစ်ပြီး လူတစ်ဦးမှ ၎င်းကို ကောက်ယူပြီး တစ်စုံတစ်ခု အလုပ်မလုပ်သည်ကို မြင်ပါက၊ ၎င်းကို အမြန်ဖြေရှင်းပါ။ ဤအော်တိုစကေးအုပ်စုကို အပ်ဒိတ်လုပ်ထားပါက၊ တစ်ချိန်ချိန်၌ အော်တိုစကေးအုပ်စုရှိ ဖြစ်ရပ်များကို စတင်အစားထိုးမည်ဖြစ်သည်။ တစ်ခုခုတော့ အလုပ်မဖြစ်ဘူး။ နာကျင်သည်။

တစ်ခုတည်းသောအဖြေကစမ်းသပ်ဖို့ထွက်ပေါ်?

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

ကျွန်တော့်နာမည်က Timur ပါ။ Terraform ကို စနစ်တကျ စီစဥ်ပုံ အစီရင်ခံစာများ ရှိသည်မှာ အလွန်မိုက်ပါသည်။

ငါတောင်မစရသေးဘူး။

လာမယ့်ညီလာခံမှာ ဖြစ်နိုင်မယ်လို့ ထင်ပါတယ်။ ကျွန်တော့်မှာ ရိုးရှင်းတဲ့မေးခွန်းတစ်ခုရှိပါတယ်။ tfvars ကိုအသုံးပြုခြင်းထက် အဘယ်ကြောင့် သီးခြား module တစ်ခုတွင် တန်ဖိုးကို hardcoding လုပ်သနည်း၊ ဆိုလိုသည်မှာ အဘယ်ကြောင့် module တစ်ခုသည် tfvars ထက် ပိုကောင်းသနည်း။

ဆိုလိုသည်မှာ ဤနေရာတွင် ကျွန်ုပ်ရေးသင့်သည် (slide- Production/environment/settings.tf): domain = variable၊ domain vpcnetwork၊ variable vpcnetwork နှင့် stvars – တူညီသောအရာကို ရနိုင်ပါသလား။

ဒါပဲ ကျွန်တော်တို့ လုပ်တာပါ။ ဥပမာ၊ ကျွန်ုပ်တို့သည် ဆက်တင်အရင်းအမြစ် module ကို ကိုးကားပါသည်။

အခြေခံအားဖြင့်၊ ဤသည်မှာ tfvars ဖြစ်သည်။ Tfvars သည် စမ်းသပ်မှုပတ်ဝန်းကျင်တွင် အလွန်အဆင်ပြေသည်။ ကျွန်ုပ်တွင် ကြီးမားသော သာဓကများ၊ အသေးအမွှားများအတွက် tfvar များရှိသည်။ ပြီးတော့ ကျွန်တော် ဖိုင်တစ်ဖိုင်ကို ဖိုဒါထဲကို ပစ်ချလိုက်တယ်။ ပြီးတော့ ငါလိုချင်တာကို ရခဲ့တယ်။ ကျွန်ုပ်တို့သည် အခြေခံအဆောက်အအုံများကို ဖြတ်တောက်လိုက်သည့်အခါ၊ အရာအားလုံးကို ကြည့်ရှုနိုင်ပြီး ချက်ချင်းနားလည်နိုင်စေရန် ကျွန်ုပ်တို့ အလိုရှိသည်။ ဒီတော့ မင်းဒီမှာကြည့်ရမယ်၊ ပြီးတော့ tfvars ကိုကြည့်ရမယ်။

အရာအားလုံးကို တစ်နေရာတည်းမှာ ရနိုင်ပါ့မလား။

ဟုတ်ကဲ့၊ tfvars သည် သင့်တွင် ကုဒ်တစ်ခုရှိသည့်အခါဖြစ်သည်။ ၎င်းကို မတူညီသော ကွဲပြားမှုများဖြင့် မတူညီသော နေရာများစွာတွင် အသုံးပြုသည်။ ထို့နောက် သင်သည် tfvars များကို ပစ်ချပြီး သင်၏ nuances များကို ရယူမည်ဖြစ်သည်။ ကျွန်ုပ်တို့သည် ၎င်း၏ အသန့်ရှင်းဆုံးပုံစံဖြင့် ကုဒ်အဖြစ် အခြေခံအဆောက်အအုံများဖြစ်သည်။ ကြည့်လိုက်တော့ နားလည်သွားတယ်။

မင်္ဂလာပါ! သင် Terraform ကို ပြုလုပ်ထားသည့်အရာကို cloud ဝန်ဆောင်မှုပေးသူက အနှောင့်အယှက်ပေးသည့် အခြေအနေများကို သင်ကြုံတွေ့ဖူးပါသလား။ မက်တာဒေတာကို ကျွန်ုပ်တို့ တည်းဖြတ်သည်ဆိုပါစို့။ ssh သော့များရှိသည်။ Google သည် ၎င်း၏ မက်တာဒေတာနှင့် ၎င်း၏သော့များကို အဆက်မပြတ် ထည့်သွင်းထားသည်။ Terraform သည် ပြောင်းလဲမှုများရှိကြောင်း အမြဲရေးသည်။ အပြေးတိုင်းပြီးတိုင်း ဘာမှ မပြောင်းလဲဘူးဆိုရင်တောင် ဒီနယ်ပယ်ကို အခုပဲ အပ်ဒိတ်လုပ်မယ်လို့ အမြဲပြောခဲ့ပါတယ်။

သော့များဖြင့်သော်လည်းကောင်း၊ အခြေခံအဆောက်အအုံ၏ အစိတ်အပိုင်းသည် ဤအရာကြောင့် ထိခိုက်နေသည်၊ ဆိုလိုသည်မှာ Terraform သည် မည်သည့်အရာကိုမျှ ပြောင်းလဲ၍မရပါ။ ငါတို့လက်နဲ့ ဘာမှမပြောင်းလဲနိုင်ဘူး။ ငါတို့က အဲဒါနဲ့ အတူတူနေမယ်။

ဆိုလိုတာက ဒီလိုမျိုး ကြုံဖူးပေမယ့် ဘာမှ ထူးမလာဘူး ၊ သူဘယ်လိုလုပ် ၊ သူ့ဘာသာသူ လုပ်နေတာလဲ ။

ကံမကောင်းစွာပဲ ဟုတ်တယ်။

မင်္ဂလာပါ! ကျွန်တော့်နာမည် Starkov Stanislav ပါ။ မေးလ်။ ru အဖွဲ့။ tag ထုတ်ပေးခြင်းပြဿနာကို ဘယ်လိုဖြေရှင်းမလဲ...၊ အတွင်းကို ဘယ်လိုကျော်ဖြတ်မလဲ။ ကျွန်ုပ်နားလည်သည့်အတိုင်း၊ အသုံးပြုသူ - ဒေတာမှတစ်ဆင့် လက်ခံသူအမည်ကို သတ်မှတ်ရန် Puppet ကို သတ်မှတ်ပါ။ မေးခွန်း၏ဒုတိယအပိုင်း။ SG တွင် ဤပြဿနာကို သင်မည်သို့ဖြေရှင်းနိုင်သနည်း၊ ဆိုလိုသည်မှာ သင်သည် SG ကိုထုတ်လုပ်သည့်အခါ၊ အမျိုးအစားတူသော ရာနှင့်ချီသော သာဓကများ၊ ၎င်းတို့အတွက် မှန်ကန်သောအမည်ကား အဘယ်နည်း။

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

tag နှင့်ပတ်သက်သောပြဿနာအတွက်၊ ထိုသို့သောပြဿနာမရှိသော်လည်းထိုကဲ့သို့သောအလုပ်တစ်ခုရှိသည်။ အခြေခံအဆောက်အအုံက ကြီးပြီး ဈေးကြီးတဲ့အတွက် tag တွေကို အရမ်းကြီးလေးသုံးပါတယ်။ ပြီးတော့ ငွေဘယ်ကိုသွားနေလဲဆိုတာကို ကြည့်ဖို့လိုတယ်၊ ဒါကြောင့် tags တွေက ဘယ်ကိုသွားလဲဆိုတာကို ခွဲခြမ်းစိတ်ဖြာနိုင်စေတယ်။ ထို့အပြင်၊ ဤနေရာတွင် ငွေအမြောက်အများ သုံးစွဲသည်ဟု ဆိုလိုသည့် အရာတစ်ခုကို ရှာဖွေသည်။

တခြားမေးခွန်းက ဘာလဲ။

SG သည် ရာနှင့်ချီသော သာဓကများကို ဖန်တီးသောအခါ၊ ၎င်းတို့ကို တစ်နည်းနည်းဖြင့် ခွဲခြားရန် လိုအပ်ပါသလား။

မလုပ်နဲ့။ ဥပမာတစ်ခုစီတွင် ကျွန်ုပ်မှာ ပြဿနာရှိနေကြောင်း သတင်းပို့သည့် အေးဂျင့်တစ်ဦးရှိသည်။ အေးဂျင့်က သတင်းပို့ရင် အေးဂျင့်က သူ့အကြောင်း သိပြီး အနည်းဆုံးတော့ သူ့ရဲ့ IP လိပ်စာ ရှိတယ်။ မင်း ပြေးနိုင်နေပြီ။ ဒုတိယအနေဖြင့် Kubernetes မရှိသည့် Discovery အတွက် ကောင်စစ်ဝန်ကို ကျွန်ုပ်တို့ အသုံးပြုပါသည်။ ထို့အပြင် ကောင်စစ်ဝန်သည် ဥပမာ၏ IP လိပ်စာကိုလည်း ပြသသည်။

ဆိုလိုသည်မှာ၊ သင်သည် host name ကိုမဟုတ်ဘဲ IP ကိုအထူးအာရုံစိုက်နေပါသလား။

အိမ်ရှင်အမည်ဖြင့် သွားလာရန် မဖြစ်နိုင်ကြောင်း၊ ဆိုလိုသည်မှာ ၎င်းတို့ အများအပြားရှိသည်။ ဥပမာ- AE စသည်ဖြင့် အစုံအလင်ရှိပါသည်၊ ၎င်းကို တစ်နေရာရာတွင် ရှာနိုင်သည်၊ ရှာဖွေမှုထဲသို့ ပစ်ထည့်နိုင်သည်။

မင်္ဂလာပါ! Terraform သည် တိမ်များအတွက် အံဝင်ခွင်ကျဖြစ်ပြီး ကောင်းမွန်သောအရာဖြစ်သည်ကို ကျွန်တော်နားလည်ခဲ့သည်။

သာမက။

ဒီမေးခွန်းက ကျွန်မကို စိတ်ဝင်စားတဲ့ မေးခွန်းပါ။ အကယ်၍ သင်သည် သင်၏ သာဓကများ အားလုံးနှင့်အတူ Bare Metal en Masse သို့ ပြောင်းရွှေ့ရန် ဆုံးဖြတ်ခဲ့သည် ။ ပြဿနာတစ်ခုခုရှိလာမှာလား။ သို့မဟုတ် ဤနေရာတွင်ဖော်ပြထားသော Ansible နှင့် အခြားထုတ်ကုန်များကို သင်အသုံးပြုရဦးမည်လား။

Ansible သည် အခြားအရာတစ်ခုအကြောင်း အနည်းငယ်ဖြစ်သည်။ ဆိုလိုသည်မှာ၊ Ansible သည် instance စတင်သောအခါတွင် အလုပ်လုပ်နေပြီဖြစ်သည်။ နှင့် Terraform သည် ဥပမာ မစတင်မီ အလုပ်လုပ်ပါသည်။ Bare Metal သို့ပြောင်းခြင်း - မဟုတ်ပါ။

အခုမဟုတ်သေးပေမယ့် စီးပွားရေးက “လာပါ” လို့ပြောလိမ့်မယ်။

အခြား cloud သို့ပြောင်းခြင်း - ဟုတ်သည်၊ သို့သော် ဤနေရာတွင် အနည်းငယ်ကွဲပြားသောလှည့်ကွက်တစ်ခုရှိပါသည်။ အားစိုက်ထုတ်မှုနည်း၍ အခြားသော cloud သို့ပြောင်းနိုင်စေရန် Terraform ကုဒ်ကို ရေးသားရန် လိုအပ်ပါသည်။

အစပိုင်းတွင်၊ ကျွန်ုပ်တို့၏အခြေခံအဆောက်အအုံတစ်ခုလုံးသည် ဘာသာမဲ့ဖြစ်သည်၊ ဆိုလိုသည်မှာ မည်သည့် cloud မဆို သင့်လျော်သည်ဟု သတ်မှတ်ထားသော်လည်း တစ်ချိန်ချိန်တွင် လုပ်ငန်းက စွန့်လွှတ်လိုက်ပြီး- "ကောင်းပြီ၊ လာမယ့် N နှစ်တွေမှာ ဘယ်မှမသွားတော့ဘူး၊ ဝန်ဆောင်မှုတွေကို သုံးလို့ရတယ်။ Amazon မှ "

Terraform သည် သင့်အား Front-End အလုပ်များကိုဖန်တီးရန်၊ PagerDuty၊ data doc စသည်တို့ကို configure လုပ်ခွင့်ပေးသည်။ ၎င်းတွင် အမြီးများစွာရှိသည်။ သူသည် ကမ္ဘာတစ်ခုလုံးကို လက်တွေ့ကျကျ ထိန်းချုပ်နိုင်သည်။

အစီရင်ခံစာအတွက် ကျေးဇူးတင်ပါသည်။ Terraform ကို သုံးနေတာ 4 နှစ်ရှိပါပြီ။ Terraform သို့ ချောမွေ့စွာ ကူးပြောင်းခြင်း အဆင့်တွင်၊ အခြေခံအဆောက်အအုံ၊ ကြေငြာချက်ဖော်ပြချက်ဆီသို့၊ တစ်စုံတစ်ဦးသည် လက်ဖြင့် တစ်စုံတစ်ယောက် လုပ်ဆောင်နေသည့် အခြေအနေနှင့် ရင်ဆိုင်ခဲ့ရပြီး သင်သည် အစီအစဉ်တစ်ခု ပြုလုပ်ရန် ကြိုးစားနေပါသည်။ ပြီးတော့ အဲဒီမှာ အမှားအယွင်း တစ်ခုခုတော့ ရှိတယ်။ ဒီလိုပြဿနာတွေကို ဘယ်လိုကိုင်တွယ်ဖြေရှင်းမလဲ။ စာရင်းသွင်းထားသော ဆုံးရှုံးသွားသော အရင်းအမြစ်များကို သင်မည်ကဲ့သို့ ရှာဖွေနိုင်မည်နည်း။

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

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

မဟုတ်ဘူး၊ ဒါက ပြဿနာတစ်ခုလို့ မြင်တဲ့လူရဲ့ ဆုံးဖြတ်ချက်ပဲ။

source: www.habr.com