Ag atharrachadh agus a’ cuir às do Azure VMs a’ cleachdadh PowerShell

A’ cleachdadh PowerShell, bidh innleadairean agus luchd-rianachd IT gu soirbheachail a’ dèanamh fèin-ghluasad air diofar ghnìomhan nuair a bhios iad ag obair chan ann a-mhàin san togalach, ach cuideachd le bun-structaran sgòthan, gu sònraichte le Azure. Ann an cuid de chùisean, tha e tòrr nas goireasaiche agus nas luaithe a bhith ag obair tro PowerShell na bhith ag obair tro portal Azure. Taing don nàdar tar-àrd-ùrlar aige, faodar PowerShell a chleachdadh air siostam obrachaidh sam bith.

Co-dhiù a tha thu a’ ruith Ubuntu, Red Hat, no Windows, faodaidh PowerShell do chuideachadh le smachd a chumail air na goireasan sgòthan agad. A 'cleachdadh a' mhodail Azure PowerShell, mar eisimpleir, faodaidh tu feartan sam bith de innealan brìgheil a shuidheachadh.

San artaigil seo, seallaidh sinn ri mar as urrainn dhut PowerShell a chleachdadh gus VM ath-mheudachadh ann an sgòth Azure, a bharrachd air cuir às do VM agus na nithean co-cheangailte ris.

Ag atharrachadh agus a’ cuir às do Azure VMs a’ cleachdadh PowerShell

Cudromach! Na dì-chuimhnich do làmhan a ghlanadh le inneal-glanaidh gus ullachadh airson obair:

  • Bidh feum agad air modal Modal Azure PowerShell - faodar a luchdachadh sìos bho PowerShell Gallery leis an àithne Install-Module Az.
  • Feumaidh tu dearbhadh anns an sgòth Azure far a bheil an inneal brìgheil a ’ruith le bhith a’ ruith an àithne Connect-AzAccount.

An toiseach, cruthaichidh sinn sgriobt a nì ath-mheudachadh Azure VM. Nach fosgail sinn Còd VS agus sàbhail sinn sgriobt PowerShell ùr ris an canar Ath-mheudachadh-AzVirtualMachine.ps1 - cuiridh sinn pìosan còd ris mar a thèid an eisimpleir air adhart.

Bidh sinn ag iarraidh na meudan VM a tha rim faighinn

Mus atharraich thu meud VM, feumaidh tu faighinn a-mach dè na meudan iomchaidh airson innealan brìgheil ann an sgòth Azure. Gus seo a dhèanamh feumaidh tu an àithne a ruith Get-AzVMSize.

Mar sin airson an inneal brìgheil devm01 bhon bhuidheann ghoireasan dev Bidh sinn ag iarraidh gach meud iomchaidh:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Ann an fìor dhuilgheadasan, gu dearbh, an àite ResourceGroupName=dev и VMName=devvm01 sònraichidh tu na luachan agad fhèin airson na paramadairean sin.)

Tillidh an àithne rudeigin mar seo:

Ag atharrachadh agus a’ cuir às do Azure VMs a’ cleachdadh PowerShell

Tha iad sin uile nan roghainnean meud comasach a dh’ fhaodar a shuidheachadh airson inneal brìgheil sònraichte.

Leig leinn an càr ath-mheudachadh

Mar eisimpleir, bidh sinn ag atharrachadh meud gu meud ùr Coitcheann_B1ls - tha e sa chiad àite air an liosta gu h-àrd. (Ann an tagraidhean fìor, gu dearbh, bidh thu a’ taghadh ge bith dè am meud a tha a dhìth ort.)

  1. An toiseach a 'cleachdadh an àithne Get-AzVM gheibh sinn fiosrachadh mun nì againn (inneal mas-fhìor) le bhith ga stòradh ann an caochladair $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. An uairsin bheir sinn an t-seilbh bhon nì seo .HardwareProfile.VmSize agus suidhich an luach ùr a tha thu ag iarraidh:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Agus a-nis bidh sinn dìreach a’ cur an gnìomh an àithne ùrachadh VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Bidh sinn a’ dèanamh cinnteach gun deach a h-uile càil gu math - gus seo a dhèanamh, bidh sinn a-rithist ag iarraidh fiosrachadh mun nì againn agus a’ coimhead air an togalach $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Ma chì sinn ann Coitcheann_B1ls - tha sin a 'ciallachadh gu bheil a h-uile dad ann an òrdugh, tha meud a' chàir air atharrachadh. Faodaidh tu a dhol nas fhaide agus togail air do shoirbheachas le bhith ag ath-mheudachadh grunn VM aig an aon àm a’ cleachdadh raon.

Dè mu dheidhinn cuir às do VM ann an Azure?

Le sguabadh às, chan eil a h-uile dad cho sìmplidh agus cho sìmplidh ‘s a dh’ fhaodadh e a bhith. Às deidh na h-uile, feumar grunn ghoireasan co-cheangailte ris an inneal seo a thoirt air falbh, nam measg:

  • Innealan stòraidh boot diagnosachd
  • Eadar-aghaidh lìonra
  • Seòlaidhean IP poblach
  • Diosg siostam agus blob far a bheil an inbhe aice air a stòradh
  • Diosg dàta

Mar sin, cruthaichidh sinn gnìomh agus canaidh sinn e Remove-AzrVirtualMachine - agus sguabaidh e às chan ann a-mhàin Azure VM, ach cuideachd a h-uile rud gu h-àrd.

Bidh sinn a’ dol an dòigh àbhaisteach agus an-toiseach a’ faighinn ar nì (VM) a’ cleachdadh an àithne Get-AzVm. Mar eisimpleir, leig leis gur e càr a th’ ann WINSRV19 bhon bhuidheann ghoireasan MyTestVMs.

Sàbhailidh sinn an nì seo còmhla ris na feartan aige gu caochladair $vm:

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

Thoir air falbh an soitheach le faidhlichean boot diagnostic

Nuair a chruthaicheas iad VM ann an Azure, thathar ag iarraidh air an neach-cleachdaidh cuideachd inneal a chruthachadh airson diagnosachd bròg a stòradh (soitheach diagnosachd boot), gus am bi duilgheadasan ann le bròg, gu bheil rudeigin ri tionndadh airson fuasgladh cheistean. Ach, nuair a thèid an VM a dhubhadh às, tha an soitheach seo air fhàgail gus a bhith beò gun adhbhar a-nis. Leig leinn an suidheachadh seo a cheartachadh.

  1. An toiseach, leig dhuinn faighinn a-mach dè an cunntas stòraidh a bhuineas don inneal seo - airson seo feumaidh sinn an togalach a lorg storageUri ann an innibh an nì DiagnosticsProfile ar VM. Airson seo bidh mi a’ cleachdadh an abairt àbhaisteach seo:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. A-nis feumaidh tu faighinn a-mach ainm an t-soithich, agus airson seo feumaidh tu an ID VM fhaighinn a ’cleachdadh an àithne 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. An ath rud, gheibh sinn ainm a’ bhuidheann ghoireasan dham buin an soitheach:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Agus a-nis tha a h-uile dad a dh ’fheumas sinn gus an soitheach a dhubhadh às leis an àithne Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

A 'toirt air falbh an VM

A-nis sguabaidh sinn às an inneal brìgheil fhèin, leis gu bheil sinn air caochladair a chruthachadh mu thràth $vm airson an nì co-fhreagarrach. Uill, leig leinn an àithne a ruith Remove-AzVm:

$null = $vm | Remove-AzVM -Force

A’ toirt air falbh an eadar-aghaidh lìonraidh agus seòladh IP poblach

Tha aon (no eadhon grunn) eadar-aghaidh lìonra (NICn) aig an VM againn - gus an toirt air falbh mar rud nach eil riatanach, rachamaid tron ​​​​togalach NetworkInterfaces an nì VM againn agus cuir às don NIC leis an àithne Remove-AzNetworkInterface. Ma tha barrachd air aon eadar-aghaidh lìonraidh ann, cleachdaidh sinn lùb. Aig an aon àm, airson gach NIC nì sinn sgrùdadh air an togalach IpConfiguration gus faighinn a-mach a bheil seòladh IP poblach aig an eadar-aghaidh. Ma lorgar fear, bheir sinn air falbh e leis an àithne Remove-AzPublicIpAddress.

Seo eisimpleir de chòd dìreach mar sin, far am bi sinn a’ coimhead tro na NIC gu lèir ann an lùb, gan cuir às, agus a’ dèanamh cinnteach a bheil IP poblach ann. Ma tha, dèan sgrùdadh air an togalach PublicIpAddress, lorg ainm a’ ghoireas fhreagarrach le ID agus cuir às dha:


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

A 'toirt air falbh an diosg siostam

Is e blob a th’ anns an diosc OS, agus tha àithne ann airson a sguabadh às Remove-AzStorageBlob - ach mus cuir thu an gnìomh e, feumaidh tu na luachan riatanach a shuidheachadh airson na crìochan aige. Gus seo a dhèanamh, gu sònraichte, feumaidh tu ainm an t-soithich stòraidh anns a bheil diosc an t-siostaim fhaighinn, agus an uairsin a chuir chun àithne seo còmhla ris a’ chunntas stòraidh co-fhreagarrach.

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

A' toirt air falbh an t-Siostam Inbhe Inbhe Blob

Gus seo a dhèanamh, mar a shaoileadh tu mu thràth, bidh sinn a’ toirt a’ ghobhar-stòraidh anns a bheil an diosc seo air a stòradh, agus, a’ ciallachadh gu bheil am blob aig an deireadh status, cuir seachad na paramadairean co-fhreagarrach chun an àithne sguabaidh às Remove-AzStorageBlob:

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

Agus mu dheireadh, bheir sinn air falbh na diosgan dàta

Dh’ fhaodadh diosgan a bhith aig an VM againn fhathast le dàta a bha ceangailte ris. Mura h-eil feum orra, sguabaidh sinn às iad cuideachd. Dèanamaid sgrùdadh air an toiseach StorageProfile ar VM agus lorg an togalach Uri. Ma tha grunn dhioscaichean ann, bidh sinn a’ cur cearcall air dòigh a rèir URI. Airson gach URI, lorgaidh sinn an cunntas stòraidh co-fhreagarrach a’ cleachdadh Get-AzStorageAccount. An uairsin rannsaich an URI stòraidh gus an t-ainm blob a tha thu ag iarraidh a thoirt a-mach agus cuir chun àithne sguab às Remove-AzStorageBlob còmhla ri cunntas stòraidh. Seo mar a bhiodh e coltach sa chòd:

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

Agus a-nis “tha sinn air an deireadh sona a ruighinn!” A-nis feumaidh sinn aon slàn a chruinneachadh bho na pìosan sin uile. Choinnich an t-ùghdar coibhneil Adam Bertram ris an luchd-cleachdaidh letheach slighe agus rinn e e fhèin. Seo ceangal ris an sgriobt mu dheireadh ris an canar Thoir air falbh-AzrVirtualMachine.ps1:

GitHub

Tha mi an dòchas gum bi na molaidhean practaigeach seo feumail dhut gus oidhirp, ùine agus airgead a shàbhaladh dhut nuair a bhios tu ag obair le Azure VMs.

Source: www.habr.com

Cuir beachd ann