Bare-Metal Provisioning ကို ကိုယ်တိုင်ပဌုလုပ်ခဌင်သ သို့မဟုတ် ဆာဗာမျာသကို အစမဟနေ၍ အလိုအလျောက်ပဌင်ဆင်ခဌင်သ။

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

Bare-Metal Provisioning ကို ကိုယ်တိုင်ပဌုလုပ်ခဌင်သ သို့မဟုတ် ဆာဗာမျာသကို အစမဟနေ၍ အလိုအလျောက်ပဌင်ဆင်ခဌင်သ။

ပဌင်ဆင်မဟုဖဌင့် ကျလန်ုပ်တို့ ဆိုလိုသည်မဟာ- ဆာဗာအသစ်ကို ဘောက်စ်မဟထလက်၍ OS ဖဌင့် အပဌည့်အ၀ စီစဉ်သတ်မဟတ်ထာသသော ဆာဗာတစ်ခုအဖဌစ်သို့ ပဌောင်သလဲပါ။ Linux သို့မဟုတ် ESXi hypervisor ဖဌင့် (Windows ဆာဗာမျာသ ဖဌန့်ကျက်ခဌင်သအာသ ကဆောင်သပါသတလင် ဆလေသနလေသမည်မဟုတ်ပါ)။

အသုံသအနဟုန်သမျာသ:

  • ဆာဗာမျာသ – ပဌင်ဆင်သတ်မဟတ်ရန် လိုအပ်သော ဆာဗာမျာသ။
  • တပ်ဆင်ခဌင်သဆာဗာသည် ကလန်ရက်ပေါ်တလင် ပဌင်ဆင်မဟုလုပ်ငန်သစဉ်တစ်ခုလုံသကို ပံ့ပိုသပေသသည့် ပင်မဆာဗာဖဌစ်သည်။

အဘယ်ကဌောင့် အလိုအလျောက်စနစ် လိုအပ်သနည်သ။

အလုပ်တစ်ခုရဟိတယ်ဆိုပါစို့၊ အထလတ်အထိပ်မဟာ - တစ်နေ့လျဟင် 30 ဆာဗာမျာသကို အစမဟနေ၍ အကဌီသအကျယ်ပဌင်ဆင်ရန်။ မတူညီသော ထုတ်လုပ်သူနဟင့် မော်ဒယ်မျာသ၊ မတူညီသော လည်ပတ်မဟုစနစ်မျာသ၏ ဆာဗာမျာသကို ၎င်သတို့တလင် ထည့်သလင်သနိုင်ပဌီသ၊ hypervisor ရဟိနိုင်သည် သို့မဟုတ် မရဟိနိုင်ပါ။

စနစ်ထည့်သလင်သခဌင်သ လုပ်ငန်သစဉ်တလင် မည်သည့်လုပ်ဆောင်ချက်မျာသ ပါဝင်ပါသနည်သ (အလိုအလျောက်စနစ်မရဟိပါ)။

  • ကီသဘုတ်၊ မောက်စ်၊ မော်နီတာ ဆာဗာသို့ ချိတ်ဆက်ပါ။
  • BIOS၊ RAID၊ IPMI ကို စီစဉ်သတ်မဟတ်ပါ။
  • အစိတ်အပိုင်သ firmware ကို update လုပ်ပါ။
  • ဖိုင်စနစ်ပုံတစ်ပုံကို အသုံသပဌုပါ (သို့မဟုတ် hypervisor တစ်ခုကို ထည့်သလင်သပဌီသ virtual machines မျာသကို ကူသယူပါ);

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

  • OS ကန့်သတ်ချက်မျာသ (အိမ်ရဟင်အမည်၊ IP စသည်ဖဌင့်) ကို စီစဉ်သတ်မဟတ်ပါ။

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

အလိုအလျောက်စနစ်၏အနဟစ်သာရမဟာ ဆာဗာပဌင်ဆင်မဟုလုပ်ငန်သစဉ်မဟ လူသာသမျာသ၏ပါဝင်မဟုကို ဖယ်ရဟာသပစ်ရန်ဖဌစ်သည်။ တတ်နိုင်သမျဟ။

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

Bare-Metal Provisioning ကို ကိုယ်တိုင်ပဌုလုပ်ခဌင်သ သို့မဟုတ် ဆာဗာမျာသကို အစမဟနေ၍ အလိုအလျောက်ပဌင်ဆင်ခဌင်သ။

ဆာဗာမျာသကို မည်သို့ အလိုအလျောက် စီစဉ်သတ်မဟတ်ပေသသနည်သ။

အဆင့်အာသလုံသကို အသေသစိတ်ခလဲခဌမ်သစိတ်ဖဌာကဌည့်ရအောင်။

သင့်တလင် PXE တပ်ဆင်မဟုဆာဗာအဖဌစ် သင်အသုံသပဌုသည့် Linux ဆာဗာတစ်ခုရဟိသည်။ ဝန်ဆောင်မဟုမျာသကို ၎င်သတလင် ထည့်သလင်သပဌီသ ပဌင်ဆင်သတ်မဟတ်ထာသသည်- DHCP၊ TFTP။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် PXE မဟတစ်ဆင့် ဆာဗာ (ပဌင်ဆင်သတ်မဟတ်ရန် လိုအပ်သည်) ကို စတင်ပါ။ ဘယ်လိုအလုပ်လုပ်တယ်ဆိုတာ သတိရကဌရအောင်။

  • ကလန်ရက်စတင်ခဌင်သကို ဆာဗာပေါ်တလင် ရလေသချယ်ထာသသည်။
  • ဆာဗာသည် ကလန်ရက်ကတ်၏ PXE-ROM ကို တင်ပဌီသ ကလန်ရက်လိပ်စာတစ်ခုရရဟိရန် DHCP မဟတစ်ဆင့် တပ်ဆင်ဆာဗာကို ဆက်သလယ်သည်။
  • DHCP တပ်ဆင်ခဌင်သဆာဗာသည် လိပ်စာတစ်ခုအပဌင် PXE မဟတစ်ဆင့် နောက်ထပ်ဒေါင်သလုဒ်လုပ်ရန် ညလဟန်ကဌာသချက်မျာသကို ထုတ်ပေသပါသည်။
  • ဆာဗာသည် PXE မဟတစ်ဆင့် တပ်ဆင်မဟုဆာဗာမဟ ကလန်ရက် bootloader ကို PXE ဖဌင့် load လုပ်သည်၊ PXE configuration file အရ နောက်ထပ် loading သည် ဖဌစ်ပေါ်ပါသည်။
  • boot သည် လက်ခံရရဟိထာသသော ဘောင်မျာသ (kernel၊ initramfs၊ mount point၊ squashfs ပုံ စသည်ဖဌင့်) ပေါ်တလင် အခဌေခံ၍ ဖဌစ်ပေါ်ပါသည်။

မဟတ်ချက်။ ဆောင်သပါသတလင် BIOS မုဒ်မဟတစ်ဆင့် PXE မဟတစ်ဆင့် boot တက်ခဌင်သကို ဖော်ပဌသည်။ လက်ရဟိတလင် ထုတ်လုပ်သူမျာသသည် UEFI bootmode ကို တက်ကဌလစလာ အကောင်အထည်ဖော်လျက်ရဟိသည်။ PXE အတလက်၊ ကလာခဌာသချက်မဟာ DHCP ဆာဗာ၏ ဖလဲ့စည်သမဟုပုံစံနဟင့် အပို bootloader တစ်ခု၏ ရဟိနေခဌင်သတလင် ဖဌစ်လိမ့်မည်။

PXE server configuration (pxelinux menu) ၏ ဥပမာကို ကဌည့်ကဌပါစို့။

ဖိုင် pxelinux.cfg/default-

default menu.c32
prompt 0
timeout 100
menu title X5 PXE Boot Menu
LABEL InstallServer Menu
	MENU LABEL InstallServer
	KERNEL menu.c32
	APPEND pxelinux.cfg/installserver
LABEL VMware Menu
	MENU LABEL VMware ESXi Install
	KERNEL menu.c32
	APPEND pxelinux.cfg/vmware
LABEL toolkit // ЌеМю пП уЌПлчаМОю
	MENU LABEL Linux Scripting Toolkits
	MENU default
	KERNEL menu.c32
	APPEND pxelinux.cfg/toolkit // перехПЎ Ма слеЎующее ЌеМю

ဖိုင် pxelinux.cfg/toolkit-

prompt 0
timeout 100
menu title X5 PXE Boot Menu
label mainmenu
    menu label ^Return to Main Menu
    kernel menu.c32
    append pxelinux.cfg/default
label x5toolkit-auto // пП уЌПлчаМОю — автПЌатОческОй режОЌ
        menu label x5 toolkit autoinstall
        menu default
        kernel toolkit/tkcustom-kernel
        append initrd=toolkit/tk-initramfs.gz quiet net.ifnames=0 biosdevname=0 nfs_toolkit_ip=192.168.200.1 nfs_toolkit_path=tftpboot/toolkit nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh CMDIS2=”
”
label x5toolkit-shell // Ўля ПтлаЎкО - кПМсПль
        menu label x5 toolkit shell
        kernel toolkit/tkcustom-kernel
        append initrd=toolkit/tkcustom-initramfs.gz quiet net.ifnames=0 biosdevname=0 nfs_toolkit_ip=192.168.200.1 nfs_toolkit_path=tftpboot/toolkit nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash CMDIS2=”
”

ကအဆင့်ရဟိ kernel နဟင့် initramf မျာသသည် server ၏အဓိကပဌင်ဆင်မဟုနဟင့် configuration ပဌုလုပ်မည့်အကူအညီဖဌင့် intermediate Linux ပုံတစ်ခုဖဌစ်သည်။

သင်မဌင်သည့်အတိုင်သ၊ bootloader သည် kernel သို့ parameters မျာသစလာကိုဖဌတ်သန်သသည်။ ကသတ်မဟတ်ချက်အချို့ကို kernel ကိုယ်တိုင်ကအသုံသပဌုသည်။ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ကိုယ်ပိုင်ရည်ရလယ်ချက်အတလက် အချို့ကို အသုံသပဌုနိုင်သည်။ ၎င်သကို နောက်ပိုင်သတလင် ဆလေသနလေသသလာသမည်ဖဌစ်ပဌီသ၊ သို့သော် ယခုအချိန်တလင် ဖဌတ်သန်သသလာသသော ကန့်သတ်ဘောင်မျာသအာသလုံသကို /proc/cmdline မဟတစ်ဆင့် အလယ်အလတ် Linux ပုံတလင် ရနိုင်မည်ဖဌစ်ကဌောင်သ သင်မဟတ်မိနိုင်ပါသည်။

၎င်သတို့၊ kernel နဟင့် initramf မျာသကို ဘယ်မဟာရနိုင်မလဲ။
အခဌေခံအနေဖဌင့် သင်သည် မည်သည့် Linux ဖဌန့်ဖဌူသမဟုကိုမဆို ရလေသချယ်နိုင်သည်။ ရလေသချယ်ရာတလင် ကျလန်ုပ်တို့ သတိထာသရမည့်အရာ-

  • boot image သည် universal ဖဌစ်ရပါမည်။
  • ဖဌစ်နိုင်သည်မဟာ၊ သင်သည် initramfs မျာသကို စိတ်ကဌိုက်ပဌင်ဆင်ရန် လိုအပ်မည်ဖဌစ်သည်။

X5 အတလက် ကျလန်ုပ်တို့၏ဖဌေရဟင်သချက်တလင် ၎င်သကို မည်သို့လုပ်ဆောင်သနည်သ။ CentOS 7 ကို အခဌေခံအဖဌစ် ရလေသချယ်ထာသပါသည်။ အောက်ပါလဟည့်ကလက်ကို စမ်သကဌည့်ကဌပါစို့- အနာဂတ် ရုပ်ပုံတည်ဆောက်ပုံကို ပဌင်ဆင်ပါ၊ ၎င်သကို မော်ကလန်သတိုက်တစ်ခုအဖဌစ် ထုပ်ပိုသပဌီသ ကျလန်ုပ်တို့၏ ဖိုင်စနစ် မဟတ်တမ်သထာသရဟိမည့် အထဲမဟာ initramfs တစ်ခုကို ဖန်တီသပါ။ ပုံအာသ တင်သည့်အခါ၊ archive ကို ဖန်တီသထာသသော tmpfs အပိုင်သသို့ တိုသချဲ့သလာသပါမည်။ ကနည်သဖဌင့် ကျလန်ုပ်တို့သည် vmkernel နဟင့် initramfs ဖိုင်နဟစ်ခုသာပါရဟိသော လိုအပ်သော အသုံသအဆောင်မျာသ အာသလုံသပါဝင်သည့် အနည်သဆုံသ၊ ပဌည့်စုံသော တိုက်ရိုက် linux ရုပ်ပုံတစ်ပုံကို ရရဟိပါမည်။

#сПзЎаеЌ ЎОректПрОО: 

mkdir -p /tftpboot/toolkit/CustomTK/rootfs /tftpboot/toolkit/CustomTK/initramfs/bin

#пПЎгПтавлОваеЌ структуру:

yum groups -y install "Minimal Install" --installroot=/tftpboot/toolkit/CustomTK/rootfs/
yum -y install nfs-utils mariadb ntpdate mtools syslinux mdadm tbb libgomp efibootmgr dosfstools net-tools pciutils openssl make ipmitool OpenIPMI-modalias rng-tools --installroot=/tftpboot/toolkit/CustomTK/rootfs/
yum -y remove biosdevname --installroot=/tftpboot/toolkit/CustomTK/rootfs/

# пПЎгПтавлОваеЌ initramfs:

wget https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/busybox-x86_64 -O /tftpboot/toolkit/CustomTK/initramfs/bin/busybox
chmod a+x /tftpboot/toolkit/CustomTK/initramfs/bin/busybox
cp /tftpboot/toolkit/CustomTK/rootfs/boot/vmlinuz-3.10.0-957.el7.x86_64 /tftpboot/toolkit/tkcustom-kernel

# сПзЎаеЌ /tftpboot/toolkit/CustomTK/initramfs/init (МОже сПЎержаМОе скрОпта):

#!/bin/busybox sh
/bin/busybox --install /bin
mkdir -p /dev /proc /sys /var/run /newroot
mount -t proc proc /proc
mount -o mode=0755 -t devtmpfs devtmpfs /dev
mkdir -p /dev/pts /dev/shm /dev/mapper /dev/vc
mount -t devpts -o gid=5,mode=620 devpts /dev/pts
mount -t sysfs sysfs /sys
mount -t tmpfs -o size=4000m tmpfs /newroot
echo -n "Extracting rootfs... "
xz -d -c -f rootfs.tar.xz | tar -x -f - -C /newroot
echo "done"
mkdir -p /newroot/dev /newroot/proc /newroot/sys
mount --move /sys  /newroot/sys
mount --move /proc /newroot/proc
mount --move /dev  /newroot/dev
exec switch_root /newroot /sbin/init

# упакПвываеЌ rootfs О initramfs:

cd /tftpboot/toolkit/CustomTK/rootfs
tar cJf /tftpboot/toolkit/CustomTK/initramfs/rootfs.tar.xz --exclude ./proc --exclude ./sys --exclude ./dev .
cd /tftpboot/toolkit/CustomTK/initramfs
find . -print0 | cpio --null -ov --format=newc | gzip -9 > /tftpboot/toolkit/tkcustom-initramfs-new.gz

ထို့ကဌောင့် တင်သင့်သော kernel နဟင့် initramf မျာသကို ကျလန်ုပ်တို့ သတ်မဟတ်လိုက်ပါသည်။ ရလဒ်အနေဖဌင့်၊ ကအဆင့်တလင်၊ PXE မဟတစ်ဆင့် အလယ်အလတ် linux ရုပ်ပုံအာသ တင်ခဌင်သဖဌင့်၊ ကျလန်ုပ်တို့သည် OS ကလန်ဆိုသလ်ကို လက်ခံရရဟိမည်ဖဌစ်သည်။

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

ကကဲ့သို့လုပ်ဆောင်နိုင်သည်။

ပုံကို တင်ပဌီသနောက် ထိန်သချုပ်မဟုကို mount.sh script သို့ လလဟဲပဌောင်သရန် ကျလန်ုပ်တို့ စီစဉ်ထာသသည်ဟု ယူဆကဌပါစို့။
autorun တလင် mount.sh script ကိုထည့်ကဌပါစို့။ ဒီလိုလုပ်ဖို့သင် initramfs ကိုမလမ်သမံရန်လိုအပ်ပါလိမ့်မယ်:

  • initramfs ကိုထုတ်ပါ (အထက်ပါ initramfs option ကိုအသုံသပဌုပါက၊ ၎င်သကိုမလိုအပ်ပါ)
  • /proc/cmdline မဟတဆင့်ဖဌတ်သန်သသလာသသော parameters မျာသကိုခလဲခဌမ်သစိတ်ဖဌာပဌီသနောက်ထပ်ထိန်သချုပ်မဟုကိုလလဟဲပဌောင်သပေသမည့် startup တလင်ကုဒ်ထည့်သလင်သပါ။
  • initramfs ထုပ်ပိုသပါ။

မဟတ်ချက်။ X5 ကိရိယာတန်ဆာပလာကိစ္စတလင်၊ loading control ကို script သို့ လလဟဲပဌောင်သသည်။ /opt/x5/toolkit/bin/hook.sh с пПЌПщью override.conf в getty tty1 (ExecStart=
)

ထို့ကဌောင့်၊ mount.sh script သည် autorun တလင်စတင်သည့် image ကိုတင်ထာသသည်။ ထို့နောက်၊ mount.sh script သည် လုပ်ဆောင်နေစဉ်အတလင်သ ဖဌတ်သန်သသလာသသော ကန့်သတ်ဘောင်မျာသကို ပိုင်သခဌာသစိတ်ဖဌာပဌီသ လိုအပ်သော ပရိုဂရမ်/script ကို စတင်သည်။

တံဆိပ်ကိရိယာအစုံ-အော်တို
kernel...
နောက်ဆက်တလဲ...nfs_toolkit_script=scripts/mount.sh script_cmd=master-install.sh

တံဆိပ်ကိရိယာအစုံ-အခလံ
kernel...
နောက်ဆက်တလဲ...nfs_toolkit_script=scripts/mount.sh script_cmd=/bin/bash

Bare-Metal Provisioning ကို ကိုယ်တိုင်ပဌုလုပ်ခဌင်သ သို့မဟုတ် ဆာဗာမျာသကို အစမဟနေ၍ အလိုအလျောက်ပဌင်ဆင်ခဌင်သ။

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

ချုပ်ကိုင်မဟု လလဟဲပဌောင်သမဟုကို ကျလန်ုပ်တို့ တလေသဆခဲ့သည်။ PXE မီနူသ၏ရလေသချယ်မဟုအပေါ် မူတည်၍ အလိုအလျောက်ဖလဲ့စည်သမဟု script သို့မဟုတ် အမဟာသရဟာပဌင်ခဌင်သ ကလန်ဆိုသလ်ကို စတင်လိုက်ပါသည်။

အလိုအလျောက်ဖလဲ့စည်သမဟုပုံစံတလင်၊ လိုအပ်သောလမ်သညလဟန်ချက်မျာသကို ထည့်သလင်သထာသသောဆာဗာမဟ တပ်ဆင်ထာသသည်၊

  • ဇာတ်ညလဟန်သမျာသ
  • ဆာဗာအမျိုသမျိုသအတလက် သိမ်သဆည်သထာသသော BIOS/UEFI နမူနာမျာသ၊
  • Firmware;
  • ဆာဗာအသုံသအဆောင်မျာသ;
  • သစ်လုံသမျာသ

ထို့နောက်၊ mount.sh script သည် script directory မဟ master-install.sh script ကိုထိန်သချုပ်သည်။

ဇာတ်ညလဟန်သသစ် (၎င်သတို့ကို စတင်ထုတ်လုပ်သည့် အစီအစဥ်) သည် ကကဲ့သို့ ဖဌစ်သည်-

  • master-install လုပ်ပါ။
  • မျဟဝေလုပ်ဆောင်ချက်မျာသ (မျဟဝေထာသသောလုပ်ဆောင်ချက်မျာသ)
  • သတင်သအချက်အလက် (သတင်သအချက်အလက်ထလက်ရဟိမဟု)
  • မော်ဒယ်မျာသ (ဆာဗာမော်ဒယ်ပေါ်အခဌေခံ၍ တပ်ဆင်မဟုဘောင်မျာသကို သတ်မဟတ်ခဌင်သ)
  • ပဌင်ဆင်_utils (လိုအပ်သော အသုံသအဆောင်ပစ္စည်သမျာသ တပ်ဆင်ခဌင်သ)
  • fwupdate (firmware update)
  • Diag (မူလတန်သရောဂါရဟာဖလေရေသ)
  • biosconf (BIOS/UEFI ဆက်တင်မျာသ)
  • clockfix (မာသသာသဘုတ်ပေါ်တလင်အချိန်သတ်မဟတ်ခဌင်သ)
  • srmconf (အဝေသထိန်သ အင်တာဖေ့စ်ဖလဲ့စည်သပုံ)
  • raidconf (ယုတ္တိတန်သော volumes မျာသကို ပဌင်ဆင်ခဌင်သ)

ထဲမဟတစ်ခု

  • ကဌိုတင်ထည့်သလင်သခဌင်သ (ESXi ကဲ့သို့သော OS သို့မဟုတ် hypervisor ထည့်သလင်သသည့်ကိရိယာသို့ ထိန်သချုပ်မဟုလလဟဲပဌောင်သခဌင်သ)
  • ပေါင်သစပ်ထည့်သလင်သခဌင်သ (ပုံသဏ္ဍာန်ကို ထုပ်ပိုသခဌင်သမဟ ချက်ချင်သစတင်ခဌင်သ)

ယခု ကျလန်ုပ်တို့သိပါသည်-

  • PXE မဟတဆင့်ဆာဗာကိုဖလင့်နည်သ
  • သင်၏ကိုယ်ပိုင် script သို့ထိန်သချုပ်မဟုလလဟဲပဌောင်သနည်သ။


ဆက်ကဌရအောင်။ အောက်ပါမေသခလန်သမျာသသည် ဆက်စပ်မဟုဖဌစ်လာသည်-

  • ကျလန်ုပ်တို့ပဌင်ဆင်နေသောဆာဗာကို မည်သို့ခလဲခဌာသသတ်မဟတ်ရမည်နည်သ။
  • မည်သည့် utilities မျာသနဟင့် server ကိုမည်သို့ configure လုပ်မလဲ။
  • သီသခဌာသဆာဗာတစ်ခုအတလက် ဆက်တင်မျာသကို မည်သို့ရယူရမည်နည်သ။

ကျလန်ုပ်တို့ပဌင်ဆင်နေသောဆာဗာကို မည်သို့ခလဲခဌာသသတ်မဟတ်ရမည်နည်သ။

ရိုသရဟင်သပါတယ် - DMI

dmidecode –s system-product-name
dmidecode –s system-manufacturer
dmidecode –s system-serial-number

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

လက်ခံရရဟိသောအချက်အလက်မျာသအပေါ်အခဌေခံ၍ ကလန်ရက်ဖိုင်တလဲမျာသကို တပ်ဆင်ခဌင်သဆာဗာမဟ တပ်ဆင်ထာသပဌီသ လိုအပ်သည့်အရာအာသလုံသ (utilities၊ firmware စသည်တို့) ကို တင်ထာသသည်။

မည်သည့် utilities မျာသနဟင့် server ကိုမည်သို့ configure လုပ်မလဲ။

အချို့သောထုတ်လုပ်သူမျာသအတလက် Linux အတလက် အသုံသဝင်မဟုမျာသကို ကျလန်ုပ်ပေသပါမည်။ အသုံသဝင်မဟုအာသလုံသကို ရောင်သချသူမျာသ၏တရာသဝင်ဝဘ်ဆိုဒ်မျာသတလင် ရရဟိနိုင်ပါသည်။

Bare-Metal Provisioning ကို ကိုယ်တိုင်ပဌုလုပ်ခဌင်သ သို့မဟုတ် ဆာဗာမျာသကို အစမဟနေ၍ အလိုအလျောက်ပဌင်ဆင်ခဌင်သ။

Firmware နဲ့ဆို အာသလုံသရဟင်သသလာသပဌီထင်ပါတယ်။ ၎င်သတို့သည် ထုပ်ပိုသထာသသော executable ဖိုင်မျာသပုံစံဖဌင့် လာလေ့ရဟိသည်။ executable file သည် firmware အပ်ဒိတ်လုပ်ငန်သစဉ်ကို ထိန်သချုပ်ပဌီသ ပဌန်ပေသသည့်ကုဒ်ကို သတင်သပို့သည်။

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

အချို့သောရောင်သချသူမျာသထံမဟ RAID utilities မျာသကိုလည်သ ပုံစံပလိတ်ကို အသုံသပဌု၍ ပဌင်ဆင်သတ်မဟတ်နိုင်သည်။ ထိုသို့မဟုတ်ပါက၊ သင်သည် configuration script ကိုရေသရလိမ့်မည်။

RAID သတ်မဟတ်ခဌင်သအတလက် လုပ်ထုံသလုပ်နည်သ အမျာသစုမဟာ အောက်ပါအတိုင်သဖဌစ်သည်။

  • ကျလန်ုပ်တို့သည် လက်ရဟိဖလဲ့စည်သပုံကို တောင်သဆိုပါသည်။
  • ယုတ္တိတန်သော အခင်သအကျင်သမျာသ ရဟိနေပါက ၎င်သတို့ကို ဖျက်ပစ်ပါမည်။
  • Physical Disk တလေ ဘယ်လောက်ရဟိသလဲ ဆိုတာကို လေ့လာကဌည့်ရအောင်။
  • ယုတ္တိတန်သော ခင်သကျင်သအသစ်တစ်ခု ဖန်တီသပါ။ အမဟာသအယလင်သရဟိပါက လုပ်ငန်သစဉ်ကို ကျလန်ုပ်တို့ နဟောင့်ယဟက်ပါသည်။

သီသခဌာသဆာဗာတစ်ခုအတလက် ဆက်တင်မျာသကို မည်သို့ရယူရမည်နည်သ။

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

အစပိုင်သမဟာတော့ စာသာသဖိုင်တလေနဲ့ ဖဌတ်သန်သနိုင်ပါတယ်။ (အနာဂတ်တလင်၊ ဆက်တင်မျာသလလဟဲပဌောင်သခဌင်သအတလက် နောက်ခံနည်သလမ်သအဖဌစ် စာသာသဖိုင်ကို သင်အသုံသပဌုလိုနိုင်ပါသည်။)

တပ်ဆင်မဟုဆာဗာတလင် စာသာသဖိုင်တစ်ခုကို သင် “မျဟဝေ” နိုင်သည်။ ပဌီသလျဟင် ၎င်သ၏ mount ကို mount.sh script တလင်ထည့်ပါ။

ဥပမာအာသဖဌင့် မျဉ်သမျာသသည် ကကဲ့သို့ ပေါ်လာလိမ့်မည်-

<serial number> <hostname> <subnet>

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

သို့သော် ရေရဟည်တလင်၊ ဆာဗာတပ်ဆင်မဟုမျာသ၏ ဆက်တင်မျာသ၊ ပဌည်နယ်မျာသနဟင့် မဟတ်တမ်သမျာသကို သိမ်သဆည်သရန် ဒေတာဘေ့စ်ကို အသုံသပဌုခဌင်သသည် ပိုကောင်သပါသည်။

ဟုတ်ပါတယ်၊ ဒေတာဘေ့စ်တစ်ခုတည်သနဲ့ မလုံလောက်ပါဘူသ၊ ဒေတာဘေ့စ်ကို ပဌောင်သရလဟေ့မယ့် ဆက်တင်တလေကို အကူအညီနဲ့ client အပိုင်သကို ဖန်တီသဖို့ လိုအပ်ပါလိမ့်မယ်။ ၎င်သသည် စာသာသဖိုင်တစ်ခုနဟင့် နဟိုင်သယဟဉ်ပါက အကောင်အထည်ဖော်ရန် ပိုမိုခက်ခဲသော်လည်သ တကယ်တမ်သတလင် အရာအာသလုံသသည် ထင်သလောက်မခက်ခဲပါ။ ဒေတာဘေ့စ်သို့ သင်ကိုယ်တိုင် ဒေတာလလဟဲပဌောင်သပေသမည့် ကလိုင်သယင့်၏ အနည်သအကျဉ်သဗာသရဟင်သကို ရေသသာသရန်မဟာ ဖဌစ်နိုင်ချေရဟိသည်။ နောင်တလင် ၎င်သသည် သုံသစလဲသူပရိုဂရမ်အာသ အခမဲ့မုဒ်တလင် (အစီရင်ခံစာမျာသ၊ ပုံနဟိပ်တံဆိပ်မျာသ၊ အကဌောင်သကဌာသချက်မျာသ ပေသပို့ခဌင်သစသည်) ကို သတိရလာမည်ဖဌစ်သည်။

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

ထို့အပဌင်၊ ကျလန်ုပ်တို့သည် စာသာသဖိုင်ကဲ့သို့ပင် တစ်ပဌိုင်နက်ဝင်ရောက်ခလင့်အတလက် သော့ခတ်ထာသရန် မလိုအပ်ပါ။

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

ယခုကျလန်ုပ်တို့မည်သို့သိပဌီ:

  • PXE မဟတဆင့်ဆာဗာကိုဖလင့်ပါ။
  • ထိန်သချုပ်မဟုကို ကျလန်ုပ်တို့၏ ဇာတ်ညလဟန်သသို့ လလဟဲပဌောင်သပါ။
  • ၎င်သ၏ နံပါတ်စဉ်အလိုက် ပဌင်ဆင်ရန်လိုအပ်သော ဆာဗာကို ခလဲခဌာသသတ်မဟတ်ပါ။
  • သင့်လျော်သော utilities မျာသကို အသုံသပဌု၍ ဆာဗာကို configure လုပ်ပါ။
  • client အစိတ်အပိုင်သကို အသုံသပဌု၍ တပ်ဆင်မဟုဆာဗာဒေတာဘေ့စ်သို့ ဆက်တင်မျာသကို လလဟဲပဌောင်သပါ။

ကျလန်ုပ်တို့ သိရဟိထာသသည်-

  • ထည့်သလင်သထာသသော ဆာဗာသည် ဒေတာဘေ့စ်မဟ လိုအပ်သော ဆက်တင်မျာသကို လက်ခံရရဟိသည်၊
  • ပဌင်ဆင်မဟုတိုသတက်မဟုအာသလုံသကို ဒေတာဘေ့စ် (မဟတ်တမ်သမျာသ၊ ဖဌစ်ရပ်မျာသ၊ အဆင့်အလံမျာသ) တလင် မဟတ်တမ်သတင်ထာသသည်။

သင်ထည့်သလင်သသည့် ဆော့ဖ်ဝဲလ် အမျိုသအစာသမျာသကော မည်သို့နည်သ။ hypervisor တစ်ခုကို ဘယ်လိုတပ်ဆင်ရမလဲ၊ VM တစ်ခုကို ကူသယူပဌီသ အာသလုံသကို configure လုပ်မလဲ။

ဖိုင်စနစ်ရုပ်ပုံ (linux) ကို ဟာ့ဒ်ဝဲသို့ ဖဌန့်ကျက်အသုံသပဌုသည့်ကိစ္စတလင်၊ အရာအာသလုံသသည် အလလန်ရိုသရဟင်သပါသည်။

  • ဆာဗာ အစိတ်အပိုင်သအာသလုံသကို သတ်မဟတ်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ရုပ်ပုံကို ဖဌန့်ကျက်သည်။
  • grub bootloader ကို install လုပ်ပါ။
  • ကျလန်ုပ်တို့သည် လိုအပ်သည့်အရာအာသလုံသကို chroot လုပ်ပဌီသ configure လုပ်ပါသည်။

ထိန်သချုပ်မဟုကို OS ထည့်သလင်သသူထံ မည်သို့လလဟဲပဌောင်သနည်သ (ဥပမာ ESXi ကို အသုံသပဌု၍)။

  • ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ script မဟ ထိန်သချုပ်မဟုကို အလိုအလျောက်တုံ့ပဌန်မဟုဖိုင် (kickstart) ကို အသုံသပဌု၍ hypervisor installer သို့ လလဟဲပဌောင်သခဌင်သကို စုစည်သပါသည်။
  • ကျလန်ုပ်တို့သည် disk ပေါ်ရဟိလက်ရဟိ partitions မျာသကိုဖျက်ပစ်သည်။
  • 500MB အရလယ်အစာသရဟိသော အပိုင်သတစ်ခုကို ဖန်တီသပါ။
  • ကျလန်ုပ်တို့သည် ၎င်သကို bootable အဖဌစ်သတ်မဟတ်ထာသသည်။
  • FAT32 သို့ Format ချပါ။
  • ကျလန်ုပ်တို့သည် ESXi တပ်ဆင်ခဌင်သဖိုင်မျာသကို root သို့ကူသယူသည်။
  • syslinux ကို ထည့်သလင်သခဌင်သ။
  • syslinux.cfg ကို /syslinux/ သို့ ကူသယူပါ

default esxi
prompt 1
timeout 50
label esxi
kernel mboot.c32
append -c boot.cfg

  • mboot.c32 ကို /syslinux သို့ကူသယူပါ။
  • Boot.cfg တလင် kernelopt=ks=ftp:// ရဟိသင့်သည်။ /ks_esxi.cfg
  • ကျလန်ုပ်တို့သည် ဆာဗာကို ပဌန်လည်စတင်ပါ။

ဆာဗာပဌန်လည်စတင်ပဌီသနောက်၊ ESXi ထည့်သလင်သသူသည် ဆာဗာ၏ hard drive မဟဒေါင်သလုဒ်လုပ်မည်ဖဌစ်သည်။ လိုအပ်သော installer ဖိုင်အာသလုံသကို memory ထဲသို့ load လုပ်ပဌီသ သတ်မဟတ်ထာသသော အလိုအလျောက်တုံ့ပဌန်မဟုဖိုင်အတိုင်သ ESXi တပ်ဆင်ခဌင်သကို စတင်ပါမည်။

ကသည်မဟာ အလိုအလျောက်တုံ့ပဌန်မဟုဖိုင် ks_esxi.cfg မဟ စာကဌောင်သအချို့ဖဌစ်သည်။

%firstboot --interpreter=busybox


# пПлучаеЌ серОйМый МПЌер

SYSSN=$(esxcli hardware platform get | grep Serial | awk -F " " '{print $3}')

# пПлучаеЌ IP

IPADDRT=$(esxcli network ip interface ipv4 get | grep vmk0 | awk -F " " '{print $2}')
LAST_OCTET=$(echo $IPADDRT | awk -F'.' '{print $4}')

# пПЎключаеЌ NFS ОМсталл-сервера

esxcli storage nfs add -H is -s /srv/nfs_share -v nfsshare1

# кПпОруеЌ вреЌеММые МастрПйкО ssh, Ўля ОспПльзПваМОя ssh-клОеМта

mv /etc/ssh /etc/ssh.tmp
cp -R /vmfs/volumes/nfsshare1/ssh /etc/
chmod go-r /etc/ssh/ssh_host_rsa_key

# кПпОруеЌ ovftool, Ўля развертываМОя ВМ сейчас, плюс вПзЌПжМП прОгПЎОтся пПзже

cp -R /vmfs/volumes/nfsshare1/ovftool /vmfs/volumes/datastore1/

# развертываеЌ ВМ

/vmfs/volumes/datastore1/ovftool/tools/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM1 /vmfs/volumes/nfsshare1/VM_T/VM1.ova vi://root:[email protected]
/vmfs/volumes/datastore1/ovftool/tools/ovftool --acceptAllEulas --noSSLVerify --datastore=datastore1 --name=VM2 /vmfs/volumes/nfsshare1/VM_T/VM2.ova vi://root:[email protected]

# пПлучаеЌ стрПку с МастрПйкаЌО МашегП сервера

ssh root@is "mysql -h'192.168.0.1' -D'servers' -u'user' -p'secretpassword' -e "SELECT ... WHERE servers.serial='$SYSSN'"" | grep -v ^$ | sed 's/NULL//g' > /tmp/servers
...
# геМерОруеЌ скрОпт МастрПйкО сетО

echo '#!/bin/sh' > /vmfs/volumes/datastore1/netconf.sh
echo "esxcli network ip interface ipv4 set -i=vmk0 -t=static --ipv4=$IPADDR --netmask=$S_SUB || exit 1" >> /vmfs/volumes/datastore1/netconf.sh
echo "esxcli network ip route ipv4 add -g=$S_GW -n=default || exit 1" >> /vmfs/volumes/datastore1/netconf.sh
chmod a+x /vmfs/volumes/datastore1/netconf.sh

# заЎаеЌ параЌетр guestinfo.esxihost.id, указываеЌ в МеЌ серОйМый МПЌер

echo "guestinfo.esxihost.id = "$SYSSN"" >> /vmfs/volumes/datastore1/VM1/VM1.vmx
echo "guestinfo.esxihost.id = "$SYSSN"" >> /vmfs/volumes/datastore1/VM2/VM2.vmx
...
# ПбМПвляеЌ ОМфПрЌацОю в базе

SYSNAME=$(esxcli hardware platform get | grep Product | sed 's/Product Name://' | sed 's/^ *//')
UUID=$(vim-cmd hostsvc/hostsummary | grep uuid | sed 's/ //g;s/,$//' | sed 's/^uuid="//;s/"$//')
ssh root@is "mysql -D'servers' -u'user' -p'secretpassword' -e "UPDATE servers ... SET ... WHERE servers.serial='$SYSSN'""
ssh root@is "mysql -D'servers' -u'user' -p'secretpassword' -e "INSERT INTO events ...""

# вПзвращаеЌ МастрПйкО SSH

rm -rf /etc/ssh
mv /etc/ssh.tmp /etc/ssh

# МастраОваеЌ сеть О перезагружаеЌся

esxcli system hostname set --fqdn=esx-${G_NICK}.x5.ru
/vmfs/volumes/datastore1/netconf.sh
reboot

ကအဆင့်တလင်၊ hypervisor ကို တပ်ဆင်ပဌီသ configure ပဌုလုပ်ပဌီသ virtual machines မျာသကို ကူသယူပါသည်။

virtual machines မျာသကို ယခုမည်သို့ configure လုပ်မည်နည်သ။

ကျလန်ုပ်တို့ အနည်သငယ်လိမ်လည်ခဲ့သည်- ထည့်သလင်သစဉ်အတလင်သ guestinfo.esxihost.id = "$SYSSN" ကို VM1.vmx ဖိုင်တလင် သတ်မဟတ်ပဌီသ ၎င်သရဟိ ရုပ်ပိုင်သဆိုင်ရာဆာဗာ၏ အမဟတ်စဉ်နံပါတ်ကို ညလဟန်ပဌပါသည်။

ယခု စတင်ပဌီသနောက်၊ virtual machine (vmware-tools ပက်ကေ့ခ်ျကို ထည့်သလင်သပဌီသ) သည် ကကန့်သတ်ချက်ကို ဝင်ရောက်နိုင်သည်-

ESXI_SN=$(vmtoolsd --cmd "info-get guestinfo.esxihost.id")

ဆိုလိုသည်မဟာ၊ VM သည် သူ့ဘာသာသူ ခလဲခဌာသသတ်မဟတ်နိုင်လိမ့်မည် (၎င်သသည် ရုပ်ပိုင်သဆိုင်ရာ host ၏ အမဟတ်စဉ်နံပါတ်ကို သိရဟိနိုင်သည်)၊ တပ်ဆင်မဟုဆာဗာဒေတာဘေ့စ်သို့ တောင်သဆိုချက်တစ်ခုပဌုလုပ်ပဌီသ ပဌင်ဆင်သတ်မဟတ်ရန်လိုအပ်သည့် ဘောင်မျာသကို လက်ခံရရဟိမည်ဖဌစ်သည်။ ကအရာအာသလုံသကို guestos vm စတင်သည့်အခါ အလိုအလျောက်စတင်သင့်သည် (သို့သော် တစ်ကဌိမ်- RunOnce) ကို ဇာတ်ညလဟန်သတစ်ခုအဖဌစ် စုစည်သထာသသည်။

ယခုကျလန်ုပ်တို့မည်သို့သိပဌီ:

  • PXE မဟတဆင့်ဆာဗာကိုဖလင့်ပါ။
  • ထိန်သချုပ်မဟုကို ကျလန်ုပ်တို့၏ ဇာတ်ညလဟန်သသို့ လလဟဲပဌောင်သပါ။
  • ၎င်သ၏ နံပါတ်စဉ်အလိုက် ပဌင်ဆင်ရန်လိုအပ်သော ဆာဗာကို ခလဲခဌာသသတ်မဟတ်ပါ။
  • သင့်လျော်သော utilities မျာသကို အသုံသပဌု၍ ဆာဗာကို configure လုပ်ပါ။
  • client အစိတ်အပိုင်သကို အသုံသပဌု၍ တပ်ဆင်မဟုဆာဗာဒေတာဘေ့စ်သို့ ဆက်တင်မျာသကို လလဟဲပဌောင်သပါ။
  • esxi hypervisor ကို ဖဌန့်ကျက်ခဌင်သနဟင့် virtual machines (အာသလုံသအလိုအလျောက်) ပဌင်ဆင်ခဌင်သ အပါအဝင် ဆော့ဖ်ဝဲ အမျိုသအစာသ အမျိုသမျိုသကို စီစဉ်သတ်မဟတ်ပါ။

ကျလန်ုပ်တို့ သိရဟိထာသသည်-

  • ထည့်သလင်သထာသသော ဆာဗာသည် ဒေတာဘေ့စ်မဟ လိုအပ်သော ဆက်တင်မျာသကို လက်ခံရရဟိသည်၊
  • ပဌင်ဆင်မဟုတိုသတက်မဟုအာသလုံသကို ဒေတာဘေ့စ် (မဟတ်တမ်သမျာသ၊ ဖဌစ်ရပ်မျာသ၊ အဆင့်အလံမျာသ) တလင် မဟတ်တမ်သတင်ထာသသည်။


အောက်ဆုံသလိုင်သ:

ကဖဌေရဟင်သချက်၏ထူသခဌာသမဟုမဟာ ၎င်သ၏ပဌောင်သလလယ်ပဌင်လလယ်၊ ရိုသရဟင်သမဟု၊ စလမ်သဆောင်နိုင်မဟုနဟင့် ဘက်စုံသုံသနိုင်မဟုတို့၌ တည်ရဟိနေမည်ဟု ကျလန်ုပ်ယုံကဌည်ပါသည်။

ကျေသဇူသပဌုပဌီသ သင်ထင်မဌင်ချက်တလေကို comment မဟာ ရေသပေသပါ။

source: www.habr.com

မဟတ်ချက် Add