Gan ddefnyddio PowerShell, mae peirianwyr a gweinyddwyr TG yn awtomeiddio tasgau amrywiol yn llwyddiannus wrth weithio nid yn unig gyda'r safle, ond hefyd gyda seilwaith cwmwl, yn enwedig gydag Azure. Mewn rhai achosion, mae gweithio trwy PowerShell yn llawer mwy cyfleus a chyflymach na gweithio trwy borth Azure. Diolch i'w natur draws-lwyfan, gellir defnyddio PowerShell ar unrhyw system weithredu.
P'un a ydych chi'n rhedeg Ubuntu, Red Hat, neu Windows, gall PowerShell eich helpu i reoli'ch adnoddau cwmwl. Defnyddio'r modiwl
Yn yr erthygl hon, byddwn yn edrych ar sut y gallwch ddefnyddio PowerShell i newid maint VM yn y cwmwl Azure, yn ogystal â dileu VM a'i wrthrychau cysylltiedig.
Pwysig! Peidiwch ag anghofio sychu'ch dwylo gyda glanweithydd i baratoi ar gyfer gwaith:
- Bydd angen modiwl arnoch Modiwl Azure PowerShell - gellir ei lawrlwytho o PowerShell Gallery gyda'r gorchymyn
Install-Module Az
. - Mae angen i chi ddilysu yn y cwmwl Azure lle mae'r peiriant rhithwir yn rhedeg trwy redeg y gorchymyn
Connect-AzAccount
.
Yn gyntaf, gadewch i ni greu sgript a fydd yn newid maint Azure VM. Gadewch i ni agor VS Code ac arbed sgript PowerShell newydd o'r enw Newid maint-AzVirtualMachine.ps1 — byddwn yn ychwanegu darnau o god ato wrth i'r enghraifft fynd rhagddi.
Gofynnwn am y meintiau VM sydd ar gael
Cyn i chi newid maint y VM, mae angen i chi ddarganfod beth yw'r meintiau derbyniol ar gyfer peiriannau rhithwir yn y cwmwl Azure. I wneud hyn mae angen i chi redeg y gorchymyn Get-AzVMSize
.
Felly ar gyfer y peiriant rhithwir devvm01 o'r grŵp adnoddau dev Rydym yn gofyn am bob maint derbyniol posibl:
Get-AzVMSize -ResourceGroupName dev -VMName devvm01
(Mewn problemau go iawn, wrth gwrs, yn lle ResourceGroupName=dev и VMName=devvm01 byddwch yn nodi eich gwerthoedd eich hun ar gyfer y paramedrau hyn.)
Bydd y gorchymyn yn dychwelyd rhywbeth fel hyn:
Mae'r rhain i gyd yn opsiynau maint posibl y gellir eu gosod ar gyfer peiriant rhithwir penodol.
Gadewch i ni newid maint y car
Er enghraifft, byddwn yn newid maint i faint newydd Safon_B1ls - ef sydd yn y lle cyntaf ar y rhestr uchod. (Mewn cymwysiadau bywyd go iawn, wrth gwrs, rydych chi'n dewis pa bynnag faint sydd ei angen arnoch chi.)
- Yn gyntaf gan ddefnyddio'r gorchymyn
Get-AzVM
rydym yn cael gwybodaeth am ein gwrthrych (peiriant rhithwir) trwy ei storio mewn newidyn$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- Yna cymerwn yr eiddo o'r gwrthrych hwn
.HardwareProfile.VmSize
a gosodwch y gwerth newydd a ddymunir:$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- Ac yn awr rydym yn syml yn gweithredu'r gorchymyn diweddaru VM -
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- Rydym yn gwneud yn siŵr bod popeth yn mynd yn dda - i wneud hyn, rydym eto yn gofyn am wybodaeth am ein gwrthrych ac yn edrych ar yr eiddo
$virtualMachine.HardwareProfile
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
Os gwelwn yno Safon_B1ls - mae hynny'n golygu bod popeth mewn trefn, mae maint y car wedi'i newid. Gallwch fynd ymhellach ac adeiladu ar eich llwyddiant trwy newid maint sawl VM ar unwaith gan ddefnyddio arae.
Beth am ddileu VM yn Azure?
Gyda dileu, nid yw popeth mor syml a syml ag y gallai ymddangos. Wedi'r cyfan, mae angen dileu nifer o adnoddau sy'n gysylltiedig â'r peiriant hwn, gan gynnwys:
- Cist cynwysyddion storio diagnosteg
- Rhyngwynebau rhwydwaith
- Cyfeiriadau IP cyhoeddus
- Disg system a blob lle mae ei statws yn cael ei storio
- Disgiau data
Felly, byddwn yn creu swyddogaeth ac yn ei galw Remove-AzrVirtualMachine
- a bydd yn dileu nid yn unig Azure VM, ond hefyd pob un o'r uchod.
Rydyn ni'n mynd y ffordd safonol ac yn gyntaf yn cael ein gwrthrych (VM) gan ddefnyddio'r gorchymyn Get-AzVm
. Er enghraifft, gadewch iddo fod yn gar WINSRV19 o'r grŵp adnoddau MyTestVMs.
Gadewch i ni gadw'r gwrthrych hwn ynghyd â'i holl briodweddau yn newidyn $vm
:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs
Tynnu'r cynhwysydd gyda ffeiliau diagnostig cychwyn
Wrth greu VM yn Azure, gofynnir i'r defnyddiwr hefyd greu cynhwysydd ar gyfer storio diagnosteg cist (cynhwysydd diagnosteg cist), fel bod rhywbeth i droi ato ar gyfer datrys problemau os oes problemau wrth gychwyn. Fodd bynnag, pan fydd y VM yn cael ei ddileu, gadewir y cynhwysydd hwn i barhau â'i fodolaeth bellach yn ddibwrpas. Gadewch i ni drwsio'r sefyllfa hon.
- Yn gyntaf, gadewch i ni ddarganfod i ba gyfrif storio y mae'r cynhwysydd hwn yn perthyn - ar gyfer hyn mae angen i ni ddod o hyd i'r eiddo
storageUri
yn ymysgaroedd y gwrthddrychDiagnosticsProfile
ein VM. Ar gyfer hyn rwy'n defnyddio'r ymadrodd rheolaidd hwn:$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
- Nawr mae angen i chi ddarganfod enw'r cynhwysydd, ac ar gyfer hyn mae angen i chi gael yr ID VM gan ddefnyddio'r gorchymyn
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)
- Nesaf, cawn enw'r grŵp adnoddau y mae'r cynhwysydd yn perthyn iddo:
$diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
- Ac yn awr mae gennym bopeth sydd ei angen arnom i ddileu'r cynhwysydd gyda'r gorchymyn
Remove-AzStorageContainer
:$saParams = @{ 'ResourceGroupName' = $diagSaRg 'Name' = $diagSa } Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force
Tynnu'r VM
Nawr, gadewch i ni ddileu'r peiriant rhithwir ei hun, gan ein bod eisoes wedi creu newidyn $vm
ar gyfer y gwrthrych cyfatebol. Wel, gadewch i ni redeg y gorchymyn Remove-AzVm
:
$null = $vm | Remove-AzVM -Force
Cael gwared ar y rhyngwyneb rhwydwaith a'r cyfeiriad IP cyhoeddus
Mae gan ein VM un (neu hyd yn oed sawl) rhyngwyneb rhwydwaith (NICs) o hyd - i gael gwared arnynt fel rhai diangen, gadewch i ni fynd drwy'r eiddo NetworkInterfaces
ein gwrthrych VM a dileu'r NIC gyda'r gorchymyn Remove-AzNetworkInterface
. Rhag ofn bod mwy nag un rhyngwyneb rhwydwaith, rydym yn defnyddio dolen. Ar yr un pryd, ar gyfer pob CYG byddwn yn gwirio'r eiddo IpConfiguration
i benderfynu a oes gan y rhyngwyneb gyfeiriad IP cyhoeddus. Os canfyddir un, byddwn yn ei ddileu gyda'r gorchymyn Remove-AzPublicIpAddress
.
Dyma enghraifft o god o'r fath yn unig, lle rydym yn edrych trwy'r holl CYG mewn dolen, yn eu dileu, ac yn gwirio a oes IP cyhoeddus. Os oes, dosranwch yr eiddo PublicIpAddress
, dewch o hyd i enw'r adnodd cyfatebol trwy ID a'i ddileu:
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
}
}
}
Tynnu disg y system
Mae'r ddisg OS yn blob, y mae gorchymyn i'w ddileu ar ei gyfer Remove-AzStorageBlob
- ond cyn ei weithredu, bydd angen i chi osod y gwerthoedd gofynnol ar gyfer ei baramedrau. I wneud hyn, yn arbennig, mae angen i chi gael enw'r cynhwysydd storio sy'n cynnwys disg y system, ac yna ei drosglwyddo i'r gorchymyn hwn ynghyd â'r cyfrif storio cyfatebol.
$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]
Tynnu'r Blob Statws Disg System
I wneud hyn, fel y mae'n debyg eich bod eisoes wedi dyfalu, rydym yn cymryd y cynhwysydd storio y mae'r ddisg hon yn cael ei storio ynddo, ac, gan awgrymu bod y blob ar y diwedd yn cynnwys status
, pasiwch y paramedrau cyfatebol i'r gorchymyn dileu Remove-AzStorageBlob
:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob
Ac yn olaf, rydym yn tynnu'r disgiau data
Gallai ein VM ddal i gael disgiau gyda data a oedd ynghlwm wrtho. Os nad oes eu hangen, byddwn yn eu dileu hefyd. Gadewch i ni ei ddosrannu yn gyntaf StorageProfile
ein VM a dod o hyd i'r eiddo Uri
. Os oes nifer o ddisgiau, rydym yn trefnu cylch yn ôl URI
. Ar gyfer pob URI, byddwn yn dod o hyd i'r cyfrif storio cyfatebol gan ddefnyddio Get-AzStorageAccount
. Yna dosranwch yr URI storio i dynnu'r enw blob dymunol a'i drosglwyddo i'r gorchymyn dileu Remove-AzStorageBlob
ynghyd â chyfrif storio. Dyma sut olwg fyddai arno yn y cod:
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]
}
}
A nawr “rydyn ni wedi cyrraedd y diwedd hapus!” Nawr mae angen inni gydosod un cyfanwaith o'r holl ddarnau hyn. Cyfarfu'r awdur caredig Adam Bertram â'r defnyddwyr hanner ffordd a gwneud hynny ei hun. Dyma ddolen i'r sgript derfynol o'r enw Dileu-AzrVirtualMachine.ps1:
→
Gobeithio y bydd yr awgrymiadau ymarferol hyn yn ddefnyddiol i chi o ran arbed ymdrech, amser ac arian i chi wrth weithio gydag Azure VMs.
Ffynhonnell: hab.com