Wax ka beddelka iyo tirtiridda Azure VM-yada iyadoo la adeegsanayo PowerShell

Isticmaalka PowerShell, injineerada iyo maamulayaasha IT-ga ayaa si guul leh u farsameeya hawlo kala duwan marka ay ka shaqeynayaan oo kaliya maaha gudaha dhismaha, laakiin sidoo kale kaabayaasha daruuraha, gaar ahaan Azure. Xaaladaha qaarkood, ka shaqaynta PowerShell aad ayay uga sahlan tahay ugana dhaqso badan tahay ka shaqaynta marinka Azure. Thanks to dabeecadeeda iskutallaabta ah, PowerShell waxaa loo isticmaali karaa nidaam kasta oo hawlgal ah.

Haddii aad ku socoto Ubuntu, Koofiyada Cas, ama Windows, PowerShell waxay kaa caawin kartaa inaad xakamayso ilahaaga daruuraha. Isticmaalka moduleka Azure PowerShell, tusaale ahaan, waxaad samayn kartaa wax kasta oo sifooyin ah ee mashiinada farsamada.

Maqaalkan, waxaan ku eegi doonaa sida aad u isticmaali karto PowerShell si aad u cabbirto VM ee daruuraha Azure, iyo sidoo kale tirtirto VM iyo walxaha la xidhiidha.

Wax ka beddelka iyo tirtiridda Azure VM-yada iyadoo la adeegsanayo PowerShell

Muhiim! Ha iloobin inaad gacmahaaga ku tirtirto nadiifiyaha si aad shaqada isugu diyaariso:

  • Waxaad u baahan doontaa module Azure PowerShell Module - waxaa laga soo dejisan karaa PowerShell Gallery iyadoo la raacayo amarka Install-Module Az.
  • Waxaad u baahan tahay inaad ku caddeyso daruuraha Azure halkaasoo mashiinka farsamada gacanta uu ku shaqeynayo adiga oo socodsiinaya amarka Connect-AzAccount.

Marka hore, aan abuurno qoraal wax ka beddeli doona Azure VM. Aan furno VS Code oo aan kaydino qoraal cusub oo PowerShell ah oo la yiraahdo Cabbirka-AzVirtualMachine.ps1 - Waxaan ku dari doonaa qaybo ka mid ah koodka marka tusaaluhu sii socdo.

Waxaan codsaneynaa cabbirrada VM ee jira

Kahor intaadan bedelin cabbirka VM, waxaad u baahan tahay inaad ogaato waxa cabbirrada la aqbali karo ay u yihiin mashiinnada farsamada ee daruuraha Azure. Si aad tan u sameyso waxaad u baahan tahay inaad socodsiiso amarka Get-AzVMSize.

Markaa mashiinka farsamada devvm01 kooxda kheyraadka dev Waxaan codsaneynaa dhammaan cabbirrada la aqbali karo oo dhan:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(Dhibaatooyinka dhabta ah, dabcan, halkii ResourceGroupName=dev ΠΈ VMName=devvm01 waxaad u cayimi doontaa qiyamkaga gaarka ah ee xuduudahan.)

Amarku wuxuu soo celin doonaa wax sidan oo kale ah:

Wax ka beddelka iyo tirtiridda Azure VM-yada iyadoo la adeegsanayo PowerShell

Kuwani waa dhammaan xulashooyinka cabbirka suurtagalka ah ee loo dejin karo mashiinka farsamada ee la bixiyay.

Aynu cabbirno baabuurka

Tusaale ahaan, waxaan u cabbiri doonnaa cabbir cusub Heerka_B1ls - wuxuu ku jiraa kaalinta koowaad ee liiska kore. (Codsiyada nolosha dhabta ah, dabcan, waxaad dooranaysaa cabbir kasta oo aad u baahan tahay.)

  1. Marka hore adoo isticmaalaya amarka Get-AzVM Waxaan helnaa macluumaadka ku saabsan shaygayaga (mashiinka Virtual) anagoo ku kaydinayna doorsoome $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. Kadibna waxaan ka qaadnaa hantida shaygan .HardwareProfile.VmSize oo deji qiimaha cusub ee la rabo:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Oo hadda waxaan si fudud u fulinaa amarka cusboonaysiinta VM - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. Waxaan hubineynaa in wax waliba si fiican u dhaceen - si aan tan u sameyno, waxaan mar kale codsaneynaa macluumaadka ku saabsan shayga oo aan eegno hantida $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

Haddaynu halkaa ku aragno Heerka_B1ls - taasi waxay ka dhigan tahay in wax walba ay hagaagsan yihiin, cabbirka baabuurka waa la bedelay. Waad sii socon kartaa oo aad ku dhisi kartaa guushaada adiga oo dib u cabbiraya dhowr VM-yada hal mar adiga oo isticmaalaya array.

Ka warran tirtirida VM gudaha Azure?

Marka la tirtiro, wax walba maaha kuwo fudud oo toosan sida ay u muuqato. Ka dib oo dhan, waxaa lagama maarmaan ah in meesha laga saaro tiro kheyraad ah oo ku xiran mashiinkan, oo ay ku jiraan:

  • Boot ogaanshaha weelasha kaydinta
  • Xargaha shabakada
  • Cinwaannada IP-ga ee dadweynaha
  • Nidaamka diskka iyo blob meesha xaaladdeeda lagu kaydiyo
  • Saxanadaha xogta

Sidaa darteed, waxaan abuuri doonaa shaqo oo wac Remove-AzrVirtualMachine - oo ma tirtiri doonto Azure VM oo keliya, laakiin sidoo kale dhammaan kuwa kor ku xusan.

Waxaan mareynaa habka caadiga ah oo marka hore hel shaygayaga (VM) annagoo adeegsanayna amarka Get-AzVm. Tusaale ahaan, ha noqdo baabuur WINSRV19 kooxda kheyraadka MyTestVMs.

Aan u dhigno shaygan oo ay la socdaan dhammaan hantidiisa doorsoome $vm:

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

Ka saarida weelka leh faylalka ogaanshaha boot

Marka la abuurayo VM gudaha Azure, isticmaaluhu waxa kale oo laga codsanayaa inuu abuuro weel lagu kaydiyo ogaanshaha boot (boot diagnostics weelka), si haddii ay jiraan dhibaatooyin la xidhiidha booting, waxaa jira wax loo jeedsado cilad-baadhista. Si kastaba ha ahaatee, marka VM la tirtiro, weelkan waa laga tagay si uu u sii wado jiritaankiisa hadda aan ujeeddo lahayn. Aan hagaajinno xaaladdan.

  1. Marka hore, aynu ogaano akoonka kaydka ah ee weelkani ka tirsan yahay - tan waxaan u baahanahay inaan helno guriga storageUri mindhicirka shayga DiagnosticsProfile VM-keena. Tan waxaan u isticmaalaa odhaahdan caadiga ah:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. Hadda waxaad u baahan tahay inaad ogaato magaca weelka, taasna waxaad u baahan tahay inaad hesho aqoonsiga VM adoo isticmaalaya amarka 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. Marka xigta, waxaan helnaa magaca kooxda kheyraadka ee weelku ka tirsan yahay:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. Oo hadda waxaan haynaa wax kasta oo aan u baahanahay si aan u tirtirno weelka amarka Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

Ka saarida VM-ka

Hadda aan tirtirno mashiinka farsamada laftiisa, maadaama aan horey u abuurnay doorsoome $vm shayga u dhigma. Hagaag, aynu maamulno amarka Remove-AzVm:

$null = $vm | Remove-AzVM -Force

Ka saarida is dhexgalka shabakada iyo ciwaanka IP-ga ee dadweynaha

VM-yagu wali waxa uu leeyahay hal (ama xitaa dhowr) shabakad isku xidha (NICs) - si aan uga saarno iyaga oo aan loo baahnayn, aynu dhex marno guriga NetworkInterfaces Shaygayaga VM oo tirtir NIC amarka Remove-AzNetworkInterface. Haddii ay jiraan wax ka badan hal shabakad, waxaan isticmaalnaa loop. Isla mar ahaantaana, NIC kasta waxaan hubin doonaa guriga IpConfiguration si loo go'aamiyo in interface-ku leeyahay cinwaanka IP-ga dadweynaha. Haddii mid la helo, waxaan ka saareynaa amarka Remove-AzPublicIpAddress.

Halkan waxaa ah tusaale koodka noocaas ah, halkaas oo aan ku eegno dhammaan NIC-yada wareegga, tirtirto, oo aan hubinno haddii uu jiro IP-ga guud. Haddii ay jirto, markaas kala saar hantida PublicIpAddress, ku hel magaca kheyraadka u dhigma aqoonsiga oo tirtir:


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

Ka saarida diskka nidaamka

Disk-ga OS-gu waa bulo, kaas oo uu jiro amar lagu tirtirayo Remove-AzStorageBlob - laakiin ka hor inta aanad fulin, waxaad u baahan doontaa inaad dejiso qiyamka loo baahan yahay ee xuduudaha. Si arrintan loo sameeyo, gaar ahaan, waxaad u baahan tahay inaad hesho magaca weelka kaydinta oo ay ku jiraan diskka nidaamka, ka dibna u gudbi amarkan oo ay la socdaan koontada kaydinta ee u dhiganta.

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

Ka saarida nidaamka Disk Status Blob

Si tan loo sameeyo, sida aad u badan tahay inaad horeba u qiyaastay, waxaanu qaadnaa weelka kaydinta kaas oo disk-gan lagu kaydiyo, oo tilmaamaya in boobka dhamaadka uu ka kooban yahay. status, u gudbi xuduudaha u dhigma amarka tirtirka Remove-AzStorageBlob:

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

Ugu dambeyntiina, waxaan ka saareynaa saxanadaha xogta

VM-kayagu wali waxa uu lahaan kara saxanadaha xogta ku xidhan. Haddii aan loo baahnayn, sidoo kale waanu tirtiri doonaa. Marka hore aan kala saarno StorageProfile VM-keena oo hel hantida Uri. Haddii ay jiraan dhowr saxanadood, waxaan habeyneynaa wareeg si waafaqsan URI. URI kasta, waxaan ka heli doonaa xisaabta kaydinta u dhiganta annagoo isticmaalna Get-AzStorageAccount. Kadibna kala saar URI-ga kaydinta si aad u soo saarto magaca blob ee aad rabto oo aad u gudbiso amarka tirtirka Remove-AzStorageBlob oo ay la socoto akoon kayd ah. Tani waa sida ay u ekaan doonto koodka:

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

Oo hadda "waxaan gaadhnay dhammaadkii farxadda lahaa!" Hadda waxaan u baahannahay inaan ka soo ururinno dhammaan jajabyadaas oo dhan. Qoraaga naxariista leh ee Adam Bertram ayaa la kulmay isticmaalayaasha kala badh oo uu isagu sameeyay. Halkan waxaa ah xiriirinta qoraalka u dambeeya ee la yiraahdo Ka saar-AzrVirtualMachine.ps1:

β†’ GitHub

Waxaan rajeynayaa inaad ka hesho talooyinkan wax ku oolka ah ee ku caawinaya badbaadinta dadaalka, waqtiga, iyo lacagta markaad la shaqeyneyso Azure VMs.

Source: www.habr.com

Add a comment