Ukulungisa nokususa ama-VM e-Azure usebenzisa i-PowerShell

Ukusebenzisa i-PowerShell, onjiniyela nabaphathi be-IT ngokuphumelelayo bashintsha imisebenzi ehlukahlukene lapho besebenza hhayi kuphela endaweni, kodwa futhi nengqalasizinda yamafu, ikakhulukazi nge-Azure. Kwezinye izimo, ukusebenza nge-PowerShell kulula kakhulu futhi kuyashesha kunokusebenza ngengosi ye-Azure. Ngenxa yemvelo yayo ye-cross-platform, i-PowerShell ingasetshenziswa kunoma iyiphi isistimu yokusebenza.

Kungakhathaliseki ukuthi usebenzisa i-Ubuntu, i-Red Hat, noma i-Windows, i-PowerShell ingakusiza ukulawula izinsiza zakho zamafu. Ukusebenzisa module I-Azure PowerShell, isibonelo, ungasetha noma yiziphi izakhiwo zemishini ebonakalayo.

Kulesi sihloko, sizobheka ukuthi ungasebenzisa kanjani i-PowerShell ukuze ushintshe usayizi we-VM efwini le-Azure, futhi ususe i-VM nezinto ezihambisana nayo.

Ukulungisa nokususa ama-VM e-Azure usebenzisa i-PowerShell

Kubalulekile! Ungakhohlwa ukusula izandla zakho ngesanitizer ukuze ulungiselele umsebenzi:

  • Uzodinga imojuli I-Azure PowerShell Module - ingalandwa ku-PowerShell Gallery ngomyalo Install-Module Az.
  • Udinga ukufakazela ubuqiniso efwini le-Azure lapho umshini obonakalayo usebenza khona ngokusebenzisa umyalo Connect-AzAccount.

Okokuqala, ake sakhe iskripthi esizoshintsha usayizi we-Azure VM. Masivule Ikhodi ye-VS futhi silondoloze umbhalo omusha we-PowerShell obizwa Resize-AzVirtualMachine.ps1 - sizokwengeza izingcezu zekhodi kuyo njengoba isibonelo siqhubeka.

Sicela osayizi abakhona be-VM

Ngaphambi kokuthi ushintshe usayizi we-VM, udinga ukuthola ukuthi bayini osayizi abamukelekayo bemishini ebonakalayo efwini le-Azure. Ukuze wenze lokhu udinga ukusebenzisa umyalo Get-AzVMSize.

Ngakho ngomshini we-virtual devm01 kusuka eqenjini lezinsiza dev Sicela bonke abangaba osayizi abamukelekayo:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Ezinkingeni zangempela, kunjalo, esikhundleni sokuthi ResourceGroupName=dev ΠΈ VMName=devvm01 uzocacisa amanani akho kulawa mapharamitha.)

Umyalo uzobuyisela into efana nale:

Ukulungisa nokususa ama-VM e-Azure usebenzisa i-PowerShell

Lezi yizo zonke izinketho zosayizi okungenzeka zisethelwe umshini othile obonakalayo.

Masishintshe usayizi wemoto

Isibonelo, sizoshintsha usayizi sibe usayizi omusha Standard_B1ls - usendaweni yokuqala ohlwini olungenhla. (Ezinhlelweni zangempela zokuphila, kunjalo, ukhetha noma yimuphi usayizi owudingayo.)

  1. Okokuqala sebenzisa umyalo Get-AzVM sithola ulwazi mayelana nento yethu (umshini obonakalayo) ngokuyigcina kokuguquguqukayo $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Bese sithatha impahla kule nto .HardwareProfile.VmSize bese usetha inani elisha olifunayo:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Futhi manje simane senza umyalo wokuvuselela i-VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Senza isiqiniseko sokuthi konke kuhambe kahle - ukwenza lokhu, siphinde sicele ulwazi mayelana nento yethu futhi sibheke indawo $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Uma sibona lapho Standard_B1ls - lokho kusho ukuthi konke kuhamba ngohlelo, usayizi wemoto ushintshiwe. Ungadlulela phambili futhi wakhele empumelelweni yakho ngokushintsha usayizi wama-VM amaningana ngesikhathi esisodwa usebenzisa uhlu.

Kuthiwani ngokususa i-VM e-Azure?

Ngokususa, akuyona yonke into elula futhi eqondile njengoba kungase kubonakale. Ngemuva kwakho konke, kuyadingeka ukususa inani lezinsiza ezihambisana nalo mshini, okuhlanganisa:

  • Qalisa iziqukathi zokugcina zokuxilonga
  • Izindawo zokuxhumana zenethiwekhi
  • Amakheli e-IP omphakathi
  • Idiski yesistimu ne-blob lapho isimo sayo sigcinwa khona
  • Amadiski edatha

Ngakho-ke, sizodala umsebenzi futhi sikubize Remove-AzrVirtualMachine - futhi ngeke isuse i-Azure VM kuphela, kodwa futhi nakho konke okungenhla.

Sihamba ngendlela evamile futhi siqale sithole into yethu (VM) sisebenzisa umyalo Get-AzVm. Isibonelo, makube yimoto WINSRV19 kusuka eqenjini lezinsiza I-MyTestVMs.

Masigcine le nto kanye nazo zonke izici zayo zibe okuguquguqukayo $vm:

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

Ukukhipha isiqukathi esinamafayela okuxilonga ekuqaliseni

Lapho udala i-VM ku-Azure, umsebenzisi ubuye acelwe ukuthi enze isitsha sokugcina ukuxilongwa kwe-boot (isitsha sokuxilonga i-boot), ukuze kuthi uma kunezinkinga ngokubhutha, kube nokuthile ongaphendukela kukho ukuze kuxazululwe izinkinga. Nokho, lapho i-VM isuswa, lesi siqukathi sishiywa ukuze siqhubeke nokuba khona kwaso okungenanjongo. Asilungise lesi simo.

  1. Okokuqala, ake sithole ukuthi lesi sitsha singesayiphi i-akhawunti yokugcina - kulokhu sidinga ukuthola indawo storageUri emathunjini ento DiagnosticsProfile yethu VM. Kulokhu ngisebenzisa lesi sisho esijwayelekile:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Manje udinga ukuthola igama lesiqukathi, futhi kulokhu udinga ukuthola i-VM ID usebenzisa umyalo 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. Okulandelayo, sithola igama leqembu lezinsiza lapho isiqukathi esiyingxenye yalo:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Futhi manje sinakho konke esikudingayo ukususa isitsha ngomyalo Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Ukukhipha i-VM

Manje ake sisuse umshini obonakalayo ngokwawo, njengoba sesivele sidale okuguquguqukayo $vm entweni ehambisanayo. Awu, asigijime umyalo Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Ukukhipha isixhumi esibonakalayo senethiwekhi nekheli le-IP lomphakathi

I-VM yethu isenokuxhumana kwenethiwekhi okukodwa (noma okuningana) (NICs) - ukukususa njengokungadingeki, asidlule endaweni. NetworkInterfaces into yethu ye-VM bese ususa i-NIC ngomyalo Remove-AzNetworkInterface. Esimeni lapho kune-interface yenethiwekhi engaphezu kweyodwa, sisebenzisa iluphu. Ngesikhathi esifanayo, ku-NIC ngayinye sizohlola indawo IpConfiguration ukunquma ukuthi isixhumi esibonakalayo sinekheli le-IP lomphakathi. Uma kutholakala eyodwa, sizoyisusa ngomyalo Remove-AzPublicIpAddress.

Nasi isibonelo sekhodi enjalo, lapho sibheka kuwo wonke ama-NIC ku-loop, siwasuse, futhi sihlole ukuthi ikhona yini i-IP yomphakathi. Uma ikhona, hlaziya indawo PublicIpAddress, thola igama lensiza ehambisanayo nge-ID bese uyisusa:


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

Ukukhipha idiski yesistimu

I-OS disk iyi-blob, okukhona umyalo wokuyisusa Remove-AzStorageBlob - kodwa ngaphambi kokukwenza, uzodinga ukusetha amanani adingekayo emingcele yawo. Ukuze wenze lokhu, ikakhulukazi, udinga ukuthola igama lesitsha sokugcina esiqukethe idiski yesistimu, bese uyidlulisela kulo myalo kanye ne-akhawunti ehambisanayo yokugcina.

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

Ikhipha Ibhulobhu Yesimo Sediski

Ukwenza lokhu, njengoba cishe usuqagele kakade, sithatha isitsha sokugcina lapho kugcinwa khona le diski, futhi, okusho ukuthi i-blob ekugcineni iqukethe. status, dlulisela imingcele ehambisanayo kumyalo wokususa Remove-AzStorageBlob:

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

Futhi ekugcineni, sisusa amadiski edatha

I-VM yethu isengaba namadiski anedatha enamathiselwe kuwo. Uma zingadingeki, sizozisusa nazo. Asiyihlaziye kuqala StorageProfile VM yethu futhi uthole indawo Uri. Uma kukhona amadiski amaningana, sihlela umjikelezo ngokusho URI. Nge-URI ngayinye, sizothola i-akhawunti yesitoreji ehambisanayo kusetshenziswa Get-AzStorageAccount. Bese uhlaziya i-URI yesitoreji ukuze ukhiphe igama le-blob oyifunayo bese ulidlulisela kumyalo wokususa Remove-AzStorageBlob kanye ne-akhawunti yokugcina. Nakhu okuzobukeka ngayo ngekhodi:

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

Futhi manje β€œsifinyelele isiphetho esijabulisayo!” Manje sidinga ukuhlanganisa iqoqo elilodwa kuzo zonke lezi zingcezu. Umbhali onomusa u-Adam Bertram wahlangana nabasebenzisi phakathi futhi wakwenza ngokwakhe. Nasi isixhumanisi seskripthi sokugcina esibizwa Susa-AzrVirtualMachine.ps1:

β†’ GitHub

Ngithemba ukuthi uthola lawa macebiso asebenzayo ewusizo ekongeni umzamo, isikhathi, kanye nemali lapho usebenza nama-Azure VM.

Source: www.habr.com

Engeza amazwana