Kusintha ndi kuchotsa ma VM a Azure pogwiritsa ntchito PowerShell

Pogwiritsa ntchito PowerShell, mainjiniya ndi oyang'anira IT amayendetsa bwino ntchito zosiyanasiyana pogwira ntchito osati ndi malo okha, komanso ndi zida zamtambo, makamaka ndi Azure. Nthawi zina, kugwira ntchito kudzera pa PowerShell ndikosavuta komanso mwachangu kuposa kugwira ntchito kudzera pa Azure portal. Chifukwa cha mawonekedwe ake ophatikizika, PowerShell itha kugwiritsidwa ntchito pamakina aliwonse.

Kaya mukuyendetsa Ubuntu, Red Hat, kapena Windows, PowerShell ikhoza kukuthandizani kuwongolera zida zanu zamtambo. Kugwiritsa ntchito module Azure PowerShell, mwachitsanzo, mutha kukhazikitsa chilichonse cha makina enieni.

M'nkhaniyi, tiwona momwe mungagwiritsire ntchito PowerShell kuti musinthe kukula kwa VM mumtambo wa Azure, komanso kuchotsa VM ndi zinthu zomwe zikugwirizana nazo.

Kusintha ndi kuchotsa ma VM a Azure pogwiritsa ntchito PowerShell

Zofunika! Musaiwale kupukuta manja anu ndi sanitizer kukonzekera ntchito:

  • Mufunika gawo Azure PowerShell Module - itha kutsitsidwa ku PowerShell Gallery ndi lamulo Install-Module Az.
  • Muyenera kutsimikizira mumtambo wa Azure komwe makina enieni akuyenda poyendetsa lamulo Connect-AzAccount.

Choyamba, tiyeni tipange script yomwe ingasinthe kukula kwa Azure VM. Tiyeni titsegule VS Code ndikusunga script yatsopano ya PowerShell yotchedwa Resize-AzVirtualMachine.ps1 - tidzawonjezera zidutswa za code pamene chitsanzo chikupita patsogolo.

Tikupempha makulidwe a VM omwe alipo

Musanasinthe kukula kwa VM, muyenera kudziwa kukula kovomerezeka kwamakina omwe ali mumtambo wa Azure. Kuti muchite izi muyenera kuyendetsa lamulo Get-AzVMSize.

Kotero kwa makina enieni devm01 kuchokera kumagulu othandizira dev Tikupempha masaizi onse ovomerezeka:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Mumavuto enieni, inde, m'malo mwa ResourceGroupName=dev ΠΈ VMName=devvm01 mudzafotokozera zomwe mukufuna pazigawo izi.)

Lamuloli libweretsa motere:

Kusintha ndi kuchotsa ma VM a Azure pogwiritsa ntchito PowerShell

Izi ndi zosankha zamitundu yonse zomwe zitha kukhazikitsidwa pamakina omwe apatsidwa.

Tiyeni tisinthe kukula kwa galimoto

Mwachitsanzo, tidzasintha kukula mpaka kukula kwatsopano Standard_B1ls - ali pamalo oyamba pamndandanda womwe uli pamwambapa. (Muzochitika zenizeni, mumasankha kukula kulikonse komwe mungafune.)

  1. Choyamba pogwiritsa ntchito lamulo Get-AzVM timapeza zambiri za chinthu chathu (makina enieni) pochisunga muzosintha $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Kenako timatenga katundu ku chinthu ichi .HardwareProfile.VmSize ndikukhazikitsa mtengo watsopano womwe mukufuna:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Ndipo tsopano timangochita lamulo la VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Timaonetsetsa kuti zonse zayenda bwino - kuti tichite izi, timapemphanso zambiri za chinthu chathu ndikuyang'ana katunduyo $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Ngati tiwona pamenepo Standard_B1ls - izi zikutanthauza kuti zonse zili bwino, kukula kwa galimoto kwasinthidwa. Mutha kupita patsogolo ndikukulitsa kupambana kwanu posintha ma VM angapo nthawi imodzi pogwiritsa ntchito mndandanda.

Nanga bwanji kuchotsa VM ku Azure?

Ndi kufufutidwa, si chirichonse chimene chiri chophweka ndi chowongoka monga momwe zingawonekere. Kupatula apo, ndikofunikira kuchotsa zinthu zingapo zogwirizana ndi makinawa, kuphatikiza:

  • Zida zosungiramo zowunikira za jombo
  • Malo ochezera
  • Ma adilesi a IP apagulu
  • System disk ndi blob pomwe malo ake amasungidwa
  • Ma disks a data

Chifukwa chake, tidzapanga ntchito ndikuyitcha Remove-AzrVirtualMachine - ndipo sichichotsa Azure VM yokha, komanso zonse zomwe zili pamwambapa.

Timapita njira yokhazikika ndikuyamba kupeza chinthu chathu (VM) pogwiritsa ntchito lamulo Get-AzVm. Mwachitsanzo, lolani kukhala galimoto WINSRV19 kuchokera kumagulu othandizira MyTestVMs.

Tiyeni tisunge chinthu ichi pamodzi ndi zinthu zake zonse muzosintha $vm:

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

Kuchotsa chidebe chokhala ndi mafayilo owunikira

Popanga VM ku Azure, wogwiritsa ntchito amafunsidwanso kuti apange chidebe chosungiramo zowunikira za boot (chidebe cha boot diagnostics), kuti ngati pali zovuta ndi booting, pali china chake choti mutembenuzireko kuti athetse mavuto. Komabe, VM ikachotsedwa, chidebechi chimasiyidwa kuti chipitilize kukhalapo kwake kopanda cholinga. Tiyeni tikonze izi.

  1. Choyamba, tiyeni tiwone kuti chidebecho ndi akaunti yanji yosungiramo - chifukwa chake tifunika kupeza malowo storageUri m'matumbo a chinthucho DiagnosticsProfile VM yathu. Pachifukwa ichi ndimagwiritsa ntchito mawu awa wamba:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Tsopano muyenera kudziwa dzina la chidebecho, ndipo chifukwa cha izi muyenera kupeza ID ya VM pogwiritsa ntchito lamulo 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. Kenako, timapeza dzina la gulu lazinthu zomwe chidebecho chili:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Ndipo tsopano tili ndi zonse zomwe tikufuna kuti tichotse chidebecho ndi lamulo Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Kuchotsa VM

Tsopano tiyeni tifufute makina enieniwo, popeza tapanga kale kusintha $vm kwa chinthu chofanana. Chabwino, tiyeni tiyendetse lamulo Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Kuchotsa mawonekedwe a netiweki ndi adilesi yapagulu ya IP

VM yathu ikadali ndi imodzi (kapena zingapo) zolumikizira netiweki (NICs) - kuzichotsa ngati zosafunikira, tiyeni tidutse malowo. NetworkInterfaces chinthu chathu cha VM ndikuchotsa NIC ndi lamulo Remove-AzNetworkInterface. Ngati pali maukonde opitilira umodzi, timagwiritsa ntchito lupu. Panthawi imodzimodziyo, pa NIC iliyonse tidzayang'ana katunduyo IpConfiguration kuti muwone ngati mawonekedwewo ali ndi adilesi yapagulu ya IP. Ngati wina apezeka, tidzachotsa ndi lamulo Remove-AzPublicIpAddress.

Nachi chitsanzo cha ma code otere, pomwe timayang'ana ma NIC onse mozungulira, kuwachotsa, ndikuwunika ngati pali IP yapagulu. Ngati alipo, perekani katunduyo PublicIpAddress, pezani dzina lachidziwitso chofananira ndi ID ndikuchichotsa:


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
        }
    }
}

Kuchotsa dongosolo litayamba

Diski ya OS ndi blob, yomwe pali lamulo kuti ichotse Remove-AzStorageBlob - koma musanachite, muyenera kukhazikitsa zofunikira pazigawo zake. Kuti muchite izi, makamaka, muyenera kupeza dzina la chidebe chosungiramo chomwe chili ndi disk disk, ndikuchipereka ku lamulo ili pamodzi ndi akaunti yosungiramo.

$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]

Kuchotsa System Disk Status Blob

Kuti tichite izi, monga momwe mumaganizira kale, timatenga chidebe chosungiramo chomwe diski iyi imasungidwa, ndipo, kutanthauza kuti blob kumapeto kuli. status, perekani magawo ofanana ndi lamulo lochotsa Remove-AzStorageBlob:

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

Ndipo potsiriza, timachotsa ma data disks

VM yathu imathabe kukhala ndi ma disks okhala ndi data yomwe idalumikizidwa nayo. Ngati sizikufunika, tidzazichotsanso. Tiyeni tikambirane kaye StorageProfile VM yathu ndikupeza katundu Uri. Ngati pali ma disks angapo, timapanga kuzungulira molingana ndi URI. Pa URI iliyonse, tipeza akaunti yosungira yofananira ikugwiritsa ntchito Get-AzStorageAccount. Kenako phatikizani URI yosungiramo kuti muchotse dzina lomwe mukufuna ndikulipereka ku lamulo lochotsa Remove-AzStorageBlob pamodzi ndi akaunti yosungirako. Izi ndi zomwe zingawonekere mu code:

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]
    }
}

Ndipo tsopano "tafika pamapeto osangalatsa!" Tsopano tifunika kusonkhanitsa chithumwa chimodzi kuchokera pazidutswa zonsezi. Wolemba wachifundo Adam Bertram adakumana ndi ogwiritsa ntchito theka ndipo adachita yekha. Nawu ulalo wa script yomaliza yotchedwa Chotsani-AzrVirtualMachine.ps1:

β†’ GitHub

Ndikukhulupirira kuti mupeza malangizo othandizawa kukupulumutsirani khama, nthawi, ndi ndalama mukamagwira ntchito ndi ma Azure VM.

Source: www.habr.com

Kuwonjezera ndemanga