PowerShellని ఉపయోగించి, ఇంజనీర్లు మరియు IT అడ్మినిస్ట్రేటర్లు ఆన్-ప్రాంగణంతో మాత్రమే కాకుండా క్లౌడ్ ఇన్ఫ్రాస్ట్రక్చర్లతో, ప్రత్యేకించి అజూర్తో పని చేస్తున్నప్పుడు వివిధ పనులను విజయవంతంగా ఆటోమేట్ చేస్తారు. కొన్ని సందర్భాల్లో, అజూర్ పోర్టల్ ద్వారా పని చేయడం కంటే PowerShell ద్వారా పని చేయడం చాలా సౌకర్యవంతంగా మరియు వేగంగా ఉంటుంది. దాని క్రాస్-ప్లాట్ఫారమ్ స్వభావానికి ధన్యవాదాలు, పవర్షెల్ ఏదైనా ఆపరేటింగ్ సిస్టమ్లో ఉపయోగించవచ్చు.
మీరు Ubuntu, Red Hat లేదా Windowsని నడుపుతున్నా, PowerShell మీ క్లౌడ్ వనరులను నియంత్రించడంలో మీకు సహాయపడుతుంది. మాడ్యూల్ ఉపయోగించి
ఈ కథనంలో, అజూర్ క్లౌడ్లో VM పరిమాణాన్ని మార్చడానికి మీరు PowerShellని ఎలా ఉపయోగించవచ్చో, అలాగే VM మరియు దాని అనుబంధిత వస్తువులను ఎలా తొలగించవచ్చో మేము పరిశీలిస్తాము.
ముఖ్యం! పని కోసం సిద్ధం కావడానికి శానిటైజర్తో మీ చేతులను తుడుచుకోవడం మర్చిపోవద్దు:
- మీకు మాడ్యూల్ అవసరం అజూర్ పవర్షెల్ మాడ్యూల్ - ఇది కమాండ్తో పవర్షెల్ గ్యాలరీ నుండి డౌన్లోడ్ చేసుకోవచ్చు
Install-Module Az
. - కమాండ్ని అమలు చేయడం ద్వారా వర్చువల్ మెషీన్ రన్ అవుతున్న అజూర్ క్లౌడ్లో మీరు ప్రామాణీకరించాలి
Connect-AzAccount
.
ముందుగా, Azure VM పరిమాణాన్ని మార్చే స్క్రిప్ట్ని క్రియేట్ చేద్దాం. VS కోడ్ని తెరిచి, కొత్త PowerShell స్క్రిప్ట్ని సేవ్ చేద్దాం పునఃపరిమాణం-AzVirtualMachine.ps1 - ఉదాహరణ ముందుకు సాగుతున్నప్పుడు మేము దానికి కోడ్ ముక్కలను జోడిస్తాము.
మేము అందుబాటులో ఉన్న VM పరిమాణాలను అభ్యర్థిస్తాము
మీరు VM పరిమాణాన్ని మార్చడానికి ముందు, అజూర్ క్లౌడ్లోని వర్చువల్ మెషీన్లకు ఆమోదయోగ్యమైన పరిమాణాలు ఏమిటో మీరు కనుగొనాలి. దీన్ని చేయడానికి మీరు ఆదేశాన్ని అమలు చేయాలి Get-AzVMSize
.
కాబట్టి వర్చువల్ మెషీన్ కోసం devvm01 వనరుల సమూహం నుండి dev మేము అన్ని ఆమోదయోగ్యమైన పరిమాణాలను అభ్యర్థిస్తాము:
Get-AzVMSize -ResourceGroupName dev -VMName devvm01
(నిజమైన సమస్యలలో, వాస్తవానికి, బదులుగా ResourceGroupName=dev и VMName=devvm01 మీరు ఈ పారామితుల కోసం మీ స్వంత విలువలను నిర్దేశిస్తారు.)
కమాండ్ ఈ విధంగా తిరిగి వస్తుంది:
ఇవ్వబడిన వర్చువల్ మెషీన్ కోసం సెట్ చేయగల అన్ని సాధ్యమైన పరిమాణ ఎంపికలు.
కారు పరిమాణాన్ని మారుద్దాం
ఉదాహరణకు, మేము కొత్త పరిమాణానికి పరిమాణాన్ని మారుస్తాము Standard_B1ls - పైన పేర్కొన్న జాబితాలో అతను మొదటి స్థానంలో ఉన్నాడు. (నిజ జీవిత అనువర్తనాల్లో, మీకు అవసరమైన పరిమాణాన్ని మీరు ఎంచుకుంటారు.)
- మొదట ఆదేశాన్ని ఉపయోగించడం
Get-AzVM
వేరియబుల్లో నిల్వ చేయడం ద్వారా మన వస్తువు (వర్చువల్ మిషన్) గురించి సమాచారాన్ని పొందుతాము$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- అప్పుడు మేము ఈ వస్తువు నుండి ఆస్తిని తీసుకుంటాము
.HardwareProfile.VmSize
మరియు కావలసిన కొత్త విలువను సెట్ చేయండి:$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- మరియు ఇప్పుడు మేము కేవలం VM నవీకరణ ఆదేశాన్ని అమలు చేస్తాము -
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- ప్రతిదీ సరిగ్గా జరిగిందని మేము నిర్ధారించుకుంటాము - దీన్ని చేయడానికి, మేము మా వస్తువు గురించి సమాచారాన్ని మళ్లీ అభ్యర్థిస్తాము మరియు ఆస్తిని చూస్తాము
$virtualMachine.HardwareProfile
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
అక్కడ మనం చూస్తే Standard_B1ls - అంటే ప్రతిదీ క్రమంలో ఉంది, కారు పరిమాణం మార్చబడింది. శ్రేణిని ఉపయోగించి ఒకేసారి అనేక VMల పరిమాణాన్ని మార్చడం ద్వారా మీరు మరింత ముందుకు వెళ్లి మీ విజయాన్ని పెంచుకోవచ్చు.
అజూర్లో VMని తొలగించడం గురించి ఏమిటి?
తొలగింపుతో, ప్రతిదీ కనిపించేంత సరళంగా మరియు సూటిగా ఉండదు. అన్నింటికంటే, ఈ యంత్రంతో అనుబంధించబడిన అనేక వనరులను తీసివేయడం అవసరం, వాటితో సహా:
- బూట్ డయాగ్నోస్టిక్స్ నిల్వ కంటైనర్లు
- నెట్వర్క్ ఇంటర్ఫేస్లు
- పబ్లిక్ IP చిరునామాలు
- సిస్టమ్ డిస్క్ మరియు దాని స్థితి నిల్వ చేయబడిన బొట్టు
- డేటా డిస్క్లు
అందువల్ల, మేము ఒక ఫంక్షన్ని సృష్టించి, దానిని కాల్ చేస్తాము Remove-AzrVirtualMachine
- మరియు ఇది అజూర్ VM మాత్రమే కాకుండా, పైన పేర్కొన్నవన్నీ కూడా తొలగిస్తుంది.
మేము ప్రామాణిక మార్గంలో వెళ్తాము మరియు మొదట ఆదేశాన్ని ఉపయోగించి మా వస్తువు (VM) ను పొందండి Get-AzVm
. ఉదాహరణకు, అది కారుగా ఉండనివ్వండి WINSRV19 వనరుల సమూహం నుండి MyTestVMలు.
ఈ వస్తువును దాని అన్ని లక్షణాలతో పాటు వేరియబుల్లో సేవ్ చేద్దాం $vm
:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs
బూట్ డయాగ్నస్టిక్ ఫైల్లతో కంటైనర్ను తీసివేయడం
అజూర్లో VMని క్రియేట్ చేస్తున్నప్పుడు, బూట్ డయాగ్నస్టిక్స్ (బూట్ డయాగ్నస్టిక్స్ కంటైనర్) నిల్వ చేయడానికి ఒక కంటైనర్ను రూపొందించమని కూడా వినియోగదారుని అడగబడతారు, తద్వారా బూటింగ్లో సమస్యలు ఉంటే, ట్రబుల్షూటింగ్ కోసం ఆశ్రయించాల్సిన అవసరం ఉంది. అయినప్పటికీ, VM తొలగించబడినప్పుడు, ఈ కంటైనర్ ఇప్పుడు దాని ఉద్దేశ్యరహిత ఉనికిని కొనసాగించడానికి మిగిలిపోతుంది. ఈ పరిస్థితిని చక్కదిద్దుకుందాం.
- ముందుగా, ఈ కంటైనర్ ఏ నిల్వ ఖాతాకు చెందినదో తెలుసుకుందాం - దీని కోసం మనం ప్రాపర్టీని కనుగొనాలి
storageUri
వస్తువు యొక్క ప్రేగులలోDiagnosticsProfile
మా VM. దీని కోసం నేను ఈ సాధారణ వ్యక్తీకరణను ఉపయోగిస్తాను:$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
- ఇప్పుడు మీరు కంటైనర్ పేరును కనుగొనాలి మరియు దీని కోసం మీరు ఆదేశాన్ని ఉపయోగించి VM IDని పొందాలి
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)
- తరువాత, కంటైనర్ చెందిన వనరుల సమూహం యొక్క పేరును మేము పొందుతాము:
$diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
- మరియు ఇప్పుడు మనకు కమాండ్తో కంటైనర్ను తొలగించాల్సిన ప్రతిదీ ఉంది
Remove-AzStorageContainer
:$saParams = @{ 'ResourceGroupName' = $diagSaRg 'Name' = $diagSa } Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force
VMని తీసివేస్తోంది
ఇప్పుడు మనం వర్చువల్ మెషీన్ను తొలగిస్తాము, ఎందుకంటే మనం ఇప్పటికే వేరియబుల్ని సృష్టించాము $vm
సంబంధిత వస్తువు కోసం. సరే, ఆదేశాన్ని అమలు చేద్దాం Remove-AzVm
:
$null = $vm | Remove-AzVM -Force
నెట్వర్క్ ఇంటర్ఫేస్ మరియు పబ్లిక్ IP చిరునామాను తీసివేయడం
మా VM ఇప్పటికీ ఒకటి (లేదా అనేకం) నెట్వర్క్ ఇంటర్ఫేస్లను (NICలు) కలిగి ఉంది - వాటిని అనవసరంగా తొలగించడానికి, ప్రాపర్టీని చూద్దాం NetworkInterfaces
మా VM ఆబ్జెక్ట్ మరియు ఆదేశంతో NICని తొలగించండి Remove-AzNetworkInterface
. ఒకటి కంటే ఎక్కువ నెట్వర్క్ ఇంటర్ఫేస్లు ఉన్నట్లయితే, మేము లూప్ని ఉపయోగిస్తాము. అదే సమయంలో, ప్రతి NIC కోసం మేము ఆస్తిని తనిఖీ చేస్తాము IpConfiguration
ఇంటర్ఫేస్కు పబ్లిక్ IP చిరునామా ఉందో లేదో తెలుసుకోవడానికి. ఒకటి కనుగొనబడితే, మేము దానిని ఆదేశంతో తీసివేస్తాము Remove-AzPublicIpAddress
.
ఇక్కడ అటువంటి కోడ్ యొక్క ఉదాహరణ ఉంది, ఇక్కడ మేము అన్ని NICలను లూప్లో చూస్తాము, వాటిని తొలగిస్తాము మరియు పబ్లిక్ IP ఉందో లేదో తనిఖీ చేస్తాము. ఉన్నట్లయితే, ఆస్తిని అన్వయించండి PublicIpAddress
, ID ద్వారా సంబంధిత వనరు పేరును కనుగొని దానిని తొలగించండి:
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
}
}
}
సిస్టమ్ డిస్క్ను తొలగిస్తోంది
OS డిస్క్ ఒక బొట్టు, దాని కోసం దానిని తొలగించడానికి ఒక ఆదేశం ఉంది Remove-AzStorageBlob
- కానీ దాన్ని అమలు చేయడానికి ముందు, మీరు దాని పారామితులకు అవసరమైన విలువలను సెట్ చేయాలి. దీన్ని చేయడానికి, ప్రత్యేకించి, మీరు సిస్టమ్ డిస్క్ను కలిగి ఉన్న నిల్వ కంటైనర్ పేరును పొందాలి, ఆపై సంబంధిత నిల్వ ఖాతాతో పాటు ఈ ఆదేశానికి పంపాలి.
$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]
సిస్టమ్ డిస్క్ స్థితి బొట్టును తొలగిస్తోంది
దీన్ని చేయడానికి, మీరు బహుశా ఇప్పటికే ఊహించినట్లుగా, మేము ఈ డిస్క్ నిల్వ చేయబడే నిల్వ కంటైనర్ను తీసుకుంటాము మరియు చివరిలో ఉన్న బొట్టు కలిగి ఉందని సూచిస్తుంది status
, సంబంధిత పారామితులను తొలగించు ఆదేశానికి పంపండి Remove-AzStorageBlob
:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob
చివరకు, మేము డేటా డిస్కులను తీసివేస్తాము
మా VM ఇప్పటికీ దానికి జోడించబడిన డేటాతో డిస్క్లను కలిగి ఉండవచ్చు. అవసరం లేకుంటే వాటిని కూడా తొలగిస్తాం. ముందుగా దానిని అన్వయించుకుందాం StorageProfile
మా VM మరియు ఆస్తిని కనుగొనండి Uri
. అనేక డిస్కులు ఉన్నట్లయితే, మేము దాని ప్రకారం ఒక చక్రాన్ని నిర్వహిస్తాము URI
. ప్రతి URI కోసం, మేము ఉపయోగించి సంబంధిత నిల్వ ఖాతాను కనుగొంటాము Get-AzStorageAccount
. ఆపై కావలసిన బొట్టు పేరును సంగ్రహించడానికి నిల్వ URIని అన్వయించండి మరియు దానిని తొలగించు ఆదేశానికి పంపండి Remove-AzStorageBlob
నిల్వ ఖాతాతో పాటు. కోడ్లో ఇది ఇలా ఉంటుంది:
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]
}
}
మరియు ఇప్పుడు "మేము సంతోషకరమైన ముగింపుకు చేరుకున్నాము!" ఇప్పుడు మనం ఈ అన్ని శకలాల నుండి ఒకే మొత్తాన్ని సమీకరించాలి. దయగల రచయిత ఆడమ్ బెర్ట్రామ్ వినియోగదారులను సగం వరకు కలుసుకున్నాడు మరియు దానిని స్వయంగా చేశాడు. అనే చివరి స్క్రిప్ట్కి లింక్ ఇక్కడ ఉంది Remove-AzrVirtualMachine.ps1:
Azure VMలతో పని చేస్తున్నప్పుడు మీ శ్రమ, సమయం మరియు డబ్బును ఆదా చేయడంలో ఈ ఆచరణాత్మక చిట్కాలు మీకు సహాయపడతాయని నేను ఆశిస్తున్నాను.
మూలం: www.habr.com