Bl-użu ta’ PowerShell, l-inġiniera u l-amministraturi tal-IT awtomat b’suċċess diversi kompiti meta jaħdmu mhux biss mal-post, iżda wkoll mal-infrastrutturi tal-cloud, b’mod partikolari ma’ Azure. F'xi każijiet, ix-xogħol permezz ta' PowerShell huwa ħafna aktar konvenjenti u aktar mgħaġġel milli jaħdem permezz tal-portal Azure. Grazzi għan-natura cross-platform tiegħu, PowerShell jista 'jintuża fuq kwalunkwe sistema operattiva.
Kemm jekk qed tħaddem Ubuntu, Red Hat, jew Windows, PowerShell jista' jgħinek tikkontrolla r-riżorsi tal-cloud tiegħek. Bl-użu tal-modulu
F'dan l-artikolu, aħna ser inħarsu lejn kif tista 'tuża PowerShell biex tibdel id-daqs ta' VM fil-sħaba ta 'Azure, kif ukoll tħassar VM u l-oġġetti assoċjati tagħha.
Importanti! Tinsiex timsaħ idejk b'sanitizer biex tipprepara għax-xogħol:
- Ikollok bżonn modulu Modulu Azure PowerShell - jista 'jitniżżel mill-Gallerija PowerShell bil-kmand
Install-Module Az
. - Ikollok bżonn tawtentika fil-sħaba Azure fejn il-magna virtwali tkun qed taħdem billi tħaddem il-kmand
Connect-AzAccount
.
L-ewwel, ejja noħolqu skript li se jbiddel id-daqs ta 'Azure VM. Ejja niftħu VS Code u nissejvjaw script PowerShell ġdid imsejjaħ Resize-AzVirtualMachine.ps1 — se nżidu biċċiet ta' kodiċi miegħu hekk kif l-eżempju javvanza.
Aħna nitolbu d-daqsijiet tal-VM disponibbli
Qabel ma tibdel id-daqs tal-VM, trid issir taf x'inhuma d-daqsijiet aċċettabbli għall-magni virtwali fil-sħaba Azure. Biex tagħmel dan għandek bżonn tmexxi l-kmand Get-AzVMSize
.
Allura għall-magna virtwali devvm01 mill-grupp tar-riżorsi dev Aħna nitolbu d-daqsijiet aċċettabbli kollha possibbli:
Get-AzVMSize -ResourceGroupName dev -VMName devvm01
(Fi problemi reali, ovvjament, minflok ResourceGroupName=dev и VMName=devvm01 int se tispeċifika l-valuri tiegħek għal dawn il-parametri.)
Il-kmand se jirritorna xi ħaġa bħal din:
Dawn huma kollha għażliet ta 'daqs possibbli li jistgħu jiġu stabbiliti għal magna virtwali partikolari.
Ejja nbiddlu d-daqs tal-karozza
Pereżempju, aħna se nbiddlu d-daqs għal daqs ġdid Standard_B1ls - huwa fl-ewwel post fil-lista ta' hawn fuq. (F'applikazzjonijiet tal-ħajja reali, ovvjament, tagħżel kwalunkwe daqs li għandek bżonn.)
- L-ewwel tuża l-kmand
Get-AzVM
nikbru informazzjoni dwar l-oġġett tagħna (magna virtwali) billi naħżnuha f'varjabbli$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- Imbagħad nieħdu l-proprjetà minn dan l-oġġett
.HardwareProfile.VmSize
u ssettja l-valur ġdid mixtieq:$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- U issa aħna sempliċement tesegwixxi l-kmand tal-aġġornament tal-VM -
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- Aħna niżguraw li kollox mar tajjeb - biex nagħmlu dan, nerġgħu nitolbu informazzjoni dwar l-oġġett tagħna u nħarsu lejn il-proprjetà
$virtualMachine.HardwareProfile
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
Jekk naraw hemm Standard_B1ls - dan ifisser li kollox huwa fl-ordni, id-daqs tal-karozza nbidel. Tista 'tmur lil hinn u tibni fuq is-suċċess tiegħek billi tibni d-daqs ta' diversi VMs f'daqqa billi tuża firxa.
Xi ngħidu dwar it-tħassir ta' VM f'Azure?
Bit-tħassir, mhux kollox huwa sempliċi u sempliċi kemm jista' jidher. Wara kollox, huwa meħtieġ li jitneħħew numru ta 'riżorsi assoċjati ma' din il-magna, inklużi:
- Kontenituri tal-ħażna tad-dijanjostiċi tal-boot
- Interfaces tan-netwerk
- Indirizzi IP pubbliċi
- Diska tas-sistema u blob fejn jinħażen l-istatus tagħha
- Diski tad-dejta
Għalhekk, aħna se noħolqu funzjoni u nsejħulha Remove-AzrVirtualMachine
- u se tħassar mhux biss Azure VM, iżda wkoll dak kollu ta 'hawn fuq.
Immorru l-mod standard u l-ewwel nikseb l-oġġett tagħna (VM) billi tuża l-kmand Get-AzVm
. Per eżempju, ħalliha tkun karozza WINSRV19 mill-grupp tar-riżorsi MyTestVMs.
Ejja nsalvaw dan l-oġġett flimkien mal-proprjetajiet kollha tiegħu f'varjabbli $vm
:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs
It-tneħħija tal-kontenitur bil-fajls dijanjostiċi tal-boot
Meta toħloq VM f'Azure, l-utent jintalab ukoll joħloq kontenitur għall-ħażna tad-dijanjostiċi tal-boot (kontenitur tad-dijanjosi tal-boot), sabiex jekk ikun hemm problemi bl-ibbutjar, ikun hemm xi ħaġa li jdur għalih biex issolvi l-problemi. Madankollu, meta l-VM titħassar, dan il-kontenitur jitħalla jkompli l-eżistenza tiegħu issa bla skop. Ejja nirranġaw din is-sitwazzjoni.
- L-ewwel, ejja nsiru nafu għal liema kont tal-ħażna jappartjeni dan il-kontenitur - għal dan irridu nsibu l-proprjetà
storageUri
fl-imsaren tal-oġġettDiagnosticsProfile
VM tagħna. Għal dan jien nuża din l-espressjoni regolari:$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
- Issa trid issir taf l-isem tal-kontenitur, u għal dan għandek bżonn tikseb l-ID VM billi tuża l-kmand
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)
- Sussegwentement, inġibu l-isem tal-grupp tar-riżorsi li għalih jappartjeni l-kontenitur:
$diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
- U issa għandna dak kollu li għandna bżonn biex inħassru l-kontenitur bil-kmand
Remove-AzStorageContainer
:$saParams = @{ 'ResourceGroupName' = $diagSaRg 'Name' = $diagSa } Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force
Tneħħi l-VM
Issa ejja nħassru l-magna virtwali nnifisha, peress li diġà ħloqna varjabbli $vm
għall-oġġett korrispondenti. Ukoll, ejja tmexxi l-kmand Remove-AzVm
:
$null = $vm | Remove-AzVM -Force
Tneħħi l-interface tan-netwerk u l-indirizz IP pubbliku
Il-VM tagħna għad għandha waħda (jew saħansitra diversi) interfaces tan-netwerk (NICs) - biex tneħħihom bħala mhux meħtieġa, ejja ngħaddu mill-proprjetà NetworkInterfaces
l-oġġett VM tagħna u ħassar in-NIC bil-kmand Remove-AzNetworkInterface
. F'każ li jkun hemm aktar minn interface tan-netwerk wieħed, nużaw loop. Fl-istess ħin, għal kull NIC aħna niċċekkjaw il-proprjetà IpConfiguration
biex tiddetermina jekk l-interface għandhiex indirizz IP pubbliku. Jekk jinstab wieħed, inneħħuha bil-kmand Remove-AzPublicIpAddress
.
Hawn eżempju ta 'kodiċi bħal dan biss, fejn inħarsu mill-NICs kollha f'linja, inħassruhom, u niċċekkjaw jekk hemmx IP pubbliku. Jekk ikun hemm, imbagħad parse l-proprjetà PublicIpAddress
, sib l-isem tar-riżors korrispondenti bl-ID u ħassarha:
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
}
}
}
Tneħħi d-disk tas-sistema
Id-diska tal-OS hija blob, li għaliha hemm kmand biex tħassarha Remove-AzStorageBlob
- iżda qabel ma tesegwixxi, ser ikollok bżonn tissettja l-valuri meħtieġa għall-parametri tagħha. Biex tagħmel dan, b'mod partikolari, għandek bżonn tikseb l-isem tal-kontenitur tal-ħażna li fih id-diska tas-sistema, u mbagħad tgħaddih lil dan il-kmand flimkien mal-kont tal-ħażna korrispondenti.
$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]
Tneħħi l-Blob tal-Istat tad-Disk tas-Sistema
Biex tagħmel dan, kif probabilment diġà qtajt, nieħdu l-kontenitur tal-ħażna li fih hija maħżuna din id-diska, u, li timplika li l-blob fl-aħħar fih status
, jgħaddi l-parametri korrispondenti għall-kmand tat-tħassir Remove-AzStorageBlob
:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob
U fl-aħħar nett, inneħħu d-diski tad-dejta
Il-VM tagħna xorta jista 'jkollu diski b'dejta li kienu mehmuża magħha. Jekk ma jkunux meħtieġa, aħna nħassruhom ukoll. Ejja parseha l-ewwel StorageProfile
VM tagħna u ssib il-proprjetà Uri
. Jekk hemm diversi diski, norganizzaw ċiklu skond URI
. Għal kull URI, insibu l-kont tal-ħażna korrispondenti bl-użu Get-AzStorageAccount
. Imbagħad analizza l-URI tal-ħażna biex tiġbed l-isem tal-blob mixtieq u għaddih lill-kmand tat-tħassir Remove-AzStorageBlob
flimkien ma 'kont tal-ħażna. Dan huwa kif jidher fil-kodiċi:
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]
}
}
U issa "ilħaqna t-tmiem kuntenti!" Issa għandna bżonn niġbru sħaħ wieħed minn dawn il-frammenti kollha. L-awtur tip Adam Bertram iltaqa' mal-utenti nofs triq u għamel dan hu stess. Hawnhekk hawn link għall-iskrittura finali msejħa Neħħi-AzrVirtualMachine.ps1:
→
Nispera li ssib dawn il-pariri prattiċi ta’ għajnuna biex tiffranka l-isforz, il-ħin u l-flus meta taħdem ma’ Azure VMs.
Sors: www.habr.com