Muuda ja eemalda Azure VM-e PowerShelli abil

PowerShelli abil suudavad insenerid ja IT-administratorenid edukalt automatiseerida erinevaid ĂŒlesandeid mitte ainult on-premises, vaid ka pilveinfrastruktuuride, sealhulgas Azure'i, haldamisel. PowerShelliga töötamine on mitmetel juhtudel palju mugavam ja kiirem kui Azure'i portaali kaudu. TĂ€nu PowerShelli platvormideĂŒlestele vĂ”imalustele saab seda kasutada mistahes operatsioonisĂŒsteemides.

Olgu te tegemist Ubuntu, Red Hati vĂ”i Windowsiga — PowerShell aitab hallata pilveressursse. Kasutades moodulit Azure PowerShell, nĂ€iteks, saab mÀÀrata mistahes virtuaalmasinate omadusi.

Selles artiklis vaatame, kuidas kasutada PowerShelli, et muuta virtuaalmasina suurust Azure'is, samuti kuidas eemaldada virtuaalmasina ja sellega seotud objekte.

Muuda ja eemalda Azure VM-e PowerShelli abil

Oluline! Ärge unustage kĂ€si desinfitseerida ja tööd alustada:

  • Vajate moodulit Azure PowerShell Module — selle saab laadida PowerShell Gallery'st kĂ€suga Install-Module Az.
  • Tuleb autentida Azure'is, kus virtuaalmasin töötab, kĂ€ivitades kĂ€su Connect-AzAccount.

Alustame skripti loomisega, mis muudab Azure'i VM-i suurust. Avame VS Code'i ja salvestame uue PowerShelli skripti nimega Resize-AzVirtualMachine.ps1 — sellesse lisame koodilĂ”ike nĂ€itena.

KĂŒsi olemasolevaid VM-i suurusi

Kuna enne VM-i suuruse muutmist tuleb teada, millised suurused on Azure'i pilves virtuaalmasinatele ĂŒldiselt lubatud, tuleb kĂ€ivitada kĂ€sk Get-AzVMSize.

Nii et virtuaalmasina devvm01 ressursside rĂŒhmast dev kĂŒsi kĂ”iki lubatud suurusi:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Tegelikus töös on muidugi parem kirjutada oma vÀÀrtused nende parameetrite asemel.) KÀsk tagastab ligikaudu jÀrgmise nimekirja: ja Need on kÔik vÔimalikud suuruse variandid, mida selle virtuaalmasina jaoks saab mÀÀrata. Teeme masina suuruse muutmise

NĂ€iteks muudame suuruseks

Muuda ja eemalda Azure VM-e PowerShelli abil

Standard_B1ls

— see on ĂŒlaltoodud loendis esimesel kohal. (Tegelikus töös valite muidugi endale sobiva suuruse.)

Esiteks saame kÀsu Get-AzVM abil meie objekti (virtuaalmasina) andmed, salvestades need muutujasse

  1. $virtualMachine $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 SeejÀrel vÔtame selle objekti omaduse .HardwareProfile.VmSize:
    ja mÀÀrame vajaliku uue vÀÀrtuse:
  2. $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls" Ja nĂŒĂŒd tĂ€idame lihtsalt VM-i vĂ€rskendamise kĂ€su — Update-AzVm
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Ja nĂŒĂŒd lihtsalt kĂ€ivitame VM-i uuendamise kĂ€su — Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Veenduge, et kĂ”ik on lĂ€inud hĂ€sti — selle jaoks kĂŒsime taas meie objekti kohta teavet ja vaatame omadust $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Kui seal on nĂ€ha Get-AzVM — siis on kĂ”ik korras, masina suurus on muudetud. Saame edasi liikuda ja saavutada edu — suurendame korraga mitut VM-i, kasutades massiivi.

Aga kuidas on Azure'is VM-i kustutamisega?

Kustutamine ei ole nii lihtne ja sirgjooneline, nagu vÔiks tunduda. Tuleb kustutada ka rida ressursse, mis on seotud selle masinaga, sealhulgas:

  • KĂ€ivitamise diagnoosi salvestuskonteinerid
  • Network interfaces
  • Avalikud IP-aadressid
  • SĂŒsteemi ketas ja blob, kus hoitakse selle staatust
  • Andmekettad

SeetĂ”ttu loome funktsiooni, mille nimeks saame Remove-AzrVirtualMachine — ja see kustutab mitte ainult Azure VM-i, vaid ka kĂ”ik ĂŒlaltoodud.

Liigume tavapĂ€raselt edasi ja saame kĂ”igepealt meie objekti (VM) kĂ€su abil Get-AzVm. NĂ€itena olgu see masin WINSRV19 ressursside rĂŒhmast MyTestVMs.

Salvestame selle objekti koos kÔigi selle omadustega muutujasse $vm:

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

Kustutame kÀivitamise diagnoosi failide konteineri

Azure'is VM-i loomisel pakutakse kasutajale samuti luua kĂ€ivitamise diagnoosi konteiner, et probleemide korral oleks midagi, millele tugineda tĂ”rkeotsingu jaoks. Kuid VM-i kustutamisel jÀÀb see konteiner jĂ€tkama oma nĂŒĂŒdseks mĂ”ttetu olemasolu. Lahendame selle olukorra.

  1. Esiteks selgitame vĂ€lja, millisele salvestuskontole see konteiner kuulub — selle jaoks peame leidma omaduse storageUri meie VM-i DiagnosticsProfile seest. Selleks kasutan sellist regulaarset avaldist:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?:\/\/(.+?)\.') .groups[1].value
  2. NĂŒĂŒd peame vĂ€lja selgitama konteineri nime, ja selleks peame saama VM ID kĂ€su abil 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. SeejÀrel saame teada ressursside grupi nime, kuhu konteiner kuulub:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Ja nĂŒĂŒd on meil kĂ”ik vajalikud tingimused konteineri eemaldamiseks kĂ€suga Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Nimi' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Eemaldame VM

NĂŒĂŒd eemaldame virtuaalmasina ise, hea, et oleme juba loonud muutuja $vm vastava objekti jaoks. Noh, kĂ€ivitame kĂ€su Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Eemaldame vÔrguliidese ja avaliku IP-aadressi

Meie VM-il on ĂŒks (vĂ”i isegi mitu) vĂ”rguliidest (NICs) — et need eemaldada, liikumeme lĂ€bi omaduse NetworkInterfaces meie VM objekti pealt ja eemaldame NIC kĂ€suga Remove-AzNetworkInterface. Kui vĂ”rguliideseid on mitu, kasutame tsĂŒklit. Samuti kontrollime iga NIC jaoks omadust IpConfiguration , et nĂ€ha, kas liidese avalik IP-aadress on olemas. Kui see leitakse, eemaldame selle kĂ€suga Remove-AzPublicIpAddress.

Siin on nĂ€ide sellisest koodist, kus me tsĂŒklis vaatame lĂ€bi kĂ”ik NIC-id, eemaldame need, kontrollime, kas avalik IP on olemas. Kui on, siis vaatame omaduse PublicIpAddress, saame ID jĂ€rgi vastava ressursi nime ja eemaldame selle:


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

Eemaldame sĂŒsteemi ketta

OS ketas on blob, mille eemaldamiseks on kĂ€su olemas Remove-AzStorageBlob — kuid enne selle kĂ€ivitamist tuleb mÀÀrata nĂ”utavad vÀÀrtused selle parameetritele. Selleks on nĂ€iteks vajalik saada sisendketta nimega konteiner, mis sisaldab sĂŒsteemi ketta, ja seejĂ€rel edastada see koos vastava salvestusakna nimega sellele kĂ€sule.

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

Eemaldame sĂŒsteemi ketta staatuse blobi

Selle jaoks, nagu te tÔenÀoliselt arvate, vÔtame salvestuskonteineri, mis sisaldab seda ketast, ja, eeldades, et blob lÔpus sisaldab staatus, edastame vastavad parameetrid eemaldamise kÀsule Remove-AzStorageBlob:

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

Ja, lÔpuks eemaldame andmed sisaldavad kettad

Meie virtuaalsel masinal vĂ”isid alles jÀÀda andmeid sisaldavad kettad, mis olid sellele lisatud. Kui need ei ole vajalikud, eemaldame ka need. Esiteks analĂŒĂŒsime StorageProfile meie virtuaalsest masinast ja leiame omaduse Uri. Kui kettaid on mitu, organiseerime tsĂŒkli ĂŒle URI. Iga URI jaoks leiame vastava salvestuskonto abil Get-AzStorageAccount. SeejĂ€rel analĂŒĂŒsime salvestuse URI-d, et vĂ€lja tĂ”mmata vajalik blob'i nimi ja edastada see kustutamise kĂ€sule Remove-AzStorageBlob koos salvestuskontoga. Nii see koodis vĂ€lja nĂ€eb:

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

Ja nĂŒĂŒd "oleme jĂ”udnud Ă”nneliku lĂ”puni!" NĂŒĂŒd tuleb kĂ”ik need fragmendid kokku koguda. HĂ€id nĂ”uandeid pakkus autor Adam Bertram ja tegi selle ise. Siin on link lĂ”ppskriptile pealkirjaga Remove-AzrVirtualMachine.ps1:

→ GitHub

Loodan, et need praktilised nÀpunÀited on teile abiks, et sÀÀsta jÔudu, aega ja vahendeid Azure'i virtuaalsete masinatega töötamisel.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster