Kurekebisha na kufuta VM za Azure kwa kutumia PowerShell

Kwa kutumia PowerShell, wahandisi na wasimamizi wa TEHAMA kwa ufanisi kugeuza kazi mbalimbali wakati wa kufanya kazi sio tu na majengo, lakini pia na miundombinu ya wingu, hasa na Azure. Katika hali nyingine, kufanya kazi kupitia PowerShell ni rahisi zaidi na haraka kuliko kufanya kazi kupitia lango la Azure. Shukrani kwa asili yake ya jukwaa la msalaba, PowerShell inaweza kutumika kwenye mfumo wowote wa uendeshaji.

Iwe unatumia Ubuntu, Red Hat, au Windows, PowerShell inaweza kukusaidia kudhibiti rasilimali zako za wingu. Kutumia moduli Azure PowerShell, kwa mfano, unaweza kuweka mali yoyote ya mashine virtual.

Katika nakala hii, tutaangalia jinsi unavyoweza kutumia PowerShell kurekebisha ukubwa wa VM kwenye wingu la Azure, na pia kufuta VM na vitu vinavyohusika.

Kurekebisha na kufuta VM za Azure kwa kutumia PowerShell

Muhimu! Usisahau kuifuta mikono yako na sanitizer ili kujiandaa kwa kazi:

  • Utahitaji moduli Moduli ya Azure PowerShell - inaweza kupakuliwa kutoka kwa Matunzio ya PowerShell kwa amri Install-Module Az.
  • Unahitaji kuthibitisha katika wingu la Azure ambapo mashine ya kawaida inaendesha kwa kuendesha amri Connect-AzAccount.

Kwanza, wacha tuunde hati ambayo itabadilisha ukubwa wa Azure VM. Wacha tufungue Msimbo wa VS na tuhifadhi hati mpya ya PowerShell inayoitwa Resize-AzVirtualMachine.ps1 - tutaongeza vipande vya msimbo kwake kadiri mfano unavyoendelea.

Tunaomba saizi za VM zinazopatikana

Kabla ya kubadilisha saizi ya VM, unahitaji kujua ni saizi gani zinazokubalika kwa mashine za kawaida kwenye wingu la Azure. Ili kufanya hivyo unahitaji kuendesha amri Get-AzVMSize.

Kwa hivyo kwa mashine ya kawaida devvm01 kutoka kwa kikundi cha rasilimali dev Tunaomba saizi zote zinazokubalika:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Katika shida za kweli, kwa kweli, badala ya ResourceGroupName=dev ΠΈ VMName=devvm01 utabainisha maadili yako mwenyewe kwa vigezo hivi.)

Amri itarudisha kitu kama hiki:

Kurekebisha na kufuta VM za Azure kwa kutumia PowerShell

Hizi zote ni chaguo za ukubwa zinazowezekana ambazo zinaweza kuwekwa kwa mashine fulani pepe.

Wacha tubadili ukubwa wa gari

Kwa mfano, tutabadilisha ukubwa hadi ukubwa mpya Kawaida_B1 - yuko katika nafasi ya kwanza kwenye orodha hapo juu. (Katika programu za maisha halisi, bila shaka, unachagua saizi yoyote unayohitaji.)

  1. Kwanza kwa kutumia amri Get-AzVM tunapata habari kuhusu kitu chetu (mashine ya kawaida) kwa kuihifadhi kwa kutofautisha $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Kisha tunachukua mali kutoka kwa kitu hiki .HardwareProfile.VmSize na weka thamani mpya inayotaka:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Na sasa tunatoa tu amri ya sasisho ya VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Tunahakikisha kwamba kila kitu kilikwenda vizuri - kufanya hivyo, tunaomba tena habari kuhusu kitu chetu na kuangalia mali $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Ikiwa tunaona hapo Kawaida_B1 - hiyo inamaanisha kuwa kila kitu kiko katika mpangilio, saizi ya gari imebadilishwa. Unaweza kwenda mbali zaidi na kuendeleza mafanikio yako kwa kubadilisha ukubwa wa VM kadhaa mara moja kwa kutumia safu.

Vipi kuhusu kufuta VM huko Azure?

Kwa kufuta, sio kila kitu ni rahisi na sawa kama inaweza kuonekana. Baada ya yote, inahitajika kuondoa rasilimali kadhaa zinazohusiana na mashine hii, pamoja na:

  • Vyombo vya uhifadhi vya uchunguzi wa boot
  • Viunga vya mtandao
  • Anwani za IP za umma
  • Diski ya mfumo na blob ambapo hali yake imehifadhiwa
  • Disks za data

Kwa hiyo, tutaunda kazi na kuiita Remove-AzrVirtualMachine - na itafuta sio Azure VM tu, bali pia yote yaliyo hapo juu.

Tunaenda kwa njia ya kawaida na kwanza kupata kitu chetu (VM) kwa kutumia amri Get-AzVm. Kwa mfano, iwe gari WINSRV19 kutoka kwa kikundi cha rasilimali MyTestVMs.

Wacha tuhifadhi kitu hiki pamoja na mali zake zote kuwa kigezo $vm:

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

Kuondoa kontena na faili za uchunguzi wa kuwasha

Wakati wa kuunda VM katika Azure, mtumiaji pia anaulizwa kuunda chombo cha kuhifadhi uchunguzi wa boot (chombo cha uchunguzi wa boot), ili ikiwa kuna matatizo na uanzishaji, kuna kitu cha kugeuka kwa ajili ya kutatua matatizo. Hata hivyo, VM inapofutwa, chombo hiki huachwa ili kuendelea kuwepo kwake bila kusudi. Turekebishe hali hii.

  1. Kwanza, hebu tujue ni akaunti gani ya hifadhi ambayo chombo hiki ni cha - kwa hili tunahitaji kupata mali storageUri kwenye matumbo ya kitu DiagnosticsProfile VM yetu. Kwa hili mimi hutumia usemi huu wa kawaida:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Sasa unahitaji kujua jina la chombo, na kwa hili unahitaji kupata kitambulisho cha VM kwa kutumia amri 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. Ifuatayo, tunapata jina la kikundi cha rasilimali ambacho chombo ni cha:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Na sasa tuna kila kitu tunachohitaji kufuta chombo na amri Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Kuondoa VM

Sasa hebu tufute mashine ya kawaida yenyewe, kwa kuwa tayari tumeunda kutofautiana $vm kwa kitu kinacholingana. Kweli, wacha tuendeshe amri Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Kuondoa kiolesura cha mtandao na anwani ya IP ya umma

VM yetu bado ina miingiliano moja (au hata kadhaa) ya mtandao (NICs) - ili kuziondoa kama sio lazima, wacha tupitie mali hiyo. NetworkInterfaces kitu chetu cha VM na ufute NIC kwa amri Remove-AzNetworkInterface. Iwapo kuna zaidi ya kiolesura kimoja cha mtandao, tunatumia kitanzi. Wakati huo huo, kwa kila NIC tutaangalia mali IpConfiguration ili kubaini ikiwa kiolesura kina anwani ya IP ya umma. Ikiwa moja inapatikana, tutaiondoa kwa amri Remove-AzPublicIpAddress.

Hapa kuna mfano wa nambari kama hiyo, ambapo tunaangalia NIC zote kwa kitanzi, kuzifuta, na kuangalia ikiwa kuna IP ya umma. Ikiwa kuna, basi panga mali hiyo PublicIpAddress, pata jina la rasilimali inayolingana na kitambulisho na uifute:


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

Kuondoa diski ya mfumo

Diski ya OS ni blob, ambayo kuna amri ya kuifuta Remove-AzStorageBlob - lakini kabla ya kuitekeleza, utahitaji kuweka maadili yanayotakiwa kwa vigezo vyake. Ili kufanya hivyo, hasa, unahitaji kupata jina la chombo cha kuhifadhi kilicho na disk ya mfumo, na kisha uipitishe kwa amri hii pamoja na akaunti ya hifadhi inayofanana.

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

Kuondoa Blob ya Hali ya Diski ya Mfumo

Ili kufanya hivyo, kama ulivyodhani tayari, tunachukua chombo cha kuhifadhi ambacho diski hii imehifadhiwa, na, ikimaanisha kuwa blob mwishoni ina. status, kupitisha vigezo vinavyolingana na amri ya kufuta Remove-AzStorageBlob:

$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob

Na hatimaye, tunaondoa diski za data

VM yetu bado inaweza kuwa na diski zilizo na data ambazo ziliambatishwa kwake. Ikiwa hazihitajiki, tutazifuta pia. Hebu tuchanganue kwanza StorageProfile VM yetu na upate mali hiyo Uri. Ikiwa kuna disks kadhaa, tunapanga mzunguko kulingana na URI. Kwa kila URI, tutapata akaunti ya hifadhi inayolingana kwa kutumia Get-AzStorageAccount. Kisha uchanganua URI ya uhifadhi ili kutoa jina la blob inayotaka na uipitishe kwa amri ya kufuta Remove-AzStorageBlob pamoja na akaunti ya hifadhi. Hivi ndivyo inavyoonekana katika nambari:

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

Na sasa "tumefikia mwisho mzuri!" Sasa tunahitaji kukusanyika nzima moja kutoka kwa vipande hivi vyote. Mwandishi mzuri Adam Bertram alikutana na watumiaji nusu na akafanya mwenyewe. Hapa kuna kiunga cha hati ya mwisho inayoitwa Ondoa-AzrVirtualMachine.ps1:

β†’ GitHub

Natumai utapata vidokezo hivi vya vitendo kuwa vya kusaidia katika kuokoa juhudi, wakati, na pesa unapofanya kazi na Azure VMs.

Chanzo: mapenzi.com

Kuongeza maoni