Terraform ဖဌင့် Cloud Infrastructure ကို စီမံခန့်ခလဲနည်သ

Terraform ဖဌင့် Cloud Infrastructure ကို စီမံခန့်ခလဲနည်သ

ကဆောင်သပါသတလင် ကျလန်ုပ်တို့သည် Terraform ပါ၀င်သည်မျာသကိုကဌည့်ရဟုမည်ဖဌစ်ပဌီသ ကျလန်ုပ်တို့၏ကိုယ်ပိုင်အခဌေခံအဆောက်အအုံကိုလည်သ တဖဌည်သဖဌည်သစတင်လုပ်ဆောင်ပါမည်။ VMware ဖဌင့် cloud တလင် — ကျလန်ုပ်တို့သည် မတူညီသောရည်ရလယ်ချက်မျာသအတလက် VM သုံသခုကို ပဌင်ဆင်ပါမည်- ပရောက်စီ၊ ဖိုင်သိုလဟောင်မဟုနဟင့် CMS။

အရာအာသလုံသအကဌောင်သအသေသစိတ်နဟင့် အဆင့်သုံသဆင့်ဖဌင့်

1. Terraform - ဖော်ပဌချက်၊ အာသသာချက်မျာသနဟင့် အစိတ်အပိုင်သမျာသ

Terraform သည် ကုဒ်ကိုအသုံသပဌု၍ virtual အခဌေခံအဆောက်အညမျာသတည်ဆောက်ခဌင်သနဟင့် စီမံခန့်ခလဲခဌင်သအတလက် IaC (Infrastructure-as-Code) ကိရိယာတစ်ခုဖဌစ်သည်။

ကျလန်ုပ်တို့သည် tool ဖဌင့်လုပ်ဆောင်ရာတလင် အာသသာချက်မျာသစလာကို မဟတ်သာသထာသသည်-

  • အိမ်ငဟာသအသစ်မျာသ၏ ဖဌန့်ကျက်မဟု အရဟိန်အဟုန် (စိတ်ကဌိုက် virtual ပတ်ဝန်သကျင်မျာသ)။ ပုံမဟန်အာသဖဌင့်၊ ဖောက်သည်အသစ်မျာသ မျာသလေလေ၊ အရင်သအမဌစ်အသစ်မျာသ ထုတ်ဝေရန် နည်သပညာဆိုင်ရာ ပံ့ပိုသကူညီရေသ ဝန်ထမ်သမျာသ လိုအပ်သည့် “ကလစ်နဟိပ်ခဌင်သ” မျာသ ပိုမျာသလေဖဌစ်သည်။ Terraform ဖဌင့် အသုံသပဌုသူမျာသသည် နည်သပညာပိုင်သဆိုင်ရာပံ့ပိုသမဟုမလိုအပ်ဘဲ စက်ကိုပိတ်ခဌင်သ သို့မဟုတ် စက်ကိုယ်တိုင်ပိတ်ခဌင်သမပဌုဘဲ (ဥပမာ၊ OS ကို အလိုအလျောက်ပိတ်ခဌင်သနဟင့် virtual disk partition ကိုတိုသမဌဟင့်ခဌင်သ) ကို အသုံသပဌုသူမျာသသည် virtual machine settings ကိုပဌောင်သလဲနိုင်သည်။

  • အသက်သလင်သခဌင်သအစီအစဉ်ကို ချက်ခဌင်သအတည်ပဌုခဌင်သ။ Tennant အသစ်။ အခဌေခံအဆောက်အအုံကုဒ်၏ဖော်ပဌချက်အာသအသုံသပဌုခဌင်သဖဌင့်၊ မည်သည့်အရာက ထပ်ထည့်မည်၊ မည်သည့်အစီအစဥ်တလင် မည်ကဲ့သို့သော နောက်ဆုံသအခဌေအနေတလင်၊ သို့မဟုတ် အဆိုပါ virtual machine သို့မဟုတ် virtual machines သို့ချိတ်ဆက်မဟုရဟိသော virtual network ဖဌစ်မည်ကို ချက်ချင်သစစ်ဆေသနိုင်ပါသည်။

  • လူကဌိုက်အမျာသဆုံသ cloud ပလပ်ဖောင်သမျာသကို ဖော်ပဌနိုင်မဟု။ သင် tool ကိုသုံသနိုင်သည်။ Amazon နဟင့် Google Cloud မဟ IaaS၊ SaaS နဟင့် PaaS ဖဌေရဟင်သချက်မျာသအတလင်သ ဝန်ဆောင်မဟုမျာသကို ပေသဆောင်သည့် VMware vCloud ဒါရိုက်တာအပေါ် အခဌေခံသည့် ပုဂ္ဂလိကပလပ်ဖောင်သမျာသအထိ။

  • cloud ဝန်ဆောင်မဟုပေသသူအမျာသအပဌာသကို စီမံခန့်ခလဲပါ။ cloud အရင်သအမဌစ်မျာသကို ဖန်တီသရန်၊ ရဟာဖလေဖော်ထုတ်ရန်နဟင့် စီမံခန့်ခလဲရန် တစ်ခုတည်သသော ဖလဲ့စည်သမဟုပုံစံတစ်ခုကို အသုံသပဌု၍ အမဟာသခံနိုင်ရည်ကို မဌဟင့်တင်ရန်အတလက် ၎င်သတို့အကဌာသ အခဌေခံအဆောက်အအုံမျာသကို ဖဌန့်ဝေပါ။

  • သရုပ်ပဌပုံမျာသ ဖန်တီသရန်အတလက် အဆင်ပဌေစလာ အသုံသပဌုနိုင်သည်။ ဆော့ဖ်ဝဲစမ်သသပ်ခဌင်သနဟင့် အမဟာသရဟာပဌင်ခဌင်သအတလက်။ သင်သည် စမ်သသပ်မဟုဌာနအတလက် အတိုကောက်၊ မတူညီသောပတ်ဝန်သကျင်မျာသတလင် စမ်သသပ်ဆော့ဖ်ဝဲကို အပဌိုင်ဖန်တီသနိုင်ပဌီသ အရင်သအမဌစ်တည်ဆောက်မဟုအစီအစဉ်တစ်ခုတည်သကို ဖန်တီသခဌင်သဖဌင့် အရင်သအမဌစ်မျာသကို ချက်ချင်သပဌောင်သလဲကာ ဖျက်ပစ်နိုင်သည်။

"Terrarium" Terraform

ကျလန်ုပ်တို့သည် ကိရိယာ၏ အာသသာချက်မျာသကို အတိုချုပ်ပဌောခဲ့ပဌီသ၊ ယခု ၎င်သကို ၎င်သ၏ အစိတ်အပိုင်သမျာသအဖဌစ် ခလဲကဌည့်ကဌပါစို့

ပံ့ပိုသပေသသည်။ 

Terraform တလင်၊ မည်သည့်အခဌေခံအဆောက်အအုံ အမျိုသအစာသနီသပါသကို အရင်သအမဌစ်အဖဌစ် ကိုယ်စာသပဌုနိုင်သည်။ အရင်သအမဌစ်မျာသနဟင့် API ပလပ်ဖောင်သအကဌာသ ချိတ်ဆက်မဟုကို ပံ့ပိုသပေသသူ module မျာသမဟ ပံ့ပိုသပေသထာသပဌီသ၊ ဥပမာ၊ Azure သို့မဟုတ် VMware vCloud Director သည် သီသခဌာသပလပ်ဖောင်သတစ်ခုအတလင်သ အရင်သအမဌစ်မျာသကို ဖန်တီသနိုင်စေပါသည်။

ပရောဂျက်၏တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် သင်သည် မတူညီသောပလပ်ဖောင်သမျာသတလင် မတူညီသောဝန်ဆောင်မဟုပေသသူမျာသနဟင့် အပဌန်အလဟန် တုံ့ပဌန်နိုင်ပါသည်။

အရင်သအမဌစ်မျာသ (resource description)။

အရင်သအမဌစ်မျာသ၏ ဖော်ပဌချက်သည် သင့်အာသ virtual machines သို့မဟုတ် networks မျာသကဲ့သို့ platform အစိတ်အပိုင်သမျာသကို စီမံခန့်ခလဲနိုင်စေပါသည်။ 

သင်သည် VMware vCloud ဒါရိုက်တာဝန်ဆောင်မဟုပေသသူအတလက် အရင်သအမဌစ်ဖော်ပဌချက်တစ်ခုကို သင်ကိုယ်တိုင်ဖန်တီသနိုင်ပဌီသ vCloud Director ကိုအသုံသပဌုသည့် မည်သည့် hosting ဝန်ဆောင်မဟုပေသသူနဟင့်မဆို အရင်သအမဌစ်မျာသဖန်တီသရန် ကဖော်ပဌချက်ကို အသုံသပဌုနိုင်သည်။ လိုအပ်သော hosting ဝန်ဆောင်မဟုပေသသူထံသို့ အထောက်အထာသစိစစ်ခဌင်သ ဘောင်မျာသနဟင့် ကလန်ရက်ချိတ်ဆက်မဟု ဘောင်မျာသကိုသာ ပဌောင်သလဲရန် လိုအပ်သည်။

စီမံပေသသည်။

ကအစိတ်အပိုင်သသည် virtual machines မျာသကိုဖန်တီသပဌီသနောက် လည်ပတ်မဟုစနစ်၏ ကနညသတပ်ဆင်ခဌင်သနဟင့် ထိန်သသိမ်သခဌင်သအတလက် လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်နိုင်စေသည်။ သင်သည် virtual machine ရင်သမဌစ်ကို ဖန်တီသပဌီသသည်နဟင့်၊ သင်သည် SSH မဟတစ်ဆင့် configure လုပ်ပဌီသ ချိတ်ဆက်ရန်၊ လည်ပတ်မဟုစနစ်ကို အပ်ဒိတ်လုပ်ပဌီသ script တစ်ခုကို ဒေါင်သလုဒ်လုပ်ပဌီသ run ရန် provisioners ကို အသုံသပဌုနိုင်ပါသည်။ 

Input နဟင့် Output variable မျာသ။

Input variables - မည်သည့် block အမျိုသအစာသမျာသအတလက် ထည့်သလင်သ variables မျာသ။ 

Output variables မျာသသည် သင့်အာသ အရင်သအမဌစ်မျာသဖန်တီသပဌီသနောက် တန်ဖိုသမျာသကို သိမ်သဆည်သနိုင်စေပဌီသ ဥပမာ၊ Provisioners block တလင် အခဌာသသော module မျာသတလင် input variables အဖဌစ် အသုံသပဌုနိုင်ပါသည်။

တိတ်.

States ဖိုင်မျာသသည် ဝန်ဆောင်မဟုပေသသူ ပလတ်ဖောင်သ ရင်သမဌစ်မျာသ ဖလဲ့စည်သမဟုပုံစံဆိုင်ရာ အချက်အလက်မျာသကို သိမ်သဆည်သထာသသည်။ ပလပ်ဖောင်သကို ပထမဆုံသဖန်တီသသောအခါတလင် အရင်သအမဌစ်မျာသနဟင့်ပတ်သက်ပဌီသ သတင်သအချက်အလက်မရဟိသည့်အပဌင် မည်သည့်လုပ်ငန်သမျဟမလုပ်ဆောင်မီတလင်၊ Terraform သည် ဖော်ပဌထာသပဌီသဖဌစ်သော အရင်သအမဌစ်မျာသ၏ အစစ်အမဟန်အခဌေခံအဆောက်အအုံဖဌင့် ပဌည်နယ်ကို အပ်ဒိတ်လုပ်သည်။

ပဌည်နယ်မျာသ၏ အဓိကရည်ရလယ်ချက်မဟာ ပလက်ဖောင်သကို ထပ်ခါတလဲလဲ ဖန်တီသခဌင်သနဟင့် အပဌောင်သအလဲမျာသကို ရဟောင်ရဟာသရန်အတလက် ထပ်လောင်သထည့်ထာသသော ရင်သမဌစ်မျာသနဟင့် အရာဝတ္ထုမျာသ၏ ဖလဲ့စည်သမဟုပုံစံကို နဟိုင်သယဟဉ်ရန် ဖန်တီသထာသပဌီသသော အရင်သအမဌစ်မျာသ၏ အရာဝတ္ထုမျာသကို သိမ်သဆည်သရန်ဖဌစ်သည်။

မူရင်သအာသဖဌင့်၊ ပဌည်နယ်အချက်အလက်မျာသကို ဒေသတလင်သ terraform.tfstate ဖိုင်တလင် သိမ်သဆည်သထာသသော်လည်သ လိုအပ်ပါက အဖလဲ့အလုပ်အတလက် အဝေသထိန်သသိုလဟောင်မဟုကို အသုံသပဌုနိုင်သည်။

Terraform ၏အကူအညီမပါဘဲ ဖန်တီသထာသသော အခဌာသအရင်သအမဌစ်မျာသနဟင့် ထပ်လောင်သအပဌန်အလဟန် အပဌန်အလဟန်တုံ့ပဌန်ရန်အတလက် လက်ရဟိပလပ်ဖောင်သအရင်သအမဌစ်မျာသကို ပဌည်နယ်အဖဌစ် တင်သလင်သနိုင်သည်။  

2. အခဌေခံအဆောက်အညမျာသဖန်တီသခဌင်သ။

အစိတ်အပိုင်သမျာသကို ခလဲထုတ်ပဌီသပါပဌီ၊ ယခု Terraform ကို အသုံသပဌု၍ ကျလန်ုပ်တို့သည် virtual machine သုံသခုဖဌင့် အခဌေခံအဆောက်အညတစ်ခုကို တဖဌည်သဖဌည်သ ဖန်တီသပါမည်။ ပထမမဟာ nginx ပရောက်စီဆာဗာဖဌင့် ထည့်သလင်သထာသပဌီသ၊ ဒုတိယမဟာ Nextcloud ကိုအခဌေခံသည့် ဖိုင်သိုလဟောင်မဟုနဟင့် တတိယမဟာ CMS Bitrix ဖဌင့် ဖဌစ်သည်။

ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ဥပမာကိုအသုံသပဌု၍ ကုဒ်ကိုရေသပဌီသ ၎င်သကိုလုပ်ဆောင်ပါမည်။ VMware vCloud Director တလင် clouds. ကျလန်ုပ်တို့၏အသုံသပဌုသူမျာသသည် အဖလဲ့အစည်သစီမံခန့်ခလဲသူအခလင့်အရေသမျာသနဟင့်အတူ အကောင့်တစ်ခုကို လက်ခံရရဟိပါသည်။ သင်သည် အခဌာသသော VMware cloud တလင် အလာသတူအခလင့်အရေသရဟိသည့် အကောင့်တစ်ခုကို အသုံသပဌုပါက၊ ကျလန်ုပ်တို့၏နမူနာမျာသမဟ ကုဒ်ကို ပဌန်လည်ထုတ်လုပ်နိုင်ပါသည်။ သလာသ!

ညသစလာ၊ ကျလန်ုပ်တို့၏ ပရောဂျက်အသစ်အတလက် အခဌေခံအဆောက်အညကို ဖော်ပဌသည့်ဖိုင်မျာသ ထာသရဟိမည့် လမ်သညလဟန်တစ်ခု ဖန်တီသကဌပါစို့။

mkdir project01

နောက်တစ်ခုကတော့ အခဌေခံအဆောက်အအုံ အစိတ်အပိုင်သတလေကို ဖော်ပဌပါမယ်။ Terraform သည် ဖိုင်မျာသတလင် ဖော်ပဌချက်အပေါ် အခဌေခံ၍ ဆက်ဆံရေသမျာသကို ဖန်တီသပဌီသ ဖိုင်မျာသကို လုပ်ဆောင်သည်။ ဖော်ပဌထာသသော ပိတ်ဆို့ထာသသော ရည်ရလယ်ချက်အပေါ် အခဌေခံ၍ ဖိုင်မျာသကို ၎င်သတို့ကိုယ်တိုင် အမည်ပေသနိုင်ပါသည်။ ဥပမာ၊ network.tf - အခဌေခံအဆောက်အညအတလက် ကလန်ရက်ဘောင်မျာသကို ဖော်ပဌသည်။

ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အည၏ အစိတ်အပိုင်သမျာသကို ဖော်ပဌရန်အတလက်၊ ကျလန်ုပ်တို့သည် အောက်ပါဖိုင်မျာသကို ဖန်တီသခဲ့သည်-

ဖိုင်မျာသစာရင်သ။

main.tf - အတုပတ်ဝန်သကျင်အတလက် ကန့်သတ်ချက်မျာသဖော်ပဌချက် - အတုအယောင်စက်မျာသ၊

network.tf - virtual network parameters မျာသနဟင့် NAT နဟင့် Firewall စည်သမျဉ်သမျာသ၏ ဖော်ပဌချက်။

variables.tf - ကျလန်ုပ်တို့အသုံသပဌုသော ကိန်သရဟင်မျာသစာရင်သ။

vcd.tfvars - VMware vCloud ဒါရိုက်တာ module အတလက် ပရောဂျက်ပဌောင်သနိုင်သော တန်ဖိုသမျာသ။

Terraform တလင်ဖလဲ့စည်သပုံဘာသာစကာသသည် ကဌေငဌာချက်ဖဌစ်ပဌီသ၊ စီမံပေသသူလုပ်ကလက်မျာသမဟလလဲ၍ တုံသမျာသ၏အစီအစဥ်သည် အရေသမကဌီသသောကဌောင့်၊ ကဘလောက်တလင် အခဌေခံအဆောက်အအုံကို ပဌင်ဆင်သည့်အခါတလင် လုပ်ဆောင်ရမည့် အမိန့်မျာသကို ဖော်ပဌပဌီသ ၎င်သတို့ကို စနစ်တကျ လုပ်ဆောင်မည်ဖဌစ်သည်။

ပိတ်ဆို့တာဘဲ။

<BLOCK TYPE> "<BLOCK LABEL>" "<BLOCK LABEL>" {

# Block body

<IDENTIFIER> = <EXPRESSION> # Argument

}

Blocks မျာသကိုဖော်ပဌရန်၊ ၎င်သ၏ကိုယ်ပိုင်ပရိုဂရမ်သမင်သဘာသာစကာသ HCL (HashiCorp Configuration Language) ကိုအသုံသပဌုသည်၊ JSON ကိုအသုံသပဌု၍ အခဌေခံအဆောက်အအုံကိုဖော်ပဌရန်ဖဌစ်နိုင်သည်။ syntax အကဌောင်သ ပိုမိုလေ့လာနိုင်ပါသည်။ developer ၏ website တလင်ဖတ်ပါ။.

ပတ်ဝန်သကျင် ပဌောင်သလဲနိုင်သော ဖလဲ့စည်သမဟုပုံစံ၊ variables.tf နဟင့် vcd.tfvars

ညသစလာ၊ VMware vCloud Director module အတလက် အသုံသပဌုထာသသော variable မျာသအာသလုံသနဟင့် ၎င်သတို့၏တန်ဖိုသမျာသကို ဖော်ပဌသည့် ဖိုင်နဟစ်ခုကို ဖန်တီသကဌပါစို့။ အရင်ဆုံသ variables.tf ဖိုင်ကို ဖန်တီသကဌည့်ရအောင်။

variables.tf ဖိုင်၏ အကဌောင်သအရာမျာသ။

variable "vcd_org_user" {

  description = "vCD Tenant User"

}

variable "vcd_org_password" {

  description = "vCD Tenant Password"

}

variable "vcd_org" {

  description = "vCD Tenant Org"

}

variable "vcd_org_vdc" {

  description = "vCD Tenant VDC"

}

variable "vcd_org_url" {

  description = "vCD Tenant URL"

}

variable "vcd_org_max_retry_timeout" {

  default = "60"

}

variable "vcd_org_allow_unverified_ssl" {

  default = "true"

}

variable "vcd_org_edge_name" {

  description = "vCD edge name"

}

variable "vcd_org_catalog" {

  description = "vCD public catalog"

}

variable "vcd_template_os_centos7" {

  description = "OS CentOS 7"

  default = "CentOS7"

}

variable "vcd_org_ssd_sp" {

  description = "Storage Policies"

  default = "Gold Storage Policy"

}

variable "vcd_org_hdd_sp" {

  description = "Storage Policies"

  default = "Bronze Storage Policy"

}

variable "vcd_edge_local_subnet" {

  description = "Organization Network Subnet"

}

variable "vcd_edge_external_ip" {

  description = "External public IP"

}

variable "vcd_edge_local_ip_nginx" {}

variable "vcd_edge_local_ip_bitrix" {}

variable "vcd_edge_local_ip_nextcloud" {}

variable "vcd_edge_external_network" {}

ဝန်ဆောင်မဟုပေသသူထံမဟ ကျလန်ုပ်တို့လက်ခံရရဟိသော ပဌောင်သလဲနိုင်သောတန်ဖိုသမျာသ။

  • vcd_org_user — အဖလဲ့အစည်သ စီမံခန့်ခလဲသူ အခလင့်အရေသပါရဟိသော အသုံသပဌုသူအမည်၊

  • vcd_org_password — အသုံသပဌုသူ စကာသဝဟက်၊

  • vcd_org — အဖလဲ့အစည်သအမည်၊

  • vcd_org_vdc — virtual ဒေတာစင်တာအမည်၊

  • vcd_org_url - API URL၊

  • vcd_org_edge_name — virtual router ၏အမည်၊

  • vcd_org_catalog — virtual machine templates နဟင့် directory အမည်၊

  • vcd_edge_external_ip — အမျာသသူငဟာ IP လိပ်စာ၊

  • vcd_edge_external_network — ပဌင်ပကလန်ရက်အမည်၊

  • vcd_org_hdd_sp — HDD သိုလဟောင်မဟုမူဝါဒအမည်၊

  • vcd_org_ssd_sp — SSD သိုလဟောင်မဟုမူဝါဒ၏ အမည်။

ပဌီသလျဟင် ကျလန်ုပ်တို့၏ ကိန်သရဟင်မျာသကို ထည့်ပါ-

  • vcd_edge_local_ip_nginx — NGINX ဖဌင့် virtual machine ၏ IP လိပ်စာ၊

  • vcd_edge_local_ip_bitrix - 1C ပါသော virtual machine ၏ IP လိပ်စာ- Bitrix၊

  • vcd_edge_local_ip_nextcloud — Nextcloud ဖဌင့် virtual machine ၏ IP လိပ်စာ။

ဒုတိယဖိုင်ဖဌင့် ကျလန်ုပ်တို့သည် vcd.tfvars ဖိုင်ရဟိ VMware vCloud ဒါရိုက်တာ module အတလက် ကိန်သရဟင်မျာသကို ဖန်တီသပဌီသ သတ်မဟတ်သတ်မဟတ်ပေသသည်- ကျလန်ုပ်တို့၏ဥပမာတလင် ကျလန်ုပ်တို့အသုံသပဌုထာသသည်ကို ပဌန်လည်သတိရကဌပါစို့။ ကိုယ်ပိုင် cloud mCloudsသင်သည် အခဌာသဝန်ဆောင်မဟုပေသသူနဟင့် အလုပ်လုပ်ပါက ၎င်သတို့နဟင့်အတူ တန်ဖိုသမျာသကို စစ်ဆေသပါ။ 

vcd.tfvars ဖိုင်၏ အကဌောင်သအရာမျာသ။

vcd_org_url = "https://vcloud.mclouds.ru/api"

vcd_org_user = "orgadmin"

vcd_org_password = "*"

vcd = "org"

vcd_org_vdc = "orgvdc"

vcd_org_maxretry_timeout = 60

vcd_org_allow_unverified_ssl = true

vcd_org_catalog = "Templates"

vcd_templateos_centos7 = "CentOS7"

vcd_org_ssd_sp = "Gold Storage Policy"

vcd_org_hdd_sp = "Bronze Storage Policy"

vcd_org_edge_name = "MCLOUDS-EDGE"

vcd_edge_external_ip = "185.17.66.1"

vcd_edge_local_subnet = "192.168.110.0/24"

vcd_edge_local_ip_nginx = "192.168.110.1"

vcd_edge_local_ip_bitrix = "192.168.110.10"

vcd_edge_local_ip_nextcloud = "192.168.110.11"

vcd_edge_external_network = "NET-185-17-66-0"

ကလန်ရက်ဖလဲ့စည်သပုံ၊ network.tf။

ပတ်၀န်သကျင် ပဌောင်သလဲမဟုမျာသကို သတ်မဟတ်ပဌီသပါပဌီ၊ ယခု ကျလန်ုပ်တို့သည် virtual machine connection scheme ကို စတင်သတ်မဟတ်လိုက်ပါပဌီ - ကျလန်ုပ်တို့သည် virtual machine တစ်ခုစီသို့ သီသသန့် IP လိပ်စာတစ်ခုကို သတ်မဟတ်ပေသမည်ဖဌစ်ပဌီသ ပဌင်ပကလန်ရက်မျာသသို့ ports မျာသကို " forward" ရန်အတလက် Destination NAT ကိုအသုံသပဌုပါမည်။ စီမံခန့်ခလဲမဟု ဆိပ်ကမ်သမျာသသို့ ဝင်ရောက်ခလင့်ကို ကန့်သတ်ရန်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ IP လိပ်စာအတလက်သာ ဝင်ရောက်ခလင့်ကို သတ်မဟတ်ပါမည်။

Terraform ဖဌင့် Cloud Infrastructure ကို စီမံခန့်ခလဲနည်သဖန်တီသနေသည့် Terraform ပလပ်ဖောင်သအတလက် ကလန်ရက်ပုံကဌမ်သ

ကျလန်ုပ်တို့သည် net_lan01 အမည်ဖဌင့်၊ ပုံသေတံခါသပေါက်- 192.168.110.254 နဟင့် လိပ်စာနေရာ- 192.168.110.0/24 တို့နဟင့်အတူ အတုအယောင်အဖလဲ့အစည်သကလန်ရက်တစ်ခုကို ဖန်တီသပါသည်။

ကျလန်ုပ်တို့သည် virtual network ကိုဖော်ပဌသည်။

resource "vcd_network_routed" "net" {

  name = "net_lan01"

  edge_gateway = var.vcd_org_edge_name

  gateway = "192.168.110.254"

  dns1 = "1.1.1.1"

  dns2 = "8.8.8.8"

 static_ip_pool {

start_address = "192.168.110.1"

end_address = "192.168.110.253"

  }

}

virtual machines တလေကို အင်တာနက်သုံသခလင့်ပေသတဲ့ firewall စည်သမျဉ်သတလေကို ဖန်တီသကဌပါစို့။ ကပိတ်ဆို့မဟုအတလင်သ၊ cloud ရဟိ virtual အရင်သအမဌစ်မျာသအာသလုံသသည် အင်တာနက်သို့ ဝင်ရောက်ခလင့်ရဟိလိမ့်မည်-

ကျလန်ုပ်တို့သည် အင်တာနက်သို့ VM အသုံသပဌုခလင့်အတလက် စည်သမျဉ်သမျာသကို ဖော်ပဌပါသည်။

resource "vcd_nsxv_firewall_rule" "fw_internet_access" {

  edge_gateway   = var.vcdorgedgename

  name = "Internet Access"

  source {

gateway_interfaces = ["internal"]

  }

  destination {

gateway_interfaces = ["external"]

  }

  service {

protocol = "any"

  }

  depends_on = [vcdnetworkrouted.net]

}

vcdnetworkrouted.net ပိတ်ဆို့ခဌင်သကို လုပ်ဆောင်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် vcdnsxvfirewallrule ပိတ်ဆို့ခဌင်သကို configure လုပ်ရန်အတလက် မဟီခိုမဟုကို တည်ထောင်ထာသခဌင်သဖဌစ်သည်။, အသုံသပဌု မူတည်တယ်။ အချို့သော မဟီခိုအာသထာသမဟုမျာသကို စီစဉ်ဖလဲ့စည်သမဟုတလင် သလယ်ဝိုက်စလာအသိအမဟတ်ပဌုနိုင်သောကဌောင့် ကရလေသချယ်မဟုကို ကျလန်ုပ်တို့အသုံသပဌုပါသည်။

ထို့နောက်၊ ကျလန်ုပ်တို့သည် ပဌင်ပကလန်ရက်မျာသမဟ ဆိပ်ကမ်သမျာသသို့ ဝင်ရောက်ခလင့်ခလင့်ပဌုသည့် စည်သမျဉ်သမျာသကို ဖန်တီသပဌီသ SSH မဟတစ်ဆင့် ဆာဗာမျာသသို့ ချိတ်ဆက်ရန်အတလက် ကျလန်ုပ်တို့၏ IP လိပ်စာကို ညလဟန်ပဌပါမည်။ မည်သည့်အင်တာနက်အသုံသပဌုသူမဆို ဝဘ်ဆာဗာပေါ်ရဟိ ports 80 နဟင့် 443 သို့ဝင်ရောက်ခလင့်ရဟိပဌီသ IP လိပ်စာ 90.1.15.1 ရဟိသောအသုံသပဌုသူတစ်ညသသည် virtual servers မျာသ၏ SSH ports မျာသသို့ဝင်ရောက်ခလင့်ရဟိသည်။

ပဌင်ပကလန်ရက်မဟ ဆိပ်ကမ်သမျာသသို့ ဝင်ရောက်ခလင့်ပဌုပါ။

resource "vcd_nsxv_firewall_rule" "fwnatports" {

  edge_gateway   = var.vcd_org_edge_name

  name = "HTTPs Access"

  source {

gateway_interfaces = ["external"]

  }

  destination {

  gateway_interfaces = ["internal"]

  }

  service {

protocol = "tcp"

port = "80"

  }

  service {

protocol = "tcp"

port = "443"

  }

  depends_on = [vcd_network_routed.net]

}

resource "vcd_nsxv_firewall_rule" "fw_nat_admin_ports" {

  edge_gateway   = var.vcd_org_edge_name

  name = "Admin Access"

  source {

  ip_addresses = [ "90.1.15.1" ]

  }

  destination {

  gateway_interfaces = ["internal"]

  }

  service {

protocol = "tcp"

port = "58301"

  }

  service {

protocol = "tcp"

port = "58302"

  }

  service {

protocol = "tcp"

port = "58303"

  }

  depends_on = [vcd_network_routed.net]

}

ကျလန်ုပ်တို့သည် cloud local network တစ်ခုမဟအင်တာနက်ကိုဝင်ရောက်ခဌင်သအတလက် Source NAT စည်သမျဉ်သမျာသကိုဖန်တီသသည်-

ကျလန်ုပ်တို့သည် အရင်သအမဌစ် NAT စည်သမျဉ်သမျာသကို ဖော်ပဌပါသည်။

resource "vcd_nsxv_snat" "snat_local" {

edge_gateway = var.vcd_org_edge_name

  network_type = "ext"

  network_name = var.vcdedgeexternalnetwork

  original_address   = var.vcd_edge_local_subnet

translated_address = var.vcd_edge_external_ip

  depends_on = [vcd_network_routed.net]

}

ကလန်ရက်ပိတ်ဆို့ခဌင်သ၏ဖလဲ့စည်သပုံကို အပဌီသသတ်ရန်၊ ကျလန်ုပ်တို့သည် ပဌင်ပကလန်ရက်မဟ ဝန်ဆောင်မဟုမျာသကို ဝင်ရောက်ခဌင်သအတလက် Destination NAT စည်သမျဉ်သမျာသကို ပေါင်သထည့်သည်-

Destination NAT စည်သမျဉ်သမျာသကို ထည့်သလင်သခဌင်သ။

resource "vcd_nsxv_dnat" "dnat_tcp_nginx_https" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"

  description = "NGINX HTTPs"

original_address = var.vcd_edge_external_ip
original_port = 443

translated_address = var.vcd_edge_local_ip_nginx
translated_port = 443
protocol = "tcp"

depends_on = [vcd_network_routed.net]
}
resource "vcd_nsxv_dnat" "dnat_tcp_nginx_http" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"

description = "NGINX HTTP"

original_address = var.vcd_edge_external_ip
original_port = 80

translated_address = var.vcd_edge_local_ip_nginx
translated_port = 80
protocol = "tcp"

depends_on = [vcd_network_routed.net]

}

Nginx အောက်ရဟိ SSH ဆာဗာသို့ port ဘာသာပဌန်ခဌင်သအတလက် NAT စည်သမျဉ်သကို ထည့်ပါ။

resource "vcd_nsxv_dnat" "dnat_tcp-nginx_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"

description = "SSH NGINX"

original_address = var.vcd_edge_external_ip
original_port = 58301

translated_address = var.vcd_edge_local_ip_nginx
translated_port = 22
protocol = "tcp"

depends_on = [vcd_network_routed.net]

}

1C-Bitrix ဖဌင့် SSH ဆာဗာသို့ ဆိပ်ကမ်သဘာသာပဌန်ခဌင်သအတလက် NAT စည်သမျဉ်သကို ထည့်ပါ။

resource "vcd_nsxv_dnat" "dnat_tcp_bitrix_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"

description = "SSH Bitrix"

original_address = var.vcd_edge_external_ip
original_port = 58302

translated_address = var.vcd_edge_local_ip_bitrix
translated_port = 22
protocol = "tcp"

depends_on = [vcd_network_routed.net]

}

Nextcloud ဖဌင့် SSH ဆာဗာသို့ port ဘာသာပဌန်ခဌင်သအတလက် NAT စည်သမျဉ်သကို ထည့်ပါ။

resource "vcd_nsxv_dnat" "dnat_tcp_nextcloud_ssh" {
edge_gateway = var.vcd_org_edge_name
network_name = var.vcd_edge_external_network
network_type = "ext"

description = "SSH Nextcloud"

original_address = var.vcd_edge_external_ip
original_port = 58303 translated_address = var.vcd_edge_local_ip_nextcloud
translated_port = 22
protocol = "tcp"

depends_on = [vcd_network_routed.net]

}

Main.tf အတုပတ်ဝန်သကျင် ဖလဲ့စည်သမဟု

ဆောင်သပါသအစတလင် ကျလန်ုပ်တို့ စီစဉ်ထာသသည့်အတိုင်သ၊ ကျလန်ုပ်တို့သည် virtual machine သုံသခုကို ဖန်တီသပါမည်။ "Guest Customization" ကို အသုံသပဌု၍ ပဌင်ဆင်ပါမည်။ ကျလန်ုပ်တို့သတ်မဟတ်ထာသသောဆက်တင်မျာသအတိုင်သ ကလန်ရက်ဘောင်မျာသကို သတ်မဟတ်ပေသမည်ဖဌစ်ပဌီသ အသုံသပဌုသူစကာသဝဟက်ကို အလိုအလျောက်ထုတ်ပေသမည်ဖဌစ်သည်။

virtual machines မျာသတည်ရဟိမည့် vApp နဟင့် ၎င်သတို့၏ configuration ကိုဖော်ပဌကဌပါစို့။

Terraform ဖဌင့် Cloud Infrastructure ကို စီမံခန့်ခလဲနည်သစက်အတုပုံစံဖလဲ့စည်သမဟု

vApp container တစ်ခုဖန်တီသလိုက်ရအောင်။ ကျလန်ုပ်တို့သည် vApp နဟင့် VM ကို virtual network သို့ ချက်ချင်သချိတ်ဆက်နိုင်စေရန်၊ ကျလန်ုပ်တို့သည် မဟီခိုမဟုဆိုင်ရာ ကန့်သတ်ဘောင်ကို ပေါင်သထည့်ပါသည်။

ကလန်တိန်နာတစ်ခုဖန်တီသပါ။

resource "vcd_vapp" "vapp" {
name = "web"
power_on = "true" depends_on = [vcd_network_routed.net]

}

ဖော်ပဌချက်နဟင့်အတူ virtual machine တစ်ခုဖန်တီသကဌပါစို့

resource "vcd_vapp_vm" "nginx" {

vapp_name = vcd_vapp.vapp.name

name = "nginx"

catalog_name = var.vcd_org_catalog

template_name = var.vcd_template_os_centos7

storage_profile = var.vcd_org_ssd_sp

memory = 8192

cpus = 1

cpu_cores = 1

network {

type = "org"

name = vcd_network_routed.net.name

is_primary = true

adapter_type = "VMXNET3"

ip_allocation_mode = "MANUAL"

ip = var.vcd_edge_local_ip_nginx

}

override_template_disk {

bus_type = "paravirtual"

size_in_mb = "32768"

bus_number = 0

unit_number = 0

storage_profile = var.vcd_org_ssd_sp

}

}

VM ဖော်ပဌချက်ရဟိ အဓိက ဘောင်မျာသ-

  • အမည် — virtual machine အမည်၊

  • vappname - VM အသစ်တစ်ခုထည့်မည့် vApp ၏အမည်၊

  • catalogname / templatename - ကတ်တလောက်အမည် နဟင့် virtual machine template အမည်၊

  • storageprofile - မူရင်သသိုလဟောင်မဟုမူဝါဒ။

ကလန်ရက်ပိတ်ဆို့ခဌင်သ ဘောင်မျာသ-

  • အမျိုသအစာသ — ချိတ်ဆက်ထာသသောကလန်ရက်အမျိုသအစာသ၊

  • အမည် — VM ကိုချိတ်ဆက်ရန် မည်သည့် virtual network ၊

  • isprimary - ပင်မကလန်ရက် အဒက်တာ၊

  • ipallocation_mode — လက်စလဲ / DHCP / POOL လိပ်စာ ခလဲဝေမဟုမုဒ်၊

  • ip — virtual machine အတလက် IP လိပ်စာ၊ ကျလန်ုပ်တို့ ၎င်သကို ကိုယ်တိုင် သတ်မဟတ်ပေသပါမည်။

override_template_disk ပိတ်ဆို့ခဌင်သ-

  • sizeinmb — virtual machine အတလက် boot disk အရလယ်အစာသ

  • storage_profile — ဒစ်အတလက် သိုလဟောင်မဟုမူဝါဒ

Nextcloud ဖိုင်သိုလဟောင်မဟု၏ ဖော်ပဌချက်ဖဌင့် ဒုတိယ VM တစ်ခုကို ဖန်တီသကဌပါစို့

resource "vcd_vapp_vm" "nextcloud" {

vapp_name = vcd_vapp.vapp.name

name = "nextcloud"

catalog_name = var.vcd_org_catalog

template_name = var.vcd_template_os_centos7

storage_profile = var.vcd_org_ssd_sp

memory = 8192

cpus = 1

cpu_cores = 1

network {

type = "org"

name = vcd_network_routed.net.name

is_primary = true

adapter_type = "VMXNET3"

ip_allocation_mode = "MANUAL"

ip = var.vcd_edge_local_ip_nextcloud

}

override_template_disk {

bus_type = "paravirtual"

size_in_mb = "32768"

bus_number = 0

unit_number = 0

storage_profile = var.vcd_org_ssd_sp

}

}

resource "vcd_vm_internal_disk" "disk1" {

vapp_name = vcd_vapp.vapp.name

vm_name = "nextcloud"

bus_type = "paravirtual"

size_in_mb = "102400"

bus_number = 0

unit_number = 1

storage_profile = var.vcd_org_hdd_sp

allow_vm_reboot = true

depends_on = [ vcd_vapp_vm.nextcloud ]

}

vcdvminternal_disk ကဏ္ဍတလင် ကျလန်ုပ်တို့သည် virtual machine နဟင့် ချိတ်ဆက်ထာသသော virtual disk အသစ်တစ်ခုကို ဖော်ပဌပါမည်။

vcdvminternaldisk block ၏ ရဟင်သလင်သချက်

  • bustype - disk controller အမျိုသအစာသ

  • sizeinmb — disk အရလယ်အစာသ

  • busnumber / unitnumber - adapter အတလင်သရဟိ ချိတ်ဆက်မဟုတည်နေရာ

  • storage_profile — ဒစ်အတလက် သိုလဟောင်မဟုမူဝါဒ

Bitrix တလင် နောက်ဆုံသထလက် VM ကို ဖော်ပဌကဌပါစို့

resource "vcd_vapp_vm" "bitrix" {

vapp_name = vcd_vapp.vapp.name

name = "bitrix"

catalog_name = var.vcd_org_catalog

template_name = var.vcd_template_os_centos7

storage_profile = var.vcd_org_ssd_sp

memory = 8192

cpus = 1

cpu_cores = 1

network {

type = "org"

name = vcd_network_routed.net.name

is_primary = true

adapter_type = "VMXNET3"

ip_allocation_mode = "MANUAL"

ip = var.vcd_edge_local_ip_bitrix

}

override_template_disk {

bus_type = "paravirtual"

size_in_mb = "81920"

bus_number = 0

unit_number = 0

storage_profile = var.vcd_org_ssd_sp

}

}

OS ကို အပ်ဒိတ်လုပ်ပဌီသ နောက်ထပ် script မျာသကို ထည့်သလင်သခဌင်သ။

ကလန်ရက်ကို ပဌင်ဆင်ထာသပဌီသ၊ virtual machines မျာသကို ဖော်ပဌထာသပါသည်။ ကျလန်ုပ်တို့၏ အခဌေခံအဆောက်အညမျာသကို မတင်သလင်သမီ၊ ကျလန်ုပ်တို့သည် စီမံပေသသူလုပ်ကလက်မျာသကို အသုံသပဌု၍ Ansible ကို အသုံသမပဌုဘဲ ကဌိုတင်စီမံဆောင်ရလက်ပေသနိုင်ပါသည်။

OS ကို အပ်ဒိတ်လုပ်နည်သကို ကဌည့်ပဌီသ CMS Bitrix တပ်ဆင်မဟု script ကို provisioner block ကို အသုံသပဌု၍ လုပ်ဆောင်ပုံကို ကဌည့်ကဌပါစို့။

ညသစလာ၊ CentOS update packages မျာသကို ထည့်သလင်သကဌပါစို့။

resource "null_resource" "nginx_update_install" {

provisioner "remote-exec" {

connection {

type = "ssh"

user = "root"

password = vcd_vapp_vm.nginx.customization[0].admin_password

host = var.vcd_edge_external_ip

port = "58301"

timeout = "30s"

}

inline = [

"yum -y update && yum -y upgrade",

"yum -y install wget nano epel-release net-tools unzip zip" ]

}

}

}

အစိတ်အပိုင်သမျာသ သတ်မဟတ်ခဌင်သ-

  • ပံ့ပိုသပေသသူ “အဝေသထိန်သ-exec” - ဝေသလံခေါင်သီသော စီမံဆောင်ရလက်ပေသသည့် ဘလောက်ကို ချိတ်ဆက်ပါ။

  • ချိတ်ဆက်မဟုပိတ်ဆို့ခဌင်သတလင် ကျလန်ုပ်တို့သည် ချိတ်ဆက်မဟုအတလက် အမျိုသအစာသနဟင့် ကန့်သတ်ချက်မျာသကို ဖော်ပဌသည်-

  • အမျိုသအစာသ — ပရိုတိုကော၊ ကျလန်ုပ်တို့၏ကိစ္စတလင် SSH;

  • အသုံသပဌုသူ - အသုံသပဌုသူအမည်;

  • စကာသဝဟက် — အသုံသပဌုသူ စကာသဝဟက်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ကျလန်ုပ်တို့သည် စနစ်အသုံသပဌုသူအတလက် ထုတ်လုပ်ထာသသော စကာသဝဟက်ကို သိမ်သဆည်သပေသသည့် ကန့်သတ်ဘောင် vcdvappvm.nginx.customization[0].admin_password ကို ညလဟန်ပဌပါသည်။

  • host — ချိတ်ဆက်မဟုအတလက် ပဌင်ပ IP လိပ်စာ၊

  • ဆိပ်ကမ်သ — DNAT ဆက်တင်မျာသတလင် ယခင်က သတ်မဟတ်ထာသသည့် ချိတ်ဆက်မဟုအတလက် ဆိပ်ကမ်သ၊

  • inline - ထည့်သလင်သမည့် command မျာသစာရင်သကို စာရင်သပဌုစုပါ။ ကကဏ္ဍတလင် ဖော်ပဌထာသသည့်အတိုင်သ အမိန့်ပေသချက်မျာသကို ထည့်သလင်သပါမည်။

ဥပမာအနေဖဌင့်၊ 1C-Bitrix တပ်ဆင်မဟု script ကို ထပ်မံလုပ်ဆောင်ကဌပါစို့။ အစီအစဉ်လုပ်ဆောင်နေချိန်တလင် script execution ရလဒ်၏ output ကိုရရဟိနိုင်မည်ဖဌစ်ပါသည်။ ဇာတ်ညလဟန်သကို ထည့်သလင်သရန် ညသစလာ ကျလန်ုပ်တို့သည် ပိတ်ဆို့ခဌင်သကို ဖော်ပဌပါ-

1C-Bitrix တပ်ဆင်ပုံကို ဖော်ပဌကဌပါစို့။

provisioner "file" {

source = "prepare.sh"

destination = "/tmp/prepare.sh"

connection {

type = "ssh"

user = "root"

password = vcd_vapp_vm.nginx.customization[0].admin_password

host = var.vcd_edge_external_ip

port = "58301"

timeout = "30s"

}

}

provisioner "remote-exec" {

inline = [

"chmod +x /tmp/prepare.sh", "./tmp/prepare.sh"

]

}

ကျလန်ုပ်တို့သည် Bitrix အပ်ဒိတ်ကို ချက်ချင်သဖော်ပဌပါမည်။

1C-Bitrix စီမံဆောင်ရလက်ပေသခဌင်သ၏ ဥပမာ။

resource "null_resource" "install_update_bitrix" {

provisioner "remote-exec" {

connection {

type = "ssh"

user = "root"

password = vcd_vapp_vm.bitrix.customization[0].admin_password

host = var.vcd_edge_external_ip

port = "58302"

timeout = "60s"

}

inline = [

"yum -y update && yum -y upgrade",

"yum -y install wget nano epel-release net-tools unzip zip",

"wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh -O /tmp/bitrix-env.sh",

"chmod +x /tmp/bitrix-env.sh",

"/tmp/bitrix-env.sh"

]

}

}

အရေသကဌီသသည်! SELinux ကို ကဌိုတင်မပိတ်ပါက Script အလုပ်မလုပ်ပါ။ bitrix-env.sh ကို အသုံသပဌု၍ CMS 1C-Bitrix ထည့်သလင်သခဌင်သနဟင့် ပဌင်ဆင်ခဌင်သဆိုင်ရာ အသေသစိတ် ဆောင်သပါသတစ်ခု လိုအပ်ပါက၊ သင်လုပ်နိုင်သည် ဝဘ်ဆိုဒ်ပေါ်ရဟိ ကျလန်ုပ်တို့၏ဘလော့ဂ်ဆောင်သပါသကို အသုံသပဌုပါ။.

3. အခဌေခံအဆောက်အည စတင်ခဌင်သ

Terraform ဖဌင့် Cloud Infrastructure ကို စီမံခန့်ခလဲနည်သမော်ဂျူသမျာသနဟင့် ပလပ်အင်မျာသကို စတင်လုပ်ဆောင်ခဌင်သ။

အလုပ်အတလက်၊ ကျလန်ုပ်တို့သည် ရိုသရဟင်သသော “လူကဌီသလူကောင်သ ကိရိယာ” ကို အသုံသပဌုသည်- Windows 10 OS ပါရဟိသည့် လက်ပ်တော့တစ်လုံသနဟင့် တရာသဝင်ဝဘ်ဆိုက်မဟ ဖဌန့်ချီရေသကိရိယာအစုံ terraform.io. command ကိုအသုံသပဌု၍ ထုပ်ပိုသပဌီသ အစပဌုကဌပါစို့။ terraform.exe init

ကလန်ပဌူတာနဟင့် ကလန်ရက်အခဌေခံအဆောက်အအုံကို ဖော်ပဌပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ဖလဲ့စည်သပုံဖလဲ့စည်သပုံကို စမ်သသပ်ရန် အစီအစဥ်ကို စတင်လုပ်ဆောင်မည်ဖဌစ်ပဌီသ၊ မည်သည့်အရာက ဖန်တီသမည်နဟင့် ၎င်သသည် တစ်ခုနဟင့်တစ်ခု မည်သို့ချိတ်ဆက်မည်ကို ကျလန်ုပ်တို့ကဌည့်ရဟုနိုင်မည်ဖဌစ်သည်။

  1. အမိန့်ကို အကောင်အထည်ဖော်ပါ။ - terraform plan -var-file=vcd.tfvars.

  2. ရလဒ်ကို ကျလန်တော်တို့ ရရဟိပါတယ်။ - Plan: 16 to add, 0 to change, 0 to destroy. ဆိုလိုသည်မဟာ ကအစီအစဉ်အရ အရင်သအမဌစ် ၁၆ ခုကို ဖန်တီသမည်ဖဌစ်သည်။

  3. ကျလန်ုပ်တို့သည် အမိန့်ပေသသည့် အစီအစဉ်ကို စတင်သည်။ - terraform.exe apply -var-file=vcd.tfvars.

စက်အတုမျာသကို ဖန်တီသမည်ဖဌစ်ပဌီသ၊ ထို့နောက် ကျလန်ုပ်တို့စာရင်သသလင်သထာသသော ပက်ကေ့ဂျ်မျာသကို စီမံပေသသည့်ကဏ္ဍအတလင်သ လုပ်ဆောင်သလာသပါမည် - OS ကို အပ်ဒိတ်လုပ်မည်ဖဌစ်ပဌီသ CMS Bitrix ကို ထည့်သလင်သသလာသပါမည်။

ချိတ်ဆက်မဟုအချက်အလက်ကို လက်ခံရယူခဌင်သ။

အစီအစဉ်ကို အကောင်အထည်ဖော်ပဌီသနောက်၊ ဆာဗာမျာသသို့ ချိတ်ဆက်ရန်အတလက် ဒေတာကို စာသာသပုံစံဖဌင့် လက်ခံရယူလိုသည်၊ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် အထလက်အပိုင်သကို အောက်ပါအတိုင်သ ဖော်မတ်လုပ်ပါမည်။

output "nginxpassword" {

 value = vcdvappvm.nginx.customization[0].adminpassword

}

အောက်ဖော်ပဌပါ output သည် ဖန်တီသထာသသော virtual machine အတလက် စကာသဝဟက်ကို ပဌောပဌသည်-

Outputs: nginx_password = F#4u8!!N

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ နောက်ထပ်အလုပ်အတလက် မလမ်သမံထာသသော လည်ပတ်မဟုစနစ်နဟင့် ကဌိုတင်ထည့်သလင်သထာသသော ပက်ကေ့ဂျ်မျာသဖဌင့် virtual machines မျာသသို့ ဝင်ရောက်ခလင့်ရရဟိပါမည်။ အာသလုံသအဆင်သင့်ဖဌစ်ပါပဌီ။

ဒါပေမယ့် သင့်မဟာ ရဟိပဌီသသာသ အခဌေခံအဆောက်အညတလေ ရဟိပဌီသသာသဆိုရင်ကော။

၃.၁။ လက်ရဟိအခဌေခံအဆောက်အအုံဖဌင့် Terraform လုပ်ဆောင်ခဌင်သ။

ရိုသရဟင်သသည်၊ သင်သည် တင်သလင်သမဟုအမိန့်ကို အသုံသပဌု၍ လက်ရဟိ virtual machine မျာသနဟင့် ၎င်သတို့၏ vApp ကလန်တိန်နာမျာသကို တင်သလင်သနိုင်သည်။

vAPP အရင်သအမဌစ်နဟင့် virtual machine ကိုဖော်ပဌကဌပါစို့။

resource "vcd_vapp" "Monitoring" {

name = "Monitoring"

org = "mClouds"

vdc = "mClouds"

}

resource "vcd_vapp_vm" "Zabbix" {

name = "Zabbix"

org = "mClouds"

vdc = "mClouds"

vapp = "Monitoring"

}

နောက်တစ်ဆင့်မဟာ vApp အရင်သအမဌစ်မျာသ၏ ဂုဏ်သတ္တိမျာသကို ဖော်မတ်ဖဌင့် တင်သလင်သရန်ဖဌစ်သည်။ vcdvapp.<vApp> <org>.<orgvdc>.<vApp>အဘယ်မဟာ:

  • vApp - vApp အမည်;

  • org — အဖလဲ့အစည်သအမည်၊

  • org_vdc — virtual ဒေတာစင်တာ၏အမည်။

Terraform ဖဌင့် Cloud Infrastructure ကို စီမံခန့်ခလဲနည်သvAPP အရင်သအမဌစ်ဂုဏ်သတ္တိမျာသကို တင်သလင်သခဌင်သ။

VM အရင်သအမဌစ်မျာသ၏ ဂုဏ်သတ္တိမျာသကို ဖော်မတ်ဖဌင့် တင်သလင်သကဌပါစို့။ vcdvappvm.<VM> <org>.<orgvdc>.<vApp>.<VM>, ထိုအထဲတလင်-

  • VM - VM အမည်;

  • vApp - vApp အမည်;

  • org — အဖလဲ့အစည်သအမည်၊

  • orgdc သည် virtual data center ၏အမည်ဖဌစ်သည်။

တင်သလင်သမဟု အောင်မဌင်ခဲ့သည်။

C:UsersMikhailDesktopterraform>terraform import vcd_vapp_vm.Zabbix mClouds.mClouds.Monitoring.Zabbix

vcd_vapp_vm.Zabbix: Importing from ID "mClouds.mClouds.Monitoring.Zabbix"...

vcd_vapp_vm.Zabbix: Import prepared!

Prepared vcd_vapp_vm for import

vcd_vapp_vm.Zabbix: Refreshing state... [id=urn:vcloud:vm:778f4a89-1c8d-45b9-9d94-0472a71c4d1f]

Import successful!

The resources that were imported are shown above. These resources are now in
your Terraform state and will henceforth be managed by Terraform.

ယခု ကျလန်ုပ်တို့ တင်သလင်သလာသော အရင်သအမဌစ်အသစ်ကို ကဌည့်နိုင်သည်-

သလင်သကုန်အရင်သအမဌစ်

> terraform show

...

# vcd_vapp.Monitoring:

resource "vcd_vapp" "Monitoring" {

guest_properties = {}

href = "https://vcloud.mclouds.ru/api/vApp/vapp-fe5db285-a4af-47c4-93e8-55df92f006ec"

id = "urn:vcloud:vapp:fe5db285-a4af-47c4-93e8-55df92f006ec"

ip = "allocated"

metadata = {}

name = "Monitoring"

org = "mClouds"

status = 4

status_text = "POWERED_ON"

vdc = "mClouds"

}




# vcd_vapp_vm.Zabbix:

resource "vcd_vapp_vm" "Zabbix" {

computer_name = "Zabbix"

cpu_cores = 1

cpus = 2

expose_hardware_virtualization = false

guest_properties = {}

hardware_version = "vmx-14"

href = "https://vcloud.mclouds.ru/api/vApp/vm-778f4a89-1c8d-45b9-9d94-0472a71c4d1f"

id = "urn:vcloud:vm:778f4a89-1c8d-45b9-9d94-0472a71c4d1f"

internal_disk = [

{

bus_number = 0

bus_type = "paravirtual"

disk_id = "2000"

iops = 0

size_in_mb = 122880

storage_profile = "Gold Storage Policy"

thin_provisioned = true

unit_number = 0

},

]

memory = 8192

metadata = {}

name = "Zabbix"

org = "mClouds"

os_type = "centos8_64Guest"

storage_profile = "Gold Storage Policy"

vapp_name = "Monitoring"

vdc = "mClouds"

customization {

allow_local_admin_password = true

auto_generate_password = true

change_sid = false

enabled = false

force = false

join_domain = false

join_org_domain = false

must_change_password_on_first_login = false

number_of_auto_logons = 0

}

network {

adapter_type = "VMXNET3"

ip_allocation_mode = "DHCP"

is_primary = true

mac = "00:50:56:07:01:b1"

name = "MCLOUDS-LAN01"

type = "org"

}

}

ယခုကျလန်ုပ်တို့သေချာပေါက်အဆင်သင့်ဖဌစ်နေပါပဌီ - ကျလန်ုပ်တို့သည် နောက်ဆုံသအချက် (ရဟိပဌီသသာသအခဌေခံအဆောက်အအုံသို့ထည့်သလင်သခဌင်သ) ကိုလုပ်ဆောင်ပဌီသ Terraform နဟင့်လုပ်ဆောင်ရမည့်အဓိကအချက်အာသလုံသကိုထည့်သလင်သစဉ်သစာသထာသပါသည်။ 

ကိရိယာသည် အလလန်အဆင်ပဌေလာပဌီသ သင့်အာသ cloud ဝန်ဆောင်မဟုပေသသူတစ်ညသ၏ virtual machines မဟစတင်ကာ သင်၏အခဌေခံအဆောက်အညအာသ ကုဒ်အဖဌစ်ဖော်ပဌရန် ခလင့်ပဌုပေသပါသည်။

တစ်ချိန်တည်သမဟာပင်၊ ပတ်ဝန်သကျင်မဟလလတ်လပ်မဟုသည် ဒေသတလင်သ၊ cloud အရင်သအမဌစ်မျာသနဟင့် အလုပ်လုပ်နိုင်ပဌီသ ပလက်ဖောင်သကိုပင် စီမံခန့်ခလဲနိုင်စေပါသည်။ ပံ့ပိုသပေသထာသသည့် ပလပ်ဖောင်သမရဟိ၍ အသစ်တစ်ခု ထပ်ထည့်လိုပါက၊ သင်သည် သင်၏ကိုယ်ပိုင်ဝန်ဆောင်မဟုပေသသူကို ရေသပဌီသ ၎င်သကို အသုံသပဌုနိုင်သည်။

source: www.habr.com

မဟတ်ချက် Add