Gyara da share Azure VMs ta amfani da PowerShell

Yin amfani da PowerShell, injiniyoyi da masu kula da IT sun sami nasarar sarrafa ayyuka daban-daban yayin aiki ba kawai tare da kan-gida ba, har ma tare da kayan aikin girgije, musamman tare da Azure. A wasu lokuta, aiki ta hanyar PowerShell ya fi dacewa da sauri fiye da aiki ta hanyar tashar Azure. Godiya ga yanayin giciye, ana iya amfani da PowerShell akan kowane tsarin aiki.

Ko kuna gudanar da Ubuntu, Red Hat, ko Windows, PowerShell na iya taimaka muku sarrafa albarkatun girgijen ku. Amfani da module Azure PowerShell, alal misali, zaku iya saita kowane kaddarorin injina.

A cikin wannan labarin, za mu dubi yadda za ku iya amfani da PowerShell don canza girman VM a cikin girgijen Azure, da kuma share VM da abubuwan da ke da alaƙa.

Gyara da share Azure VMs ta amfani da PowerShell

Muhimmin! Kar ka manta da shafa hannunka da sanitizer don shirya don aiki:

  • Kuna buƙatar tsari Azure PowerShell Module - za a iya sauke shi daga PowerShell Gallery tare da umarnin Install-Module Az.
  • Kuna buƙatar tantancewa a cikin girgijen Azure inda injin kama-da-wane ke gudana ta hanyar aiwatar da umarnin Connect-AzAccount.

Da farko, bari mu ƙirƙiri rubutun da zai canza girman Azure VM. Bari mu buɗe lambar VS kuma mu adana sabon rubutun PowerShell da ake kira Resize-AzVirtualMachine.ps1 - za mu ƙara guntun lamba gare shi yayin da misalin ke ci gaba.

Muna buƙatar masu girma dabam na VM da ke akwai

Kafin ku canza girman VM, kuna buƙatar gano menene girman da aka yarda da su don injunan kama-da-wane a cikin girgijen Azure. Don yin wannan kuna buƙatar gudanar da umarni Get-AzVMSize.

Don haka ga injin kama-da-wane devm01 daga rukunin albarkatun dev Muna buƙatar duk masu girma dabam masu yiwuwa:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(A cikin matsalolin gaske, ba shakka, maimakon ResourceGroupName=dev и VMName=devvm01 za ku ƙayyade ƙimar ku don waɗannan sigogi.)

Umurnin zai dawo da wani abu kamar haka:

Gyara da share Azure VMs ta amfani da PowerShell

Waɗannan zaɓuɓɓukan girman duka ne waɗanda za'a iya saita don injin kama-da-wane.

Mu gyara girman motar

Misali, za mu canza girman zuwa sabon girman Standard_B1ls - shi ne a farkon wuri a kan jerin a sama. (A cikin aikace-aikacen rayuwa ta ainihi, ba shakka, kuna zaɓar kowane girman da kuke buƙata.)

  1. Da farko amfani da umarnin Get-AzVM muna samun bayanai game da abinmu (na'ura mai kama da hoto) ta hanyar adana shi a cikin ma'auni $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Sa'an nan kuma mu dauki kayan daga wannan abu .HardwareProfile.VmSize kuma saita sabon ƙimar da ake so:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Kuma yanzu muna aiwatar da umarnin sabunta VM kawai - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Muna tabbatar da cewa komai ya tafi daidai - don yin wannan, muna sake neman bayani game da abinmu kuma mu kalli kadarorin $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Idan mun gani a can Standard_B1ls - wannan yana nufin komai yana cikin tsari, an canza girman motar. Kuna iya ci gaba da haɓaka nasarar ku ta hanyar canza girman VM da yawa a lokaci ɗaya ta amfani da tsararru.

Me game da share VM a cikin Azure?

Tare da gogewa, ba komai ba ne mai sauƙi da sauƙi kamar yadda ake iya gani. Bayan haka, wajibi ne a cire wasu albarkatun da ke da alaƙa da wannan na'ura, ciki har da:

  • Kwantenan ajiyar kayan bincike na boot
  • Hanyoyin sadarwa na hanyar sadarwa
  • Adireshin IP na jama'a
  • Tsarin faifan tsarin da toshe inda aka adana matsayinsa
  • Fayilolin bayanai

Saboda haka, za mu ƙirƙiri aiki kuma mu kira shi Remove-AzrVirtualMachine - kuma zai share ba kawai Azure VM ba, har ma duk abubuwan da ke sama.

Muna tafiya daidaitaccen hanya kuma mu fara samun kayanmu (VM) ta amfani da umarnin Get-AzVm. Misali, bari ya zama mota WINSRV19 daga rukunin albarkatun MyTestVMs.

Bari mu ajiye wannan abu tare da duk kaddarorinsa zuwa ma'auni $vm:

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

Cire akwati tare da fayilolin bincike na boot

Lokacin ƙirƙirar VM a cikin Azure, ana kuma buƙatar mai amfani da ya ƙirƙiri akwati don adana abubuwan gano boot (Boot diagnostics kwandon), ta yadda idan an sami matsala tare da booting, akwai wani abu da za a juya zuwa ga gyara matsala. Koyaya, lokacin da aka share VM, ana barin wannan kwandon don ci gaba da wanzuwar rashin amfani. Mu gyara wannan lamarin.

  1. Da farko, bari mu gano wane asusun ajiyar wannan kwandon yake - don wannan muna buƙatar nemo kayan storageUri a cikin hanjin abu DiagnosticsProfile VM mu. Don wannan ina amfani da wannan magana ta yau da kullun:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Yanzu kuna buƙatar nemo sunan kwandon, kuma don wannan kuna buƙatar samun ID na VM ta amfani da umarnin 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. Bayan haka, muna samun sunan rukunin albarkatun da kwantena ya ke:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Kuma yanzu muna da duk abin da muke bukata don share akwati tare da umarnin Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Cire VM

Yanzu bari mu goge injin kama-da-wane da kanta, tunda mun riga mun ƙirƙiri mai canzawa $vm don abin da ya dace. To, bari mu gudanar da umurnin Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Cire hanyar sadarwa ta hanyar sadarwa da adireshin IP na jama'a

VM ɗinmu har yanzu yana da ɗaya (ko ma da yawa) hanyoyin sadarwa na cibiyar sadarwa (NICs) - don cire su a matsayin waɗanda ba dole ba ne, bari mu shiga cikin kayan. NetworkInterfaces Abu na VM mu kuma share NIC tare da umarnin Remove-AzNetworkInterface. Idan akwai hanyar sadarwa fiye da ɗaya, muna amfani da madauki. A lokaci guda, ga kowane NIC za mu duba kadarorin IpConfiguration don sanin ko dubawar yana da adireshin IP na jama'a. Idan an sami ɗaya, za mu cire shi tare da umarni Remove-AzPublicIpAddress.

Anan akwai misalin irin wannan lambar, inda muke duba duk NICs a cikin madauki, share su, kuma bincika idan akwai IP na jama'a. Idan akwai, to ku rarraba kayan PublicIpAddress, nemo sunan madaidaicin hanya ta ID kuma share shi:


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

Cire faifan tsarin

Disk ɗin OS ɗin toshe ne, wanda akwai umarnin share shi Remove-AzStorageBlob - amma kafin aiwatar da shi, kuna buƙatar saita ƙimar da ake buƙata don sigoginsa. Don yin wannan, musamman, kuna buƙatar samun sunan kwandon ajiyar da ke ɗauke da faifan tsarin, sannan ku wuce shi zuwa wannan umarni tare da asusun ajiya daidai.

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

Cire Tsarin Halin Disk Blob

Don yin wannan, kamar yadda wataƙila kun riga kuka yi tsammani, muna ɗaukar kwandon ajiya wanda aka adana wannan faifan, kuma, yana nuna cewa ɓangarorin a ƙarshen ya ƙunshi. status, wuce madaidaitan sigogi zuwa umarnin sharewa Remove-AzStorageBlob:

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

Kuma a ƙarshe, muna cire faifan bayanai

Har yanzu VM ɗin mu na iya samun fayafai tare da bayanan da aka makala da shi. Idan ba a buƙata, mu ma za mu share su. Bari mu fara tantance shi StorageProfile VM mu kuma nemo kayan Uri. Idan akwai faifai da yawa, muna tsara zagayowar bisa ga URI. Ga kowane URI, za mu sami madaidaicin asusun ajiya ta amfani da shi Get-AzStorageAccount. Sa'an nan kuma rarraba URI na ajiya don cire sunan da ake so kuma a wuce shi zuwa umurnin sharewa Remove-AzStorageBlob tare da asusun ajiya. Wannan shi ne abin da zai yi kama da code:

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

Kuma yanzu "mun kai ƙarshen farin ciki!" Yanzu muna bukatar mu tattara guda ɗaya daga duk waɗannan ɓangarorin. Mawallafin kirki Adam Bertram ya sadu da masu amfani da rabi kuma ya yi da kansa. Ga hanyar haɗi zuwa rubutun ƙarshe da ake kira Cire-AzrVirtualMachine.ps1:

GitHub

Ina fatan waɗannan shawarwari masu amfani zasu taimaka wajen ceton ku ƙoƙari, lokaci, da kuɗi lokacin aiki tare da Azure VMs.

source: www.habr.com

Add a comment