PowerShell کا استعمال کرتے ہوئے Azure VMs میں ترمیم اور حذف کرنا

PowerShell کا استعمال کرتے ہوئے، انجینئرز اور IT منتظمین نہ صرف آن پریمیسس کے ساتھ بلکہ کلاؤڈ انفراسٹرکچر کے ساتھ، خاص طور پر Azure کے ساتھ کام کرتے وقت مختلف کاموں کو کامیابی کے ساتھ خودکار کرتے ہیں۔ کچھ معاملات میں، PowerShell کے ذریعے کام کرنا Azure پورٹل کے ذریعے کام کرنے سے کہیں زیادہ آسان اور تیز ہے۔ اس کے کراس پلیٹ فارم کی نوعیت کی بدولت، پاور شیل کو کسی بھی آپریٹنگ سسٹم پر استعمال کیا جا سکتا ہے۔

چاہے آپ Ubuntu، Red Hat، یا Windows چلا رہے ہوں، PowerShell آپ کو اپنے کلاؤڈ وسائل کو کنٹرول کرنے میں مدد کر سکتا ہے۔ ماڈیول کا استعمال کرتے ہوئے Azure PowerShellمثال کے طور پر، آپ ورچوئل مشینوں کی کوئی بھی خصوصیات سیٹ کر سکتے ہیں۔

اس آرٹیکل میں، ہم دیکھیں گے کہ آپ Azure کلاؤڈ میں VM کا سائز تبدیل کرنے کے ساتھ ساتھ VM اور اس سے وابستہ اشیاء کو حذف کرنے کے لیے PowerShell کا استعمال کیسے کر سکتے ہیں۔

PowerShell کا استعمال کرتے ہوئے Azure VMs میں ترمیم اور حذف کرنا

اہم! کام کی تیاری کے لیے اپنے ہاتھوں کو سینیٹائزر سے صاف کرنا نہ بھولیں:

  • آپ کو ایک ماڈیول کی ضرورت ہوگی۔ Azure PowerShell ماڈیول - اسے پاور شیل گیلری سے کمانڈ کے ساتھ ڈاؤن لوڈ کیا جا سکتا ہے۔ Install-Module Az.
  • آپ کو Azure کلاؤڈ میں تصدیق کرنے کی ضرورت ہے جہاں کمانڈ چلا کر ورچوئل مشین چل رہی ہے۔ Connect-AzAccount.

سب سے پہلے، آئیے ایک اسکرپٹ بنائیں جو Azure VM کا سائز تبدیل کرے۔ آئیے VS کوڈ کھولیں اور ایک نئی PowerShell اسکرپٹ کو محفوظ کریں جسے کہتے ہیں۔ Resize-AzVirtualMachine.ps1 - جیسے جیسے مثال آگے بڑھے گی ہم اس میں کوڈ کے ٹکڑے شامل کریں گے۔

ہم دستیاب VM سائز کی درخواست کرتے ہیں۔

VM سائز تبدیل کرنے سے پہلے، آپ کو یہ معلوم کرنا ہوگا کہ Azure کلاؤڈ میں ورچوئل مشینوں کے لیے قابل قبول سائز کیا ہیں۔ ایسا کرنے کے لیے آپ کو کمانڈ چلانے کی ضرورت ہے۔ Get-AzVMSize.

تو ورچوئل مشین کے لیے devvm01 وسائل گروپ سے دیو ہم تمام ممکنہ قابل قبول سائز کی درخواست کرتے ہیں:

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

اور اب "ہم خوش کن انجام کو پہنچ گئے ہیں!" اب ہمیں ان تمام ٹکڑوں میں سے ایک مکمل جمع کرنے کی ضرورت ہے۔ مہربان مصنف ایڈم برٹرم نے آدھے راستے میں صارفین سے ملاقات کی اور یہ خود کیا۔ یہاں فائنل اسکرپٹ کا ایک لنک ہے جسے کہا جاتا ہے۔ AzrVirtualMachine.ps1 کو ہٹا دیں۔:

GitHub کے

مجھے امید ہے کہ Azure VMs کے ساتھ کام کرتے وقت آپ کو یہ عملی تجاویز آپ کی محنت، وقت اور پیسہ بچانے میں مددگار ثابت ہوں گی۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں