Ngaropéa sareng ngahapus Azure VMs nganggo PowerShell

Nganggo PowerShell, insinyur sareng pangurus IT suksés nga-otomatiskeun sababaraha pancén nalika damel sanés ngan ukur di tempat, tapi ogé sareng infrastruktur awan, khususna sareng Azure. Dina sababaraha kasus, ngerjakeun PowerShell langkung merenah sareng langkung gancang tibatan ngaliwat portal Azure. Hatur nuhun kana sifat cross-platformna, PowerShell tiasa dianggo dina sistem operasi naon waé.

Naha anjeun ngajalankeun Ubuntu, Red Hat, atanapi Windows, PowerShell tiasa ngabantosan anjeun ngadalikeun sumber awan anjeun. Ngagunakeun modul Azure PowerShell, contona, anjeun tiasa nyetél sagala sipat mesin virtual.

Dina tulisan ieu, urang bakal ningali kumaha anjeun tiasa nganggo PowerShell pikeun ngarobih ukuran VM dina awan Azure, ogé ngahapus VM sareng objék anu aya hubunganana.

Ngaropéa sareng ngahapus Azure VMs nganggo PowerShell

Penting! Tong hilap ngusap leungeun anjeun nganggo sanitizer pikeun nyiapkeun damel:

  • Anjeun bakal peryogi modul a Modul Azure PowerShell - tiasa diunduh tina Galeri PowerShell nganggo paréntah Install-Module Az.
  • Anjeun kedah ngabuktoskeun kaaslianana dina awan Azure dimana mesin virtual dijalankeun ku ngajalankeun paréntah Connect-AzAccount.

Mimiti, hayu urang ngadamel skrip anu bakal ngarobih ukuran Azure VM. Hayu urang muka VS Code sareng simpen skrip PowerShell énggal anu disebut Ngarobah ukuran-AzVirtualMachine.ps1 - urang bakal nambahan potongan kode ka dinya salaku conto progresses.

Kami nyuhunkeun ukuran VM anu sayogi

Sateuacan anjeun ngarobih ukuran VM, anjeun kedah terang naon ukuran anu ditampi pikeun mesin virtual dina awan Azure. Jang ngalampahkeun ieu anjeun kudu ngajalankeun paréntah Get-AzVMSize.

Janten pikeun mesin virtual devvm01 ti grup sumberdaya dev Kami nyuhunkeun sadaya ukuran anu tiasa ditampi:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Dina masalah nyata, tangtosna, tinimbang ResourceGroupName=dev и VMName = devvm01 anjeun bakal nangtukeun nilai anjeun sorangan pikeun parameter ieu.)

Paréntah bakal uih deui sapertos kieu:

Ngaropéa sareng ngahapus Azure VMs nganggo PowerShell

Ieu kabeh pilihan ukuran mungkin nu bisa diatur pikeun mesin virtual dibikeun.

Hayu urang ngarobah ukuran mobil

Contona, urang bakal ngarobah ukuran ka ukuran anyar Standar_B1ls - anjeunna di tempat munggaran dina daptar di luhur. (Dina aplikasi kahirupan nyata, tangtosna, anjeun milih ukuran naon waé anu anjeun peryogikeun.)

  1. Mimiti ngagunakeun paréntah Get-AzVM urang meunang informasi ngeunaan objék urang (mesin virtual) ku nyimpen eta dina variabel $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Teras we nyandak harta tina obyék ieu .HardwareProfile.VmSize tur nyetel nilai anyar nu dipikahoyong:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Sareng ayeuna urang ngan saukur ngaéksekusi paréntah update VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Urang pastikeun yén sagalana indit ogé - pikeun ngalakukeun ieu, urang menta deui informasi ngeunaan obyek urang jeung kasampak di harta $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Lamun urang tingali aya Standar_B1ls - hartina sagalana aya dina urutan, ukuran mobil geus robah. Anjeun tiasa langkung jauh sareng ngawangun kasuksésan anjeun ku cara ngarobah ukuran sababaraha VM sakaligus nganggo susunan.

Kumaha upami ngahapus VM di Azure?

Kalayan ngahapus, henteu sadayana saderhana sareng lugas sapertos sigana. Barina ogé, anjeun kedah ngahapus sababaraha sumber anu aya hubunganana sareng mesin ieu, kalebet:

  • Wadah panyimpen diagnostik boot
  • Sambungan jaringan
  • Alamat IP umum
  • Sistem disk sareng blob dimana statusna disimpen
  • Data disk

Kituna, urang bakal nyieun hiji fungsi jeung nelepon deui Remove-AzrVirtualMachine - sarta eta bakal ngahapus teu ukur Azure VM, tapi ogé sakabéh di luhur.

Urang buka jalan baku sarta mimiti meunang obyék urang (VM) ngagunakeun paréntah Get-AzVm. Contona, hayu eta jadi mobil WINSRV19 ti grup sumberdaya MyTestVMs.

Hayu urang simpen obyék ieu sareng sadaya pasipatanana kana variabel $vm:

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

Nyoplokkeun wadahna sareng file diagnostik boot

Nalika nyieun VM di Azure, pamaké ogé dipenta pikeun nyieun hiji wadah pikeun nyimpen diagnostics boot (wadahna diagnostics boot), ku kituna lamun aya masalah sareng booting, aya hal pikeun ngaktipkeun pikeun ngungkulan. Nanging, nalika VM dipupus, wadah ieu ditinggalkeun pikeun neraskeun ayana anu teu aya tujuanana. Hayu urang ngalereskeun kaayaan ieu.

  1. Kahiji, hayu urang manggihan nu akun gudang wadahna milik - pikeun ieu urang kudu neangan harta storageUri dina peujit obyék DiagnosticsProfile VM kami. Pikeun ieu kuring nganggo ekspresi biasa ieu:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Ayeuna anjeun kedah milarian nami wadahna, sareng pikeun ieu anjeun kedah kéngingkeun ID VM nganggo paréntah 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. Salajengna, urang nampi nami grup sumberdaya dimana wadahna aya:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Sareng ayeuna urang gaduh sadayana anu urang peryogikeun pikeun mupus wadahna nganggo paréntah Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Ngahapus VM

Ayeuna hayu urang ngahapus mesin virtual sorangan, sabab kami parantos nyiptakeun variabel $vm pikeun objék pakait. Nya, hayu urang ngajalankeun paréntah Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Nyoplokkeun antarmuka jaringan sareng alamat IP umum

VM kami masih gaduh hiji (atawa malah sababaraha) interfaces jaringan (NICs) - pikeun miceun aranjeunna salaku teu perlu, hayu urang ngaliwatan harta. NetworkInterfaces obyék VM kami sareng ngahapus NIC kalayan paréntah Remove-AzNetworkInterface. Bisi aya leuwih ti hiji panganteur jaringan, urang ngagunakeun loop a. Dina waktu nu sarua, pikeun tiap NIC kami bakal pariksa harta IpConfiguration pikeun nangtukeun naha panganteur ngabogaan alamat IP umum. Upami aya anu kapendak, kami bakal ngahapus ku paréntah Remove-AzPublicIpAddress.

Ieu mangrupikeun conto kode sapertos kitu, dimana urang ningali sadaya NIC dina loop, ngahapus, sareng pariksa upami aya IP umum. Lamun aya, teras parse harta PublicIpAddress, panggihan nami sumber anu saluyu ku ID sareng pupus:


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

Nyoplokkeun disk sistem

Disk OS mangrupikeun gumpalan, anu aya paréntah pikeun ngahapusna Remove-AzStorageBlob - tapi sateuacan ngalaksanakeunana, anjeun kedah nyetél nilai anu diperyogikeun pikeun parameterna. Jang ngalampahkeun ieu, khususna, anjeun kedah nampi nami wadah panyimpen anu ngandung disk sistem, teras lebetkeun kana paréntah ieu sareng akun panyimpenan anu saluyu.

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

Nyoplokkeun System Disk Status Blob

Jang ngalampahkeun ieu, sakumaha sigana anjeun geus ditebak, urang nyandak wadahna gudang dimana disk ieu disimpen, sarta, implying yén gumpalan dina tungtungna ngandung. status, lulus parameter saluyu jeung paréntah ngahapus Remove-AzStorageBlob:

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

Sarta pamustunganana, urang nyabut disk data

VM kami masih tiasa gaduh disk sareng data anu napel na. Upami aranjeunna henteu diperyogikeun, kami ogé bakal ngahapus aranjeunna. Hayu urang ngawangkong heula StorageProfile VM kami sarta manggihan harta Uri. Lamun aya sababaraha disk, urang ngatur hiji siklus nurutkeun URI. Pikeun unggal URI, urang bakal mendakan akun panyimpenan anu cocog nganggo Get-AzStorageAccount. Teras parse URI gudang pikeun nimba nami blob anu dipikahoyong sareng pas kana paréntah ngahapus Remove-AzStorageBlob bareng jeung akun gudang. Ieu kumaha éta bakal katingali dina kode:

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

Sareng ayeuna "urang parantos ngahontal tungtung anu bahagia!" Ayeuna urang kudu ngumpul sakabeh hiji tina sakabéh fragmen ieu. Panulis anu saé Adam Bertram pendak sareng pangguna satengahna sareng ngalakukeunana nyalira. Di handap ieu tumbu ka naskah final disebut Cabut-AzrVirtualMachine.ps1:

GitHub

Abdi ngarepkeun anjeun mendakan tip praktis ieu ngabantosan anjeun ngahémat usaha, waktos sareng artos nalika damel sareng Azure VMs.

sumber: www.habr.com

Tambahkeun komentar