PowerShell ஐப் பயன்படுத்தி Azure VMகளை மாற்றுதல் மற்றும் நீக்குதல்

PowerShell ஐப் பயன்படுத்தி, பொறியாளர்கள் மற்றும் IT நிர்வாகிகள், வளாகத்தில் மட்டுமல்ல, கிளவுட் உள்கட்டமைப்புகளிலும், குறிப்பாக Azure உடன் பணிபுரியும் போது பல்வேறு பணிகளை வெற்றிகரமாக தானியக்கமாக்குகின்றனர். சில சந்தர்ப்பங்களில், பவர்ஷெல் மூலம் வேலை செய்வது அஸூர் போர்ட்டல் மூலம் வேலை செய்வதை விட மிகவும் வசதியானது மற்றும் வேகமானது. அதன் குறுக்கு-தளம் தன்மைக்கு நன்றி, பவர்ஷெல் எந்த இயக்க முறைமையிலும் பயன்படுத்தப்படலாம்.

நீங்கள் உபுண்டு, ரெட் ஹாட் அல்லது விண்டோஸை இயக்கினாலும், பவர்ஷெல் உங்கள் கிளவுட் ஆதாரங்களைக் கட்டுப்படுத்த உதவும். தொகுதியைப் பயன்படுத்துதல் அசூர் பவர்ஷெல், எடுத்துக்காட்டாக, நீங்கள் மெய்நிகர் இயந்திரங்களின் எந்த பண்புகளையும் அமைக்கலாம்.

இந்தக் கட்டுரையில், அஸூர் கிளவுட்டில் VMஐ மறுஅளவிடுவதற்கு எப்படி PowerShell ஐப் பயன்படுத்தலாம், அத்துடன் VM மற்றும் அதனுடன் தொடர்புடைய பொருட்களை நீக்குவது எப்படி என்பதைப் பார்ப்போம்.

PowerShell ஐப் பயன்படுத்தி Azure VMகளை மாற்றுதல் மற்றும் நீக்குதல்

முக்கியம்! வேலைக்குத் தயாராக உங்கள் கைகளை சானிடைசர் மூலம் துடைக்க மறக்காதீர்கள்:

  • உங்களுக்கு ஒரு தொகுதி தேவைப்படும் அசூர் பவர்ஷெல் தொகுதி - அதை பவர்ஷெல் கேலரியில் இருந்து கட்டளையுடன் பதிவிறக்கம் செய்யலாம் Install-Module Az.
  • கட்டளையை இயக்குவதன் மூலம் மெய்நிகர் இயந்திரம் இயங்கும் அஸூர் கிளவுட்டில் நீங்கள் அங்கீகரிக்க வேண்டும் Connect-AzAccount.

முதலில், Azure VM இன் அளவை மாற்றும் ஒரு ஸ்கிரிப்டை உருவாக்குவோம். VS குறியீட்டைத் திறந்து புதிய பவர்ஷெல் ஸ்கிரிப்டைச் சேமிப்போம் Resize-AzVirtualMachine.ps1 — உதாரணம் முன்னேறும்போது அதில் குறியீடு துண்டுகளைச் சேர்ப்போம்.

கிடைக்கக்கூடிய VM அளவுகளைக் கோருகிறோம்

நீங்கள் VM அளவை மாற்றுவதற்கு முன், Azure கிளவுட்டில் உள்ள மெய்நிகர் இயந்திரங்களுக்கு ஏற்றுக்கொள்ளக்கூடிய அளவுகள் என்ன என்பதை நீங்கள் கண்டுபிடிக்க வேண்டும். இதைச் செய்ய, நீங்கள் கட்டளையை இயக்க வேண்டும் Get-AzVMSize.

எனவே மெய்நிகர் இயந்திரத்திற்கு devvm01 வள குழுவிலிருந்து தேவ் சாத்தியமான அனைத்து ஏற்றுக்கொள்ளக்கூடிய அளவுகளையும் நாங்கள் கோருகிறோம்:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(உண்மையான சிக்கல்களில், நிச்சயமாக, அதற்கு பதிலாக ResourceGroupName=dev и VMName=devvm01 இந்த அளவுருக்களுக்கான உங்கள் சொந்த மதிப்புகளை நீங்கள் குறிப்பிடுவீர்கள்.)

கட்டளை இது போன்ற ஒன்றை வழங்கும்:

PowerShell ஐப் பயன்படுத்தி Azure VMகளை மாற்றுதல் மற்றும் நீக்குதல்

இவை அனைத்தும் கொடுக்கப்பட்ட மெய்நிகர் இயந்திரத்திற்கு அமைக்கக்கூடிய சாத்தியமான அளவு விருப்பங்கள்.

காரின் அளவை மாற்றுவோம்

எடுத்துக்காட்டாக, புதிய அளவிற்கு அளவை மாற்றுவோம் Standard_B1ls - அவர் மேலே உள்ள பட்டியலில் முதல் இடத்தில் உள்ளார். (நிஜ வாழ்க்கைப் பயன்பாடுகளில், உங்களுக்குத் தேவையான அளவை நீங்கள் தேர்வு செய்கிறீர்கள்.)

  1. முதலில் கட்டளையைப் பயன்படுத்தவும் Get-AzVM ஒரு மாறியில் சேமிப்பதன் மூலம் நமது பொருளை (மெய்நிகர் இயந்திரம்) பற்றிய தகவலைப் பெறுகிறோம் $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. பின்னர் இந்த பொருளிலிருந்து சொத்தை எடுத்துக்கொள்கிறோம் .HardwareProfile.VmSize மற்றும் விரும்பிய புதிய மதிப்பை அமைக்கவும்:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. இப்போது நாம் VM புதுப்பிப்பு கட்டளையை இயக்குகிறோம் - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. எல்லாம் சரியாக நடந்ததை நாங்கள் உறுதிசெய்கிறோம் - இதைச் செய்ய, எங்கள் பொருளைப் பற்றிய தகவல்களை மீண்டும் கோருகிறோம் மற்றும் சொத்தைப் பார்க்கிறோம் $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

அங்கே பார்த்தால் Standard_B1ls - அதாவது எல்லாம் ஒழுங்காக உள்ளது, காரின் அளவு மாற்றப்பட்டுள்ளது. ஒரு வரிசையைப் பயன்படுத்தி ஒரே நேரத்தில் பல VMகளின் அளவை மாற்றுவதன் மூலம் நீங்கள் மேலும் மேலும் முன்னேறலாம்.

Azure இல் VM ஐ நீக்குவது பற்றி என்ன?

நீக்குதலுடன், எல்லாமே தோன்றும் அளவுக்கு எளிமையானதாகவும் நேரடியானதாகவும் இல்லை. எல்லாவற்றிற்கும் மேலாக, இந்த இயந்திரத்துடன் தொடர்புடைய பல ஆதாரங்களை அகற்றுவது அவசியம்:

  • துவக்க கண்டறிதல் சேமிப்பு கொள்கலன்கள்
  • பிணைய இடைமுகங்கள்
  • பொது ஐபி முகவரிகள்
  • கணினி வட்டு மற்றும் குமிழ் அதன் நிலை சேமிக்கப்படும்
  • தரவு வட்டுகள்

எனவே, நாங்கள் ஒரு செயல்பாட்டை உருவாக்கி அதை அழைப்போம் Remove-AzrVirtualMachine - மேலும் இது Azure VM மட்டுமல்ல, மேலே உள்ள அனைத்தையும் நீக்கும்.

நாங்கள் நிலையான வழியில் சென்று முதலில் கட்டளையைப் பயன்படுத்தி எங்கள் பொருளை (VM) பெறுகிறோம் Get-AzVm. உதாரணமாக, அது ஒரு காராக இருக்கட்டும் WINSRV19 வள குழுவிலிருந்து MyTestVMகள்.

இந்த பொருளை அதன் அனைத்து பண்புகளையும் சேர்த்து ஒரு மாறியில் சேமிப்போம் $vm:

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

துவக்க கண்டறியும் கோப்புகளுடன் கொள்கலனை அகற்றுதல்

Azure இல் VM ஐ உருவாக்கும் போது, ​​துவக்க கண்டறிதல்களை (துவக்க கண்டறிதல் கண்டெய்னர்) சேமிப்பதற்காக ஒரு கொள்கலனை உருவாக்குமாறு பயனர் கேட்கப்படுகிறார், இதனால் துவக்குவதில் சிக்கல்கள் இருந்தால், சரிசெய்தலுக்குத் திரும்புவதற்கு ஏதாவது உள்ளது. எவ்வாறாயினும், VM நீக்கப்பட்டால், இந்த கொள்கலன் அதன் இப்போது நோக்கமற்ற இருப்பைத் தொடர விடப்படுகிறது. இந்த நிலையை சரி செய்வோம்.

  1. முதலில், இந்த கொள்கலன் எந்த சேமிப்பக கணக்கிற்கு சொந்தமானது என்பதைக் கண்டுபிடிப்போம் - இதற்காக நாம் சொத்தை கண்டுபிடிக்க வேண்டும் storageUri பொருளின் குடலில் DiagnosticsProfile எங்கள் வி.எம். இதற்காக நான் இந்த வழக்கமான வெளிப்பாட்டைப் பயன்படுத்துகிறேன்:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. இப்போது நீங்கள் கொள்கலனின் பெயரைக் கண்டுபிடிக்க வேண்டும், இதற்காக நீங்கள் கட்டளையைப் பயன்படுத்தி VM ஐடியைப் பெற வேண்டும் 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. அடுத்து, கொள்கலன் சேர்ந்த வளக் குழுவின் பெயரைப் பெறுகிறோம்:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. இப்போது கட்டளையுடன் கொள்கலனை நீக்க வேண்டிய அனைத்தும் எங்களிடம் உள்ளன 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

பிணைய இடைமுகம் மற்றும் பொது ஐபி முகவரியை நீக்குதல்

எங்கள் VM இல் இன்னும் ஒன்று (அல்லது பல) பிணைய இடைமுகங்கள் (NIC கள்) உள்ளன - அவற்றை தேவையற்றது என நீக்க, சொத்தின் மூலம் செல்லலாம் NetworkInterfaces எங்கள் VM பொருள் மற்றும் கட்டளையுடன் NIC ஐ நீக்கவும் Remove-AzNetworkInterface. ஒன்றுக்கு மேற்பட்ட பிணைய இடைமுகங்கள் இருந்தால், நாங்கள் ஒரு வளையத்தைப் பயன்படுத்துகிறோம். அதே நேரத்தில், ஒவ்வொரு NICக்கும் நாங்கள் சொத்தை சரிபார்ப்போம் IpConfiguration இடைமுகம் பொது ஐபி முகவரி உள்ளதா என்பதை தீர்மானிக்க. ஒன்று கண்டுபிடிக்கப்பட்டால், அதை கட்டளையுடன் அகற்றுவோம் Remove-AzPublicIpAddress.

அத்தகைய குறியீட்டின் உதாரணம் இங்கே உள்ளது, அங்கு நாம் அனைத்து NIC களையும் ஒரு லூப்பில் பார்த்து, அவற்றை நீக்கி, பொது ஐபி உள்ளதா எனச் சரிபார்க்கிறோம். இருந்தால், சொத்தை அலசவும் PublicIpAddress, ஐடி மூலம் தொடர்புடைய ஆதாரத்தின் பெயரைக் கண்டுபிடித்து அதை நீக்கவும்:


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

இப்போது "நாங்கள் மகிழ்ச்சியான முடிவை அடைந்துவிட்டோம்!" இப்போது இந்த அனைத்து துண்டுகளிலிருந்தும் ஒரு முழுமையை நாம் சேகரிக்க வேண்டும். அன்பான எழுத்தாளர் ஆடம் பெர்ட்ராம் பயனர்களை பாதியிலேயே சந்தித்து தானே செய்தார். இறுதி ஸ்கிரிப்ட்டின் இணைப்பு இங்கே உள்ளது அகற்று-AzrVirtualMachine.ps1:

மகிழ்ச்சியா

Azure VMகளுடன் பணிபுரியும் போது உங்கள் முயற்சி, நேரம் மற்றும் பணத்தைச் சேமிக்க இந்த நடைமுறை உதவிக்குறிப்புகள் உங்களுக்கு உதவியாக இருக்கும் என்று நம்புகிறேன்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்