Te whakarereke me te whakakore i nga VM Azure ma te whakamahi i te PowerShell

Ma te whakamahi i te PowerShell, ka angitu nga miihini me nga kaiwhakahaere IT ki te whakaaunoa i nga momo mahi i te wa e mahi ana ehara i te waahi-whare anake, engari me nga hanganga kapua, ina koa me Azure. I etahi wa, ko te mahi ma PowerShell he pai ake, he tere ake i te mahi ma te tomokanga Azure. He mihi ki tona ahua whakawhiti, ka taea te whakamahi a PowerShell ki runga i tetahi punaha whakahaere.

Ahakoa kei te whakahaere koe i te Ubuntu, Red Hat, Windows ranei, ka taea e PowerShell te awhina i a koe ki te whakahaere i o rauemi kapua. Te whakamahi i te kōwae Azure PowerShell, hei tauira, ka taea e koe te whakarite i nga ahuatanga o nga miihini mariko.

I roto i tenei tuhinga, ka titiro tatou me pehea e taea ai e koe te whakamahi i te PowerShell ki te whakarereke i te rahi o te VM i roto i te kapua Azure, me te whakakore i te VM me ona taonga e hono ana.

Te whakarereke me te whakakore i nga VM Azure ma te whakamahi i te PowerShell

Mea nui! Kaua e wareware ki te horoi i o ringaringa ki te horoi horoi hei whakarite mo te mahi:

  • Ka hiahia koe ki tetahi kōwae Kōwae Azure PowerShell - ka taea te tango mai i te Taiwhanga PowerShell me te whakahau Install-Module Az.
  • Me whakamotuhēhē koe i roto i te kapua Azure kei te whakahaerehia te miihini mariko ma te whakahaere i te whakahau Connect-AzAccount.

Tuatahi, me hanga he tuhinga hei whakarereke i te Azure VM. Whakatuwheratia te Waehere VS ka tiakina he tuhinga PowerShell hou e kiia nei Hurihia-AzVirtualMachine.ps1 — ka taapirihia e matou etahi waahanga waehere ki a ia ka haere tonu te tauira.

Ka tono matou i nga rahinga VM e waatea ana

I mua i to whakarereke i te rahi o te VM, me mohio koe he aha nga rahi e manakohia ana mo nga miihini mariko i roto i te kapua Azure. Ki te mahi i tenei me whakahaere e koe te whakahau Get-AzVMSize.

Na mo te miihini mariko devvm01 mai i te roopu rauemi dev Ka tono matou i nga rahi katoa e whakaaetia ana:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(I roto i nga raruraru tino, o te akoranga, hei utu mo ResourceGroupName=dev и VMName=devvm01 ka tohua e koe au ake uara mo enei tawhā.)

Ka hoki mai te whakahau penei:

Te whakarereke me te whakakore i nga VM Azure ma te whakamahi i te PowerShell

Ko enei katoa nga whiringa rahi ka taea te whakarite mo tetahi miihini mariko.

Me whakarereke te rahi o te motuka

Hei tauira, ka huri tatou ki te rahi hou Paerewa_B1ls - ko ia i te wahi tuatahi i runga i te rarangi o runga. (I roto i nga tono tuuturu, he pono, ka tohua e koe te rahi e hiahia ana koe.)

  1. Tuatahi te whakamahi i te whakahau Get-AzVM ka whiwhi korero mo ta maatau mea (miihini mariko) ma te penapena i roto i te taurangi $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Na ka tangohia e matou te taonga mai i tenei mea .HardwareProfile.VmSize ka tautuhi i te uara hou e hiahiatia ana:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Na inaianei ka mahia e matou te whakahau whakahou VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Ka whakarite matou i pai nga mea katoa - ki te mahi i tenei, ka tono ano matou i nga korero mo ta matou mea me te titiro ki te rawa $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Ki te kite tatou i reira Paerewa_B1ls - ko te tikanga kua pai nga mea katoa, kua rereke te rahi o te motuka. Ka taea e koe te haere whakamua me te hanga i runga i to angitu ma te whakarereke i te maha o nga VM i te wa kotahi ma te whakamahi i te huinga.

Me pehea te whakakore i te VM i Azure?

Ma te whakakore, kaore nga mea katoa i te ngawari me te ngawari ki te ahua. I muri i nga mea katoa, me tango etahi rauemi e pa ana ki tenei miihini, tae atu ki:

  • Whakaara i nga ipu rokiroki
  • Hononga whatunga
  • Wāhitau IP tūmatanui
  • Kopae punaha me te pupuhi kei te waahi e rongoa ai tona mana
  • Kopae Raraunga

Na reira, ka hangaia e matou he mahi ka karangahia Remove-AzrVirtualMachine - a ka whakakorehia te Azure VM anake, engari ko nga mea katoa o runga ake nei.

Ka haere matou i te huarahi paerewa ka tiki tuatahi i ta maatau mea (VM) ma te whakamahi i te whakahau Get-AzVm. Hei tauira, waiho hei waka WINSRV19 mai i te roopu rauemi MyTestVMs.

Me tiaki tenei ahanoa me ona ahuatanga katoa ki tetahi taurangi $vm:

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

Te tango i te ipu me nga konae tātaritanga whawhai

I te wa e hanga ana he VM ki Azure, ka tonohia ano te kaiwhakamahi ki te hanga i tetahi ipu mo te penapena i nga tātaritanga boot (puera diagnostics ipu), na mena he raru ki te booting, he mea hei huri ki te rapu raru. Heoi, ka mukua te VM, ka waiho tenei ipu ki te haere tonu i tona oranga kore. Me whakatika tenei ahuatanga.

  1. Tuatahi, me rapu tatou ko wai te putea rokiroki no tenei ipu - mo tenei me kimihia te rawa storageUri i roto i nga whekau o te mea DiagnosticsProfile to tatou VM. Mo tenei ka whakamahi ahau i tenei korero auau:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Inaianei me rapu koe i te ingoa o te ipu, a mo tenei ka hiahia koe ki te tiki i te VM ID ma te whakamahi i te whakahau 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. Whai muri, ka whiwhi tatou i te ingoa o te roopu rauemi no reira te ipu:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Na inaianei kei a maatau nga mea katoa hei whakakore i te ipu me te whakahau Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Te tango i te VM

Inaianei ka whakakorea e tatou te miihini mariko ake, na te mea kua hanga e matou he taurangi $vm mo te ahanoa e rite ana. Kaati, me whakahaere te whakahau Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Te tango i te atanga whatunga me te wāhitau IP tūmatanui

Kei a maatau VM tetahi (he maha ranei) nga hononga whatunga (NIC) - ki te tango i aua mea kaore e tika, me haere ma te taonga NetworkInterfaces to tatou ahanoa VM me te whakakore i te NIC me te whakahau Remove-AzNetworkInterface. Mena he nui ake i te kotahi te atanga whatunga, ka whakamahia e matou he kopae. I te wa ano, mo ia NIC ka tirohia e matou nga rawa IpConfiguration ki te whakatau mehemea he wahitau IP tūmatanui te atanga. Mena ka kitea tetahi, ka tangohia e matou me te whakahau Remove-AzPublicIpAddress.

Anei tetahi tauira o taua waehere noa, ka tirohia e matou nga NIC katoa i roto i te kohanga, ka mukua, ka tirohia mena he IP a te iwi. Mena kei reira, katahi ka poroporoaki i te taonga PublicIpAddress, kimihia te ingoa o te rauemi e rite ana ma te ID ka mukua:


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

Te tango i te kōpae pūnaha

He pupuhi te kōpae OS, he whakahau kia mukua Remove-AzStorageBlob - engari i mua i te mahi, me whakarite e koe nga uara e hiahiatia ana mo ona tawhā. Ki te mahi i tenei, ina koa, me tiki e koe te ingoa o te ipu rokiroki kei roto te kōpae punaha, katahi ka tukuna ki tenei whakahau me te putea rokiroki e rite ana.

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

Te tango i te Puka Tūnga Kōpae Pūnaha

Ki te mahi i tenei, i te mea kua whakaarohia e koe, ka tangohia e matou te ipu rokiroki kei roto i tenei kōpae, me te kii kei roto te putunga i te mutunga. status, tukuna nga tawhā e hāngai ana ki te tono muku Remove-AzStorageBlob:

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

Ka mutu, ka tangohia e matou nga kopae raraunga

Ka taea tonu e to tatou VM nga kōpae me nga raraunga kua piri ki a ia. Ki te kore e hiahiatia, ka whakakorea ano e matou. Me poroporoaki i te tuatahi StorageProfile to tatou VM ka kitea te taonga Uri. Mena he maha nga kopae, ka whakarite maatau i tetahi huringa kia rite ki URI. Mo ia URI, ka kitea e matou te putea rokiroki e tika ana ma te whakamahi Get-AzStorageAccount. Na ka poroporoaki i te URI rokiroki ki te tango i te ingoa pupuhi e hiahiatia ana ka tukuna ki te tono muku Remove-AzStorageBlob me te putea rokiroki. Koinei te ahua o te waehere:

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 inaianei "kua tae matou ki te mutunga koa!" Inaianei me whakaemi tatou i tetahi katoa mai i enei kongakonga katoa. Ko te kaituhi pai a Adam Bertram i tutaki ki nga kaiwhakamahi i te haurua o te waa ka mahia e ia. Anei he hononga ki te tuhinga whakamutunga e kiia nei Tango-AzrVirtualMachine.ps1:

GitHub

Te ti'aturi nei au ka kitea e koe enei tohutohu whaihua hei whakaora i a koe i te whakapau kaha, te wa, me te moni i a koe e mahi tahi ana me Azure VMs.

Source: will.com

Tāpiri i te kōrero