Kugadzirisa uye kudzima Azure VM uchishandisa PowerShell

Kushandisa PowerShell, mainjiniya uye IT administrators vakabudirira otomatiki mabasa akasiyana-siyana kana vachishanda kwete chete ne-pa-nzvimbo, asiwo nemafu ehupfumi, kunyanya neAzure. Mune zvimwe zviitiko, kushanda kuburikidza nePowerShell kuri nyore uye nekukurumidza kupfuura kushanda kuburikidza neAzure portal. Kutenda kune yayo muchinjiko-chikuva, PowerShell inogona kushandiswa pane chero inoshanda sisitimu.

Kunyangwe iwe uchimhanyisa Ubuntu, Red Hat, kana Windows, PowerShell inogona kukubatsira kudzora zviwanikwa zvegore. Kushandisa module Azure PowerShell, semuenzaniso, unogona kuseta chero zvimiro zvemashini chaiwo.

Muchikamu chino, tichatarisa mashandisiro aungaite PowerShell kudzoreredza VM mugore reAzure, pamwe nekudzima VM nezvimwe zvakabatana nazvo.

Kugadzirisa uye kudzima Azure VM uchishandisa PowerShell

Zvinokosha! Usakanganwa kupukuta maoko ako nesanitizer kugadzirira basa:

  • Iwe uchada module Azure PowerShell Module - inogona kutorwa kubva kuPowerShell Gallery nemurairo Install-Module Az.
  • Iwe unofanirwa kutendesa mune yeAzure gore uko iyo chaiyo muchina uri kushanda nekumhanyisa murairo Connect-AzAccount.

Kutanga, ngatigadzire script inozogadzirisa Azure VM. Ngativhure VS Code uye tichengetedze nyowani PowerShell script inonzi Resize-AzVirtualMachine.ps1 - isu tichawedzera zvidimbu zvekodhi kwairi sezvo muenzaniso unofambira mberi.

Tinokumbira hukuru hweVM huripo

Usati washandura saizi yeVM, iwe unofanirwa kuziva kuti ndeapi masaizi anogamuchirika emakina chaiwo ari muAzure gore. Kuti uite izvi unofanirwa kumhanya murairo Get-AzVMSize.

Saka kune virtual muchina devvm01 kubva resource group hombororo Tinokumbira masaizi ese anogamuchirika:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Mumatambudziko chaiwo, hongu, pane ResourceGroupName=dev ΠΈ VMName=devvm01 iwe unozotsanangura ako ako madhiri eaya ma parameter.)

Murairo uchadzorera chinhu chakadai:

Kugadzirisa uye kudzima Azure VM uchishandisa PowerShell

Aya ese ese anogona saizi sarudzo dzinogona kusetwa kune yakapihwa virtual muchina.

Ngatigadzirise mota

Semuenzaniso, isu tichagadzirisa saizi kune imwe saizi Standard_B1ls - ari panzvimbo yekutanga pane rondedzero iri pamusoro. (Mumashandisirwo chaiwo ehupenyu, hongu, iwe unosarudza chero saizi yaunoda.)

  1. Kutanga kushandisa murairo Get-AzVM isu tinowana ruzivo nezve chinhu chedu (virtual muchina) nekuchichengeta muchinjika $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Zvadaro tinotora pfuma kubva pachinhu ichi .HardwareProfile.VmSize uye isa kukosha kutsva kwaunoda:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Uye ikozvino isu tinongoita iyo VM yekuvandudza yekuraira - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Isu tinoita chokwadi chekuti zvese zvakafamba zvakanaka - kuita izvi, tinokumbira zvakare ruzivo nezve chinhu chedu uye titarise pfuma $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Kana tichiona ipapo Standard_B1ls - zvinoreva kuti zvinhu zvose zvakarongeka, ukuru hwemotokari hwakachinjwa. Iwe unogona kuenda kumberi uye kuvaka pakubudirira kwako nekugadzirisa akati wandei maVM panguva imwe chete uchishandisa array.

Zvakadini nekudzima VM muAzure?

Nekudzima, hazvisi zvese zviri nyore uye zvakanangana sezvazvingaite. Mushure mezvose, zvinodikanwa kubvisa huwandu hwezviwanikwa zvine chekuita nemuchina uyu, kusanganisira:

  • Boot diagnostics kuchengetedza midziyo
  • Network pakati
  • Public IP kero
  • System disk uye blob uko chimiro chayo chinochengetwa
  • Data disks

Naizvozvo, isu tichagadzira basa uye toridaidza Remove-AzrVirtualMachine - uye ichabvisa kwete Azure VM chete, asiwo zvese zviri pamusoro.

Isu tinoenda nenzira yakajairwa uye tanga tawana chinhu chedu (VM) tichishandisa murairo Get-AzVm. Somuenzaniso, ngaive motokari WINSRV19 kubva resource group MyTestVMs.

Ngatichengetedzei chinhu ichi pamwe chete nemhando dzayo dzese kuita shanduko $vm:

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

Kubvisa mudziyo une boot diagnostic mafaira

Paunenge uchigadzira VM muAzure, mushandisi anokumbirwawo kugadzira mudziyo wekuchengetera boot diagnostics (bhoot diagnostics mudziyo), kuitira kuti kana paine matambudziko nekubhowa, pane chimwe chinhu chekutendeukira kune kugadzirisa matambudziko. Nekudaro, kana VM yadzimwa, mudziyo uyu unosiiwa kuti uenderere mberi nekuvapo kwayo kusina chinangwa. Ngatigadzirisei mamiriro aya.

  1. Chekutanga, ngatitsvagei kuti ndeipi account yekuchengetera iyi - pane izvi isu tinoda kuwana iyo nzvimbo storageUri muura hwechinhu DiagnosticsProfile yedu VM. Kune izvi ini ndinoshandisa iyi yenguva dzose kutaura:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Zvino iwe unofanirwa kutsvaga zita remudziyo, uye nekuda kweizvi iwe unofanirwa kuwana iyo VM ID uchishandisa rairo 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. Tevere, tinowana zita reboka rezvishandiso iro ndiro racho:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Uye ikozvino tine zvese zvatinoda kudzima mudziyo nemurairo Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Kubvisa iyo VM

Zvino ngatibvisei muchina chaiwo, sezvo isu takatogadzira shanduko $vm nokuda kwechinhu chinoenderana. Zvakanaka, ngatimhanyei murairo Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Kubvisa network interface uye yeruzhinji IP kero

VM yedu ichine imwe (kana kunyange akati wandei) network interfaces (NICs) - kuvabvisa sezvisina basa, ngatipfuure nepanzvimbo. NetworkInterfaces yedu VM chinhu uye bvisa iyo NIC nemurairo Remove-AzNetworkInterface. Kana paine inopfuura imwechete network interface, isu tinoshandisa loop. Panguva imwecheteyo, kune imwe neimwe NIC isu tichatarisa pfuma IpConfiguration kuona kana iyo interface ine yeruzhinji IP kero. Kana imwe yakawanikwa, tichaibvisa nemurairo Remove-AzPublicIpAddress.

Heino muenzaniso wekodhi yakadaro, kwatinotarisa kuburikidza neNIC dzese muchiuno, tidzime, uye tarisa kana paine IP yeruzhinji. Kana iripo, patsanura pfuma yacho PublicIpAddress, tsvaga zita reiyo inoenderana sosi neID uye uibvise:


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

Kubvisa system disk

Iyo OS disk ibhurobhu, iyo ine murairo wekuidzima Remove-AzStorageBlob - asi usati wazviita, iwe unozofanirwa kuseta inodiwa kukosha kwayo paramita. Kuti uite izvi, kunyanya, iwe unofanirwa kuwana zita rekuchengetedza mudziyo une system disk, wobva waipfuudza kune uyu murairo pamwe chete neakaundi yekuchengetedza inoenderana.

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

Kubvisa iyo System Disk Status Blob

Kuti uite izvi, sezvaungave watofungidzira, tinotora mudziyo wekuchengetera iyo dhisiki inochengeterwa, uye, zvichireva kuti blob kumagumo ine. status, pfuudza ma parameter anoenderana kune yekudzima kuraira Remove-AzStorageBlob:

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

Uye pakupedzisira, tinobvisa data disks

VM yedu inogona kuramba iine madhisiki ane data yaive yakanamatira pairi. Kana dzisiri kudiwa, tinodzidzimawo. Ngatitange tazviongorora StorageProfile yedu VM uye tsvaga chivakwa Uri. Kana paine akati wandei dhisiki, isu tinoronga kutenderera maererano URI. Kune yega yega URI, isu tinowana inoenderana yekuchengetedza account tichishandisa Get-AzStorageAccount. Wobva wadzvanya iyo yekuchengetedza URI kuti uburitse iro raunoda blob zita uye ripfuure kune yekudzima rairo Remove-AzStorageBlob pamwe chete neakaundi yekuchengetedza. Izvi ndizvo zvazvichaita senge mukodhi:

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

Uye zvino "tasvika kumagumo anofadza!" Iye zvino tinoda kuunganidza imwe chete kubva kune izvi zvimedu. Munyori ane mutsa Adam Bertram akasangana nevashandisi pakati uye akazviita iye pachake. Heino chinongedzo kune yekupedzisira script inonzi Bvisa-AzrVirtualMachine.ps1:

β†’ GitHub

Ndinovimba unowana aya matipi anoshanda anobatsira mukuchengetedza iwe kushanda nesimba, nguva, uye mari paunenge uchishanda neAzure VMs.

Source: www.habr.com

Voeg