Ho fetola le ho hlakola li-VM tsa Azure u sebelisa PowerShell

Ho sebelisa PowerShell, baenjiniere le batsamaisi ba IT ka katleho ba iketsetsa mesebetsi e fapaneng ha ba sebetsa eseng feela ka meaho, empa hape le ka lisebelisoa tsa maru, haholo-holo ka Azure. Maemong a mang, ho sebetsa ka PowerShell ho bonolo ebile ho potlakile ho feta ho sebetsa ka portal ea Azure. Ka lebaka la sebopeho sa eona sa sethala, PowerShell e ka sebelisoa ho sistimi efe kapa efe ea ts'ebetso.

Hore na o sebelisa Ubuntu, Red Hat, kapa Windows, PowerShell e ka u thusa ho laola lisebelisoa tsa hau tsa maru. Ho sebelisa module Azure PowerShell, mohlala, o ka beha thepa leha e le efe ea mechine ea sebele.

Sehloohong sena, re tla sheba hore na u ka sebelisa PowerShell joang ho fetola boholo ba VM lerung la Azure, hammoho le ho hlakola VM le lintho tse amanang le eona.

Ho fetola le ho hlakola li-VM tsa Azure u sebelisa PowerShell

Bohlokoa! Se ke oa lebala ho hlakola matsoho a hau ka sanitizer ho itokisetsa mosebetsi:

  • O tla hloka mojule Azure PowerShell module - e ka khoasolloa ho PowerShell Gallery ka taelo Install-Module Az.
  • U hloka ho netefatsa ka leru la Azure moo mochini o sebetsang o sebetsang ka ho tsamaisa taelo Connect-AzAccount.

Taba ea pele, ha re theheng sengoloa se tla fetola boholo ba VM ea Azure. Ha re bule VS Code mme re boloke mongolo o mocha oa PowerShell o bitsoang Resize-AzVirtualMachine.ps1 - re tla eketsa likotoana tsa khoutu ho eona ha mohlala o ntse o tsoela pele.

Re kopa boholo bo fumanehang ba VM

Pele o fetola boholo ba VM, o hloka ho fumana hore na boholo bo amohelehang ke bofe bakeng sa mechini e fumanehang ka har'a leru la Azure. Ho etsa sena o hloka ho tsamaisa taelo Get-AzVMSize.

Kahoo bakeng sa mochini o hlakileng devvm01 ho tsoa sehlopheng sa lisebelisoa senatla Re kopa boholo bohle bo amohelehang:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Mathateng a nnete, ehlile, ho fapana le ResourceGroupName=dev и VMName=devvm01 o tla hlakisa boleng ba hau bakeng sa liparamente tsena.)

Taelo e tla khutlisa ntho e kang ena:

Ho fetola le ho hlakola li-VM tsa Azure u sebelisa PowerShell

Tsena ke likhetho tsa boholo tse ka bang teng tse ka hlophisoang mochini o fanoeng oa nnete.

Ha re fetole boholo ba koloi

Ka mohlala, re tla fetola boholo ho saese e ncha Standard_B1ls - o maemong a pele lethathamong le ka holimo. (Lits'ebetsong tsa nnete, ehlile, u khetha boholo bofe kapa bofe boo u bo hlokang.)

  1. Qala ka ho sebelisa taelo Get-AzVM re fumana tlhahisoleseding mabapi le ntho ea rona (virtual machine) ka ho e boloka ka ho feto-fetoha $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Ebe re nka thepa nthong ena .HardwareProfile.VmSize ebe u beha boleng bo bocha boo u bo batlang:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. 'Me joale re etsa feela taelo ea ntlafatso ea VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Re etsa bonnete ba hore ntho e 'ngoe le e' ngoe e tsamaile hantle - ho etsa sena, re boetse re kopa tlhahisoleseding mabapi le ntho ea rona le ho sheba thepa $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Haeba re bona moo Standard_B1ls - ho bolela hore ntho e 'ngoe le e' ngoe e hlophisitsoe, boholo ba koloi bo fetotsoe. U ka ea hole le ho aha katlehong ea hau ka ho fetola boholo ba li-VM tse 'maloa ka nako e le ngoe u sebelisa lethathamo.

Ho thoe'ng ka ho hlakola VM ho Azure?

Ka ho hlakola, ha se ntho e 'ngoe le e' ngoe e bonolo le e otlolohileng joalokaha e ka bonahala. Ntle le moo, hoa hlokahala ho tlosa lisebelisoa tse 'maloa tse amanang le mochini ona, ho kenyelletsa:

  • Boot diagnostics polokelo lijana
  • Marang-rang a marang-rang
  • Liaterese tsa IP tsa sechaba
  • Sistimi ea disk le blob moo boemo ba eona bo bolokiloeng teng
  • Li-disks tsa data

Ka hona, re tla theha ts'ebetso ebe re e bitsa Remove-AzrVirtualMachine - mme e ke ke ea hlakola feela Azure VM, empa le tsohle tse ka holimo.

Re tsamaea ka tsela e tloaelehileng 'me pele re fumana ntho ea rona (VM) re sebelisa taelo Get-AzVm. Ka mohlala, e ke e be koloi WINSRV19 ho tsoa sehlopheng sa lisebelisoa MyTestVMs.

Ha re bolokeng ntho ena hammoho le thepa eohle ea eona hore e be ntho e feto-fetohang $vm:

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

Ho tlosa setshelo ka lifaele tsa tlhahlobo ea boot

Ha u theha VM ho Azure, mosebelisi o boetse o kopuoa ho etsa setshelo bakeng sa ho boloka tlhahlobo ea boot (setshelo sa tlhahlobo ea boot), e le hore haeba ho na le mathata ka ho qalisa, ho na le seo u ka retelehelang ho sona bakeng sa ho rarolla mathata. Leha ho le joalo, ha VM e hlakotsoe, setshelo sena se tloheloa hore se tsoele pele ho ba teng ha hona joale ho se nang morero. Ha re lokiseng boemo bona.

  1. Taba ea pele, a re fumane hore na sets'oants'o sena ke sa akhaonteng efe ea polokelo - bakeng sa sena re hloka ho fumana thepa storageUri mala a ntho DiagnosticsProfile VM ea rona. Bakeng sa sena ke sebelisa polelo ena e tloaelehileng:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Joale o hloka ho fumana lebitso la setshelo, mme bakeng sa sena o hloka ho fumana ID ea VM o sebelisa taelo 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. E latelang, re fumana lebitso la sehlopha sa lisebelisoa seo setshelo e leng sa sona:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. 'Me joale re na le sohle seo re se hlokang ho hlakola setshelo ka taelo Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Ho tlosa VM

Joale ha re hlakole mochini o sebetsang ka bo oona, kaha re se re thehile phetoho $vm bakeng sa ntho e tsamaellanang le yona. Hantle, ha re tsamaiseng taelo Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Ho tlosa marang-rang le aterese ea IP ea sechaba

VM ea rona e ntse e na le sebaka se le seng (kapa tse 'maloa) tsa marang-rang (NICs) - ho li tlosa joalo ka ha ho sa hlokahale, ha re feteleng thepa. NetworkInterfaces ntho ea rona ea VM ebe u hlakola NIC ka taelo Remove-AzNetworkInterface. Haeba ho na le marang-rang a fetang bonngoe, re sebelisa loop. Ka nako e ts'oanang, bakeng sa NIC ka 'ngoe re tla hlahloba thepa IpConfiguration ho fumana hore na sebopeho se na le aterese ea IP ea sechaba. Haeba e fumanoa, re tla e tlosa ka taelo Remove-AzPublicIpAddress.

Mona ke mohlala oa khoutu e joalo, moo re shebang li-NIC tsohle ka loop, re li tlose, 'me re hlahlobe hore na ho na le IP ea sechaba. Haeba ho na le, joale hlahloba thepa PublicIpAddress, fumana lebitso la mohlodi o tsamaisanang le ID mme o le tlose:


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

Ho tlosa disk ea tsamaiso

The OS disk ke blob, eo ho eona ho nang le taelo ea ho e hlakola Remove-AzStorageBlob - empa pele o e phetha, o tla hloka ho beha litekanyetso tse hlokahalang bakeng sa liparamente tsa eona. Ho etsa sena, haholo-holo, o hloka ho fumana lebitso la setshelo sa polokelo se nang le disk ea tsamaiso, ebe o e fetisetsa ho taelo ena hammoho le akhaonto e lumellanang ea polokelo.

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

Ho tlosa Blob ea Boemo ba Disk

Ho etsa sena, joalo ka ha u se u ntse u nahanne, re nka setshelo sa polokelo moo disk ena e bolokiloeng teng, 'me, ho bolelang hore blob qetellong e na le. status, fetisa litekanyo tse lumellanang le taelo ea ho hlakola Remove-AzStorageBlob:

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

'Me qetellong, re tlosa li-disk tsa data

VM ea rona e ntse e ka ba le li-disk tse nang le data tse neng li hokeletsoe ho eona. Haeba li sa hlokahale, le rona re tla li hlakola. Ha re e hlalose pele StorageProfile VM ea rona mme re fumane thepa Uri. Haeba ho na le li-disk tse 'maloa, re hlophisa potoloho ho ea ka URI. Bakeng sa URI e 'ngoe le e' ngoe, re tla fumana ak'haonte e lumellanang ea polokelo e sebelisoa Get-AzStorageAccount. Ebe u hlalosa URI ea polokelo ho ntša lebitso le lakatsehang la blob ebe o le fetisetsa ho taelo ea ho hlakola Remove-AzStorageBlob hammoho le akhaonto ea polokelo. Sena ke kamoo e neng e tla shebahala kateng ka khoutu:

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

'Me joale "re fihlile pheletsong e monate!" Hona joale re hloka ho kopanya karolo e le 'ngoe ho tloha likhechana tsena kaofela. Sengoli se mosa Adam Bertram o ile a kopana le basebelisi halofo mme a iketsetsa eona. Mona ke sehokelo sa mongolo oa ho qetela se bitsoang Tlosa-AzrVirtualMachine.ps1:

GitHub

Ke tšepa hore u tla fumana malebela ana a sebetsang a thusa ho u bolokela boiteko, nako le chelete ha u sebetsa le li-VM tsa Azure.

Source: www.habr.com

Eketsa ka tlhaloso