د PowerShell په کارولو سره د Azure VMs بدلول او حذف کول

د PowerShell په کارولو سره، انجنیران او د معلوماتي ټکنالوجۍ مدیران په بریالیتوب سره مختلف کارونه اتومات کوي کله چې نه یوازې د ودانۍ سره کار کوي، بلکې د کلاوډ زیربناوو سره، په ځانګړې توګه د Azure سره. په ځینو مواردو کې، د PowerShell له لارې کار کول د Azure پورټل له لارې کار کولو په پرتله خورا اسانه او ګړندي دي. د دې کراس پلیټ فارم طبیعت څخه مننه ، پاور شیل په هر عملیاتي سیسټم کې کارول کیدی شي.

که تاسو Ubuntu، Red Hat، یا وینډوز چلوئ، PowerShell کولی شي تاسو سره ستاسو د بادل سرچینې کنټرول کې مرسته وکړي. د ماډل په کارولو سره Azure PowerShell، د مثال په توګه ، تاسو کولی شئ د مجازی ماشینونو هر ډول ملکیتونه تنظیم کړئ.

پدې مقاله کې ، موږ به وګورو چې تاسو څنګه کولی شئ په Azure کلاوډ کې د VM له اندازې بدلولو لپاره PowerShell وکاروئ ، په بیله بیا VM او د هغې اړوند توکي حذف کړئ.

د PowerShell په کارولو سره د Azure VMs بدلول او حذف کول

مهم! د کار لپاره چمتو کولو لپاره خپل لاسونه د سینیټیزر سره مسح کول مه هیروئ:

  • تاسو به یو ماډل ته اړتیا ولرئ د Azure PowerShell ماډل - دا د کمانډ سره د PowerShell ګالري څخه ډاونلوډ کیدی شي Install-Module Az.
  • تاسو اړتیا لرئ په Azure کلاوډ کې تصدیق وکړئ چیرې چې مجازی ماشین د کمانډ په چلولو سره پرمخ ځي Connect-AzAccount.

لومړی، راځئ چې یو سکریپټ جوړ کړو چې د Azure VM اندازه به بدل کړي. راځئ چې د VS کوډ خلاص کړو او یو نوی PowerShell سکریپټ خوندي کړئ چې په نوم یادیږي Resize-AzVirtualMachine.ps1 - موږ به دې ته د کوډ ټوټې اضافه کړو لکه څنګه چې مثال پرمختګ کوي.

موږ د شته VM اندازو غوښتنه کوو

مخکې لدې چې تاسو د VM اندازه بدل کړئ ، تاسو اړتیا لرئ ومومئ چې په Azure کلاوډ کې د مجازی ماشینونو لپاره د منلو وړ اندازې څه دي. د دې کولو لپاره تاسو اړتیا لرئ کمانډ چل کړئ Get-AzVMSize.

نو د مجازی ماشین لپاره devvm01 د سرچینو ګروپ څخه dev موږ د ټولو ممکنه منلو وړ اندازو غوښتنه کوو:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(په ریښتینې ستونزو کې، البته، پرځای ResourceGroupName=dev и VMName=devvm01 تاسو به د دې پیرامیټونو لپاره خپل ارزښتونه مشخص کړئ.)

قومانده به د دې په څیر یو څه بیرته راولي:

د PowerShell په کارولو سره د Azure VMs بدلول او حذف کول

دا ټول د ممکنه اندازې اختیارونه دي چې د ورکړل شوي مجازی ماشین لپاره ټاکل کیدی شي.

راځئ چې د موټر اندازه بدله کړو

د مثال په توګه، موږ به د نوي اندازې اندازه بدل کړو معياري_B1ls - هغه په ​​پورته لیست کې په لومړي ځای کې دی. (په ریښتیني ژوند غوښتنلیکونو کې، البته، تاسو هر هغه اندازه غوره کوئ چې تاسو ورته اړتیا لرئ.)

  1. لومړی د کمانډ په کارولو سره Get-AzVM موږ د خپل څیز (مجازی ماشین) په اړه معلومات په متغیر کې ذخیره کولو سره ترلاسه کوو $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. بیا موږ د دې څیز څخه ملکیت اخلو .HardwareProfile.VmSize او مطلوب نوی ارزښت ترتیب کړئ:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. او اوس موږ په ساده ډول د VM تازه کمانډ اجرا کوو - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. موږ ډاډ ترلاسه کوو چې هرڅه سم شوي - د دې کولو لپاره، موږ بیا د خپل اعتراض په اړه د معلوماتو غوښتنه کوو او ملکیت ته ګورو $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

که موږ هلته وګورو معياري_B1ls - دا پدې مانا ده چې هرڅه په ترتیب کې دي، د موټر اندازه بدله شوې. تاسو کولی شئ نور هم لاړ شئ او د یو صف په کارولو سره په یوځل کې د څو VMs اندازه کولو سره خپله بریا رامینځته کړئ.

په Azure کې د VM حذف کولو په اړه څه؟

د حذف کولو سره، هرڅه دومره ساده او مستقیم ندي لکه څنګه چې ښکاري. په هرصورت، دا اړینه ده چې د دې ماشین پورې اړوند یو شمیر سرچینې لرې کړئ، په شمول:

  • د بوټ تشخیص ذخیره کولو کانتینرونه
  • د جال انٹرفیس
  • عامه IP پتې
  • د سیسټم ډیسک او بلب چیرې چې د هغې حالت ساتل کیږي
  • ډیټا ډیسک

له همدې امله، موږ به یو فنکشن رامینځته کړو او غږ وکړو Remove-AzrVirtualMachine - او دا به نه یوازې Azure VM حذف کړي ، بلکه پورته ټول به هم حذف کړي.

موږ معیاري لارې ته ځو او لومړی د کمانډ په کارولو سره زموږ اعتراض (VM) ترلاسه کوو Get-AzVm. د مثال په توګه، اجازه راکړئ چې موټر وي WINSRV19 د سرچینو ګروپ څخه MyTestVMs.

راځئ چې دا اعتراض د دې ټولو ملکیتونو سره په یو متغیر کې خوندي کړو $vm:

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

د بوټ تشخیصی فایلونو سره کانټینر لرې کول

کله چې په Azure کې VM رامینځته کړئ ، له کارونکي څخه هم غوښتنه کیږي چې د بوټ تشخیص (بوټ تشخیص کانټینر) ذخیره کولو لپاره کانټینر رامینځته کړي ، نو که چیرې د بوټ کولو سره ستونزې شتون ولري ، نو د ستونزې حل کولو لپاره یو څه شتون لري. په هرصورت، کله چې VM حذف شي، دا کانټینر پاتې دی ترڅو خپل اوس بې هدفه شتون ته دوام ورکړي. راځئ چې دا وضعیت سم کړو.

  1. لومړی، راځئ چې معلومه کړو چې دا کانټینر د کوم ذخیرې حساب پورې اړه لري - د دې لپاره موږ اړتیا لرو ملکیت ومومئ storageUri د څيز په کولمو کې DiagnosticsProfile زموږ VM. د دې لپاره زه دا منظم بیان کاروم:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. اوس تاسو اړتیا لرئ د کانټینر نوم ومومئ ، او د دې لپاره تاسو اړتیا لرئ د کمانډ په کارولو سره VM ID ترلاسه کړئ 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. بیا، موږ د سرچینې ګروپ نوم ترلاسه کوو چې کانټینر پورې اړه لري:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. او اوس موږ هرڅه لرو چې موږ ورته اړتیا لرو د کمانډ سره کانټینر حذف کړو Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

د VM لرې کول

اوس راځئ چې مجازی ماشین پخپله حذف کړو، ځکه چې موږ دمخه یو متغیر جوړ کړی دی $vm د اړوند اعتراض لپاره. ښه، راځئ چې قومانده پرمخ بوځو Remove-AzVm:

$null = $vm | Remove-AzVM -Force

د شبکې انٹرفیس او عامه IP پته لرې کول

زموږ VM لاهم یو (یا حتی څو) شبکې انٹرفیسونه (NICs) لري - د غیر ضروري په توګه د لرې کولو لپاره ، راځئ چې ملکیت ته لاړ شو NetworkInterfaces زموږ د VM اعتراض او NIC د قوماندې سره حذف کړئ Remove-AzNetworkInterface. په هغه صورت کې چې د یوې شبکې څخه ډیر انٹرفیس شتون ولري، موږ لوپ کاروو. په ورته وخت کې، د هر NIC لپاره موږ به ملکیت وګورو IpConfiguration د دې لپاره چې وګورئ ایا انٹرفیس عامه IP پته لري. که یو وموندل شي، موږ به یې د قوماندې سره لیرې کړو Remove-AzPublicIpAddress.

دلته د داسې کوډ یوه بیلګه ده، چیرې چې موږ ټول NICs په لوپ کې ګورو، حذف یې کړئ، او وګورئ چې آیا عامه IP شتون لري. که شتون ولري، نو ملکیت پارس کړئ PublicIpAddress، د اړوندې سرچینې نوم د ID لخوا ومومئ او حذف یې کړئ:


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

د سیسټم ډیسک لرې کول

د OS ډیسک یو بلب دی، د کوم لپاره چې د حذف کولو امر شتون لري Remove-AzStorageBlob - مګر د دې اجرا کولو دمخه ، تاسو اړتیا لرئ د دې پیرامیټونو لپاره اړین ارزښتونه تنظیم کړئ. د دې کولو لپاره ، په ځانګړي توګه ، تاسو اړتیا لرئ د ذخیره کولو کانټینر نوم واخلئ چې د سیسټم ډیسک لري ، او بیا یې د اړوند ذخیره حساب سره دې کمانډ ته واستوئ.

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

د سیسټم ډیسک حالت بلب لرې کول

د دې کولو لپاره ، لکه څنګه چې تاسو شاید دمخه اټکل کړی وي ، موږ د ذخیره کولو کانټینر اخلو په کوم کې چې دا ډیسک زیرمه شوی ، او پدې معنی چې په پای کې بلب لري. statusد حذف کولو کمانډ ته اړوند پیرامیټونه انتقال کړئ Remove-AzStorageBlob:

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

او په نهایت کې ، موږ د ډیټا ډیسک لرې کوو

زموږ VM کولی شي لاهم د ډیټا سره ډیسک ولري چې ورسره وصل شوي. که اړتیا نه وي، موږ به یې هم حذف کړو. راځئ چې لومړی یې تحلیل کړو StorageProfile زموږ VM او ملکیت ومومئ Uri. که چیرې ډیری ډیسکونه شتون ولري ، موږ د دې مطابق یو سایټ تنظیم کوو URI. د هر URI لپاره، موږ به د ورته ذخیره حساب په کارولو سره ومومئ Get-AzStorageAccount. بیا د مطلوب بلب نوم استخراج لپاره د ذخیره کولو URI پارس کړئ او د حذف کمانډ ته یې واستوئ Remove-AzStorageBlob د ذخیره کولو حساب سره. دا هغه څه دي چې دا به په کوډ کې ښکاري:

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

او اوس "موږ خوشحاله پای ته رسیدلي یو!" اوس موږ اړتیا لرو چې د دې ټولو برخو څخه یو واحد راټول کړو. مهربان لیکوال ادم برټرم د کاروونکو نیمایي سره ولیدل او پخپله یې وکړل. دلته د وروستي سکریپټ په نوم یو لینک دی Remove-AzrVirtualMachine.ps1:

GitHub

زه امید لرم چې تاسو دا عملي لارښوونې ستاسو د هڅو ، وخت او پیسو خوندي کولو کې ګټورې ومومئ کله چې د Azure VMs سره کار کوئ.

سرچینه: www.habr.com

Add a comment