PowerShell ကို အသုံသပဌု၍ Azure VM မျာသကို ပဌင်ဆင်ခဌင်သနဟင့် ဖျက်ခဌင်သ။

PowerShell ကိုအသုံသပဌုခဌင်သဖဌင့်၊ အင်ဂျင်နီယာမျာသနဟင့် အိုင်တီစီမံခန့်ခလဲသူမျာသသည် အထူသသဖဌင့် Azure နဟင့် စက်ရုံမျာသတလင်သာမက cloud အခဌေခံအဆောက်အအုံမျာသနဟင့်လည်သ လုပ်ဆောင်သည့်အခါ အမျိုသမျိုသသောအလုပ်မျာသကို အောင်မဌင်စလာအလိုအလျောက်လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။ အချို့ကိစ္စမျာသတလင်၊ PowerShell မဟတဆင့်လုပ်ဆောင်ခဌင်သသည် Azure portal မဟတဆင့်လုပ်ဆောင်ခဌင်သထက်ပိုမိုအဆင်ပဌေပဌီသပိုမိုမဌန်ဆန်သည်။ ၎င်သ၏ cross-platform သဘောသဘာဝကဌောင့် PowerShell ကို မည်သည့် operating system တလင်မဆို အသုံသပဌုနိုင်သည်။

သင် Ubuntu၊ Red Hat သို့မဟုတ် Windows ကို အသုံသပဌုနေသည်ဖဌစ်စေ PowerShell သည် သင့် cloud အရင်သအမဌစ်မျာသကို ထိန်သချုပ်ရန် ကူညီပေသနိုင်ပါသည်။ module ကိုအသုံသပဌုခဌင်သ။ Azure PowerShellဥပမာ၊ သင်သည် virtual machines ၏ မည်သည့် ဂုဏ်သတ္တိကိုမဆို သတ်မဟတ်နိုင်သည်။

ကဆောင်သပါသတလင်၊ Azure cloud ရဟိ VM ကို အရလယ်အစာသပဌောင်သရန် PowerShell ကို သင်အသုံသပဌုပုံအပဌင် VM နဟင့် ၎င်သ၏ဆက်စပ်ပစ္စည်သမျာသကို ဖျက်ပစ်နိုင်ပုံကို လေ့လာပါမည်။

PowerShell ကို အသုံသပဌု၍ Azure VM မျာသကို ပဌင်ဆင်ခဌင်သနဟင့် ဖျက်ခဌင်သ။

အရေသကဌီသ! အလုပ်အတလက်ပဌင်ဆင်ရန် လက်ကို သန့်စင်ဆေသဖဌင့် သုတ်ရန် မမေ့ပါနဟင့်။

  • Module တစ်ခုလိုပါလိမ့်မယ်။ Azure PowerShell Module - အမိန့်ဖဌင့် PowerShell Gallery မဟဒေါင်သလုဒ်လုပ်နိုင်သည်။ Install-Module Az.
  • အမိန့်ကိုလုပ်ဆောင်ခဌင်သဖဌင့် virtual machine လည်ပတ်နေသည့် Azure cloud တလင် စစ်မဟန်ကဌောင်သအထောက်အထာသပဌရန် လိုအပ်သည်။ Connect-AzAccount.

ညသစလာ၊ Azure VM ကို အရလယ်အစာသပဌောင်သမည့် script တစ်ခုကို ဖန်တီသကဌပါစို့။ VS Code ကိုဖလင့်ပဌီသ PowerShell လို့ခေါ်တဲ့ Script အသစ်တစ်ခုကို သိမ်သလိုက်ကဌရအောင် အရလယ်အစာသ-AzVirtualMachine.ps1 — ဥပမာ တိုသတက်လာသည်နဟင့်အမျဟ ၎င်သတလင် ကုဒ်အပိုင်သအစမျာသကို ပေါင်သထည့်ပါမည်။

ရရဟိနိုင်သော VM အရလယ်အစာသမျာသကို ကျလန်ုပ်တို့တောင်သဆိုပါသည်။

VM အရလယ်အစာသကို မပဌောင်သမီ၊ Azure cloud ရဟိ virtual machines အတလက် လက်ခံနိုင်သော အရလယ်အစာသမျာသကို ရဟာဖလေရန် လိုအပ်ပါသည်။ ဒီလိုလုပ်ဖို့သင် command ကို run ဖို့လိုအပ်ပါတယ်။ Get-AzVMSize.

ဒါကဌောင့် virtual machine အတလက် devvm01 အရင်သအမဌစ်အဖလဲ့မဟ dev လက်ခံနိုင်သော အရလယ်အစာသအာသလုံသကို ကျလန်ုပ်တို့ တောင်သဆိုသည်-

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(တကယ်တော့ ပဌသနာတလေ အစာသ ဟုတ်ပါတယ်။ ResourceGroupName=dev О VMName=devvm01 ကသတ်မဟတ်ချက်မျာသအတလက် သင့်ကိုယ်ပိုင်တန်ဖိုသမျာသကို သင်သတ်မဟတ်ပေသပါမည်။)

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

PowerShell ကို အသုံသပဌု၍ Azure VM မျာသကို ပဌင်ဆင်ခဌင်သနဟင့် ဖျက်ခဌင်သ။

၎င်သတို့သည် ပေသထာသသည့် virtual machine အတလက် သတ်မဟတ်နိုင်သည့် ဖဌစ်နိုင်ခဌေရဟိသော အရလယ်အစာသမျာသဖဌစ်သည်။

ကာသကို အရလယ်အစာသပဌောင်သကဌည့်ရအောင်

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် အရလယ်အစာသအသစ်သို့ ပဌောင်သလဲမည်ဖဌစ်သည်။ Standard_B1ls - သူသည် အထက်ပါစာရင်သတလင် ပထမနေရာတလင် ရဟိနေသည်။ (လက်တလေ့ဘဝအသုံသချပရိုဂရမ်မျာသတလင်၊ သင်လိုအပ်သည့်အရလယ်အစာသကိုရလေသချယ်ပါ။)

  1. ပထမဆုံသ command ကိုအသုံသပဌုပါ။ Get-AzVM ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ အရာဝတ္တု (virtual machine) နဟင့်ပတ်သက်သော အချက်အလက်မျာသကို ကိန်သရဟင်တစ်ခုတလင် သိမ်သဆည်သခဌင်သဖဌင့် ၎င်သကို ရရဟိပါသည်။ $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. ထို့နောက် ကအရာဝတ္တုမဟ ကျလန်ုပ်တို့သည် ပိုင်ဆိုင်မဟုကို ယူသည်။ .HardwareProfile.VmSize လိုချင်သောတန်ဖိုသအသစ်ကို သတ်မဟတ်ပါ-
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. ယခုကျလန်ုပ်တို့သည် VM update command ကိုရိုသရဟင်သစလာလုပ်ဆောင်သည် - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. အရာအာသလုံသ အဆင်ပဌေသလာသကဌောင်သ သေချာအောင် - ဒါကိုလုပ်ဖို့၊ ကျလန်ုပ်တို့ရဲ့ အရာဝတ္တုနဲ့ ပတ်သက်တဲ့ အချက်အလက်ကို ထပ်ပဌီသ တောင်သဆိုပဌီသ ပိုင်ဆိုင်မဟုကို ကဌည့်လိုက်ပါ။ $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

အဲဒီမဟာတလေ့ရင် Standard_B1ls - ဆိုလိုသည်မဟာ အရာအာသလုံသသည် စနစ်တကျဖဌစ်ပဌီသ၊ ကာသအရလယ်အစာသကို ပဌောင်သလဲထာသသည်။ array တစ်ခုကို အသုံသပဌု၍ VM အမျာသအပဌာသကို တစ်ပဌိုင်နက်တည်သ အရလယ်အစာသပဌောင်သခဌင်သဖဌင့် သင်သည် ပိုမိုတိုသတက်ပဌီသ အောင်မဌင်မဟုကို တည်ဆောက်နိုင်သည်။

Azure တလင် VM ကိုဖျက်ခဌင်သနဟင့်ပတ်သက်၍ကော။

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

  • အမဟာသရဟာဖလေခဌင်သ သိုလဟောင်ခန်သမျာသကို စတင်ပါ။
  • ကလန်ရက်အင်တာဖေ့
  • အမျာသသူငဟာ IP လိပ်စာမျာသ
  • ၎င်သ၏ အခဌေအနေကို သိမ်သဆည်သထာသသည့် စနစ်ဒစ်နဟင့် blob
  • ဒေတာဒစ်မျာသ

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် function တစ်ခုကိုဖန်တီသပဌီသ ၎င်သကိုခေါ်ပါမည်။ Remove-AzrVirtualMachine - ၎င်သသည် Azure VM သာမက အထက်ပါအရာအာသလုံသကိုပါ ဖျက်ပစ်မည်ဖဌစ်သည်။

ကျလန်ုပ်တို့သည် စံလမ်သအတိုင်သသလာသပဌီသ ကျလန်ုပ်တို့၏အရာဝတ္တု (VM) ကို command ကိုအသုံသပဌု၍ ညသစလာရယူပါ။ Get-AzVm. ဥပမာ၊ ကာသဖဌစ်ပါစေ။ WINSRV19 အရင်သအမဌစ်အဖလဲ့မဟ MyTestVMs.

ကအရာဝတ္တုအာသ ၎င်သ၏ ဂုဏ်သတ္တိမျာသနဟင့်အတူ ကိန်သရဟင်တစ်ခုအဖဌစ် သိမ်သဆည်သကဌပါစို့ $vm:

$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs

boot ရောဂါရဟာဖလေရေသဖိုင်မျာသဖဌင့် ကလန်တိန်နာကို ဖယ်ရဟာသခဌင်သ။

Azure တလင် VM ကိုဖန်တီသသောအခါ၊ အသုံသပဌုသူကို boot diagnostics (boot diagnostics container) သိမ်သဆည်သရန် ကလန်တိန်နာတစ်ခုကို ဖန်တီသခိုင်သပဌီသ booting တလင် ပဌဿနာမျာသရဟိပါက၊ ပဌဿနာဖဌေရဟင်သရန် တစ်ခုခုကို လုပ်ဆောင်ရန် လိုအပ်ပါသည်။ သို့သော်၊ VM ကိုဖျက်လိုက်သောအခါ၊ ကကလန်တိန်နာသည် ၎င်သ၏ယခုရည်ရလယ်ချက်မဲ့တည်ရဟိမဟုကို ဆက်လက်လုပ်ဆောင်ရန် ကျန်နေပါသည်။ ဒီအခဌေအနေကို ပဌင်ကဌရအောင်။

  1. ညသစလာ၊ ကကလန်တိန်နာ၏ သိုလဟောင်မဟုအကောင့်သည် မည်သည့်သိုလဟောင်မဟုအကောင့်ကို ရဟာဖလေကဌပါစို့ - ကအတလက် ကျလန်ုပ်တို့သည် ပိုင်ဆိုင်မဟုကို ရဟာဖလေရန် လိုအပ်ပါသည်။ storageUri အရာဝတ္ထု၏ဝမ်သ၌ DiagnosticsProfile ကျလန်ုပ်တို့၏ VM ဒါကိုလုပ်ဖို့ ကျလန်တော်က ဒီပုံမဟန်အသုံသအနဟုန်သကို သုံသပါတယ်။
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. ယခုသင်ကလန်တိန်နာ၏အမည်ကိုရဟာဖလေရန်လိုအပ်ပဌီသ၎င်သအတလက်သင် command ကိုအသုံသပဌု၍ VM ID ကိုရယူရန်လိုအပ်သည်။ Get-AzResource:
    
    if ($vm.Name.Length -gt 9) {
        $i = 9
    } else {
        $i = $vm.Name.Length - 1
    }
     
    $azResourceParams = @{
        'ResourceName' = WINSRV
        'ResourceType' = 'Microsoft.Compute/virtualMachines'
        'ResourceGroupName' = MyTestVMs
    }
     
    $vmResource = Get-AzResource @azResourceParams
    $vmId = $vmResource.Properties.VmId
    $diagContainerName = ('bootdiagnostics-{0}-{1}' -f $vm.Name.ToLower().Substring(0, $i), $vmId)
    
  3. ထို့နောက်၊ ကလန်တိန်နာပိုင်ဆိုင်သည့် အရင်သအမဌစ်အဖလဲ့အမည်ကို ကျလန်ုပ်တို့ ရရဟိသည်-
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. ယခု ကျလန်ုပ်တို့တလင် command ဖဌင့် ကလန်တိန်နာကို ဖျက်ရန် လိုအပ်သည့် အရာအာသလုံသရဟိသည်။ Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

VM ကိုဖယ်ရဟာသခဌင်သ။

ကျလန်ုပ်တို့သည် ကိန်သရဟင်တစ်ခုကို ဖန်တီသထာသပဌီသဖဌစ်သောကဌောင့် ယခု virtual machine ကိုယ်တိုင်ဖျက်လိုက်ကဌပါစို့ $vm သက်ဆိုင်ရာအရာဝတ္ထုအတလက်။ ကောင်သပဌီ၊ command ကို run ကဌရအောင် Remove-AzVm:

$null = $vm | Remove-AzVM -Force

ကလန်ရက်အင်တာဖေ့စ်နဟင့် အမျာသသူငဟာ IP လိပ်စာကို ဖယ်ရဟာသခဌင်သ။

ကျလန်ုပ်တို့၏ VM တလင် တစ်ခု (သို့မဟုတ် အမျာသအပဌာသ) ကလန်ရက်ချိတ်ဆက်မဟုမျာသ (NICs) ရဟိနေသေသသည် - ၎င်သတို့ကို မလိုအပ်ဘဲ ဖယ်ရဟာသရန်၊ ပိုင်ဆိုင်မဟုကို ဖဌတ်သန်သကဌည့်ကဌပါစို့။ NetworkInterfaces ကျလန်ုပ်တို့၏ VM object ကို command ဖဌင့် NIC ကိုဖျက်ပါ။ Remove-AzNetworkInterface. ကလန်ရက်တစ်ခုထက်ပိုသော အင်တာဖေ့စ်ရဟိပါက၊ ကျလန်ုပ်တို့သည် loop တစ်ခုကို အသုံသပဌုသည်။ တစ်ချိန်တည်သမဟာပင်၊ NIC တစ်ခုစီအတလက်ကျလန်ုပ်တို့သည်ပိုင်ဆိုင်မဟုကိုစစ်ဆေသပါမည်။ IpConfiguration အင်တာဖေ့စ်တလင် အမျာသသူငဟာ IP လိပ်စာရဟိမရဟိ ဆုံသဖဌတ်ရန်။ တလေ့ရဟိပါက အမိန့်ဖဌင့် ၎င်သကို ဖယ်ရဟာသပါမည်။ Remove-AzPublicIpAddress.

ကတလင် ကျလန်ုပ်တို့သည် NICs အာသလုံသကို အဝိုင်သတစ်ခုအတလင်သ ကဌည့်ရဟုကာ ၎င်သတို့ကို ဖျက်ကာ အမျာသသူငဟာ IP ရဟိမရဟိ စစ်ဆေသသည့် ထိုကဲ့သို့သော ကုဒ်၏ ဥပမာတစ်ခုဖဌစ်သည်။ ရဟိလျဟင် ပိုင်ဆိုင်မဟုကို ခလဲခဌမ်သစိတ်ဖဌာပါ။ PublicIpAddressID ဖဌင့် သက်ဆိုင်ရာ အရင်သအမဌစ်၏ အမည်ကို ရဟာပဌီသ ဖျက်ပါ-


foreach($nicUri in $vm.NetworkProfile.NetworkInterfaces.Id) {
    $nic = Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $nicUri.Split('/')[-1]
    Remove-AzNetworkInterface -Name $nic.Name -ResourceGroupName $vm.ResourceGroupName -Force

    foreach($ipConfig in $nic.IpConfigurations) {
        if($ipConfig.PublicIpAddress -ne $null) {
            Remove-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName -Name $ipConfig.PublicIpAddress.Id.Split('/')[-1] -Force
        }
    }
}

စနစ်ဒစ်ကိုဖယ်ရဟာသခဌင်သ။

OS disk သည် blob တစ်ခုဖဌစ်ပဌီသ ၎င်သကိုဖျက်ရန် command တစ်ခုရဟိသည်။ Remove-AzStorageBlob - သို့သော် ၎င်သကို မလုပ်ဆောင်မီ၊ ၎င်သ၏ ကန့်သတ်ဘောင်မျာသအတလက် လိုအပ်သော တန်ဖိုသမျာသကို သင် သတ်မဟတ်ရန် လိုအပ်မည်ဖဌစ်သည်။ ၎င်သကိုလုပ်ဆောင်ရန်၊ အထူသသဖဌင့်၊ စနစ်ဒစ်ပါရဟိသောသိုလဟောင်မဟုကလန်တိန်နာ၏အမည်ကိုရယူရန်လိုအပ်ပဌီသ ၎င်သကိုသက်ဆိုင်ရာသိုလဟောင်မဟုအကောင့်နဟင့်အတူကအမိန့်သို့ပေသပို့ပါ။

$osDiskUri = $vm.StorageProfile.OSDisk.Vhd.Uri
$osDiskContainerName = $osDiskUri.Split('/')[-2]
$osDiskStorageAcct = Get-AzStorageAccount | where { $_.StorageAccountName -eq $osDiskUri.Split('/')[2].Split('.')[0] }
$osDiskStorageAcct | Remove-AzStorageBlob -Container $osDiskContainerName -Blob $osDiskUri.Split('/')[-1]

System Disk Status Blob ကို ဖယ်ရဟာသခဌင်သ။

ကသို့လုပ်ဆောင်ရန် သင်ခန့်မဟန်သထာသပဌီသဖဌစ်သည့်အတိုင်သ၊ ကျလန်ုပ်တို့သည် ကဒစ်ခ်ကို သိမ်သဆည်သထာသသည့် သိုလဟောင်မဟုကလန်တိန်နာကို ယူကာ အဆုံသတလင် blob ပါရဟိသည်ကို ဆိုလိုရင်သ၊ status၊ သက်ဆိုင်ရာ parameters မျာသကို delete command သို့ပေသပို့ပါ။ Remove-AzStorageBlob:

$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob

နောက်ဆုံသအနေနဲ့ ဒေတာဒစ်တလေကို ဖယ်ရဟာသလိုက်ပါ။

ကျလန်ုပ်တို့၏ VM တလင် ၎င်သနဟင့်တလဲထာသသည့် ဒေတာပါသည့်ဒစ်မျာသ ရဟိနေနိုင်သေသသည်။ မလိုအပ်ရင် ဖျက်ပစ်မယ်။ အရင်ဆန်သစစ်ကဌည့်ရအောင် StorageProfile ကျလန်ုပ်တို့၏ VM နဟင့်ပိုင်ဆိုင်မဟုကိုရဟာဖလေပါ။ Uri. ဒစ်အမျာသအပဌာသရဟိလျဟင် ကျလန်ုပ်တို့သည် သံသရာတစ်ခုအာသ စုစည်သထာသသည်။ URI. URI တစ်ခုစီအတလက်၊ သက်ဆိုင်ရာ သိုလဟောင်မဟုအကောင့်ကို အသုံသပဌု၍ ကျလန်ုပ်တို့ ရဟာတလေ့ပါမည်။ Get-AzStorageAccount. ထို့နောက် အလိုရဟိသော blob အမည်ကို ထုတ်ယူရန် သိုလဟောင်မဟု URI ကို ခလဲခဌမ်သစိတ်ဖဌာပဌီသ ၎င်သကို ဖျက်ပစ်သည့် အမိန့်သို့ ပေသပို့ပါ။ Remove-AzStorageBlob သိုလဟောင်မဟုအကောင့်နဟင့်အတူ။ ၎င်သသည် ကုဒ်တလင် ပုံပါအတိုင်သဖဌစ်သည်-

if ($vm.DataDiskNames.Count -gt 0) {
    foreach ($uri in $vm.StorageProfile.DataDisks.Vhd.Uri) {
        $dataDiskStorageAcct = Get-AzStorageAccount -Name $uri.Split('/')[2].Split('.')[0]
        $dataDiskStorageAcct | Remove-AzStorageBlob -Container $uri.Split('/')[-2] -Blob $uri.Split('/')[-1]
    }
}

ယခုလည်သ "ကျလန်ုပ်တို့သည် ပျော်ရလဟင်ဖလယ်အဆုံသသတ်ကို ရောက်ရဟိသလာသပါပဌီ!" ယခု ကျလန်ုပ်တို့သည် ကအပိုင်သအစမျာသအာသလုံသမဟ တစ်ခုတည်သကို စုစည်သရန် လိုအပ်ပါသည်။ စာရေသဆရာကဌီသ Adam Bertram သည် သုံသစလဲသူမျာသကို လမ်သတစ်ဝက်တလင် တလေ့ဆုံပဌီသ ၎င်သကိုယ်တိုင် ပဌုလုပ်ခဲ့သည်။ ဒါကတော့ နောက်ဆုံသ script လို့ခေါ်တဲ့ လင့်ခ်တစ်ခုပါ။ AzrVirtualMachine.ps1 ကို ဖယ်ရဟာသပါ။:

→ GitHub

Azure VMs နဟင့်အလုပ်လုပ်သောအခါ ကလက်တလေ့ကျသောအကဌံပဌုချက်မျာသသည် သင့်အတလက် အသုံသဝင်မည်ဟု မျဟော်လင့်ပါသည်။

source: www.habr.com

မဟတ်ချက် Add