PowerShell භාවිතයෙන් Azure VM වෙනස් කිරීම සහ මකා දැමීම

PowerShell භාවිතා කරමින්, ඉංජිනේරුවන් සහ තොරතුරු තාක්ෂණ පරිපාලකයින් පරිශ්‍රයේ පමණක් නොව, වලාකුළු යටිතල පහසුකම් සමඟ, විශේෂයෙන් Azure සමඟ වැඩ කිරීමේදී විවිධ කාර්යයන් සාර්ථකව ස්වයංක්‍රීය කරයි. සමහර අවස්ථාවලදී, PowerShell හරහා වැඩ කිරීම Azure ද්වාරය හරහා වැඩ කිරීමට වඩා පහසු සහ වේගවත් වේ. එහි හරස් වේදිකා ස්වභාවයට ස්තූතියි, PowerShell ඕනෑම මෙහෙයුම් පද්ධතියක භාවිතා කළ හැකිය.

ඔබ Ubuntu, Red Hat, හෝ Windows ධාවනය කළත්, PowerShell ඔබට ඔබේ වලාකුළු සම්පත් පාලනය කිරීමට උදවු කළ හැක. මොඩියුලය භාවිතා කිරීම Azure PowerShell, උදාහරණයක් ලෙස, ඔබට අතථ්‍ය යන්ත්‍රවල ඕනෑම ගුණාංග සැකසිය හැක.

මෙම ලිපියෙන්, අපි ඔබට Azure වලාකුළෙහි VM ප්‍රතිප්‍රමාණ කිරීමට PowerShell භාවිතා කළ හැකි ආකාරය මෙන්ම VM සහ ඊට සම්බන්ධ වස්තූන් මකා දැමිය හැකි ආකාරය දෙස බලමු.

PowerShell භාවිතයෙන් Azure VM වෙනස් කිරීම සහ මකා දැමීම

වැදගත්! වැඩ සඳහා සූදානම් වීම සඳහා සනීපාරක්ෂක සමඟ ඔබේ දෑත් පිස දැමීමට අමතක නොකරන්න:

  • ඔබට මොඩියුලයක් අවශ්ය වනු ඇත Azure PowerShell මොඩියුලය - එය විධානය සමඟ PowerShell Gallery වෙතින් බාගත කළ හැක Install-Module Az.
  • විධානය ක්‍රියාත්මක කිරීමෙන් අථත්‍ය යන්ත්‍රය ක්‍රියාත්මක වන Azure වලාකුළෙහි ඔබ සත්‍යාපනය කළ යුතුය Connect-AzAccount.

මුලින්ම අපි Azure VM එකක ප්‍රතිප්‍රමාණය වෙනස් කරන script එකක් හදමු. අපි VS කේතය විවෘත කර නව PowerShell ස්ක්‍රිප්ට් එකක් සුරකිමු Resize-AzVirtualMachine.ps1 - උදාහරණය ඉදිරියට යන විට අපි එයට කේත කෑලි එකතු කරන්නෙමු.

පවතින VM ප්‍රමාණයන් අපි ඉල්ලා සිටිමු

ඔබ VM ප්‍රමාණය වෙනස් කිරීමට පෙර, Azure cloud හි අථත්‍ය යන්ත්‍ර සඳහා පිළිගත හැකි ප්‍රමාණ මොනවාදැයි ඔබ සොයා බැලිය යුතුය. මෙය සිදු කිරීම සඳහා ඔබ විධානය ක්රියාත්මක කළ යුතුය Get-AzVMSize.

ඉතින් අතථ්‍ය යන්ත්‍රය සඳහා devvm01 සම්පත් සමූහයෙන් dev හැකි සියලුම පිළිගත හැකි ප්‍රමාණයන් අපි ඉල්ලා සිටිමු:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(සැබෑ ගැටළු වලදී, ඇත්ත වශයෙන්ම, ඒ වෙනුවට ResourceGroupName=dev и VMName=devvm01 මෙම පරාමිතීන් සඳහා ඔබ ඔබේම අගයන් නියම කරනු ඇත.)

විධානය මෙවැනි දෙයක් නැවත ලබා දෙනු ඇත:

PowerShell භාවිතයෙන් Azure VM වෙනස් කිරීම සහ මකා දැමීම

මේ සියල්ල ලබා දී ඇති අථත්‍ය යන්ත්‍රයක් සඳහා සැකසිය හැකි ප්‍රමාණයේ විකල්ප වේ.

අපි කාර් එකේ ප්‍රමාණය වෙනස් කරමු

උදාහරණයක් ලෙස, අපි නව ප්‍රමාණයකට ප්‍රමාණය වෙනස් කරන්නෙමු සම්මත_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

අපි එතන දැක්කොත් සම්මත_B1ls - ඒ කියන්නේ හැම දෙයක්ම පිළිවෙලට තියෙනවා, මෝටර් රථයේ ප්රමාණය වෙනස් කර ඇත. අරාවක් භාවිතයෙන් VM කිහිපයක් එකවර ප්‍රතිප්‍රමාණ කිරීමෙන් ඔබට තවත් ඉදිරියට ගොස් ඔබේ සාර්ථකත්වය ගොඩනගා ගත හැක.

Azure හි VM එකක් මකා දැමීම ගැන කුමක් කිව හැකිද?

මකාදැමීමත් සමඟ, සෑම දෙයක්ම පෙනෙන තරම් සරල හා සරල නොවේ. සියල්ලට පසු, මෙම යන්ත්‍රය හා සම්බන්ධ සම්පත් ගණනාවක් ඉවත් කිරීම අවශ්‍ය වේ, ඒවා අතර:

  • ආරම්භක රෝග විනිශ්චය ගබඩා බහාලුම්
  • ජාල අතුරුමුහුණත්
  • පොදු IP ලිපින
  • එහි තත්ත්වය ගබඩා කර ඇති පද්ධති තැටිය සහ බ්ලොබ්
  • දත්ත තැටි

එබැවින්, අපි කාර්යයක් සාදා එය අමතන්නෙමු Remove-AzrVirtualMachine - සහ එය Azure VM පමණක් නොව, ඉහත සියල්ල මකා දමයි.

අපි සම්මත මාර්ගයට ගොස් මුලින්ම විධානය භාවිතා කර අපගේ වස්තුව (VM) ලබා ගනිමු Get-AzVm. උදාහරණයක් ලෙස, එය මෝටර් රථයක් වීමට ඉඩ දෙන්න WINSRV19 සම්පත් සමූහයෙන් MyTestVMs.

අපි මෙම වස්තුව එහි සියලු ගුණාංග සමඟ විචල්‍යයකට සුරකිමු $vm:

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

ඇරඹුම් රෝග විනිශ්චය ගොනු සමඟ කන්ටේනරය ඉවත් කිරීම

Azure හි VM නිර්මාණය කිරීමේදී, ඇරඹුම් රෝග විනිශ්චය (boot diagnostics container) ගබඩා කිරීම සඳහා කන්ටේනරයක් සෑදීමට පරිශීලකයාගෙන් ඉල්ලා සිටින අතර, එමඟින් ආරම්භ කිරීමේදී ගැටළු තිබේ නම්, දෝශ නිරාකරණය සඳහා යොමු වීමට යමක් තිබේ. කෙසේ වෙතත්, 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

ජාල අතුරුමුහුණත සහ පොදු IP ලිපිනය ඉවත් කිරීම

අපගේ VM හි තවමත් ජාල අතුරුමුහුණත් එකක් (හෝ කිහිපයක් පවා) ඇත - ඒවා අනවශ්‍ය ලෙස ඉවත් කිරීමට, අපි දේපල හරහා යමු NetworkInterfaces අපගේ VM වස්තුව සහ විධානය සමඟ NIC මකා දමන්න Remove-AzNetworkInterface. ජාල අතුරුමුහුණත එකකට වඩා තිබේ නම්, අපි ලූපයක් භාවිතා කරමු. ඒ සමගම, එක් එක් ජාතික හැඳුනුම්පත සඳහා අපි දේපල පරීක්ෂා කරන්නෙමු IpConfiguration අතුරු මුහුණතට පොදු IP ලිපිනයක් තිබේද යන්න තීරණය කිරීමට. එකක් හමු වුවහොත්, අපි එය විධානය සමඟ ඉවත් කරන්නෙමු Remove-AzPublicIpAddress.

මෙන්න එවැනි කේතයක උදාහරණයක් පමණි, එහිදී අපි ලූපයක් තුළ සියලුම ජාතික හැඳුනුම්පත් හරහා බලා ඒවා මකා දමා පොදු 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:

GitHub

Azure VM සමඟ වැඩ කිරීමේදී ඔබේ උත්සාහය, කාලය සහ මුදල් ඉතිරි කර ගැනීමට මෙම ප්‍රායෝගික ඉඟි ඔබට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න