تكوين مربع تطوير باستخدام Azure VM Image Builder وMicrosoft Dev Box
في هذه المقالة، يمكنك استخدام Azure VM Image Builder لإنشاء مربع تطوير مخصص في Microsoft Dev Box باستخدام قالب. يتضمن القالب خطوة تخصيص لتثبيت Visual Studio Code (VS Code).
عندما تستخدم مؤسستك صور الجهاز الظاهري الموحد (VM)، يمكن ترحيلها بسهولة أكبر إلى السحابة والمساعدة في ضمان الاتساق في عمليات النشر الخاصة بك. عادةً ما تتضمن الصور أمانًا محددًا مسبقًا وإعدادات التكوين وأي برامج ضرورية. يتطلب إعداد مسار معالجة التصوير الوقت والبنية الأساسية والعديد من التفاصيل الأخرى. باستخدام Azure VM Image Builder، يمكنك إنشاء تكوين يصف صورتك. ثم تقوم الخدمة بإنشاء الصورة وإرسالها إلى مشروع مربع تطوير.
على الرغم من أنه من الممكن إنشاء صور جهاز ظاهري مخصصة يدويا أو باستخدام أدوات أخرى، يمكن أن تكون العملية مرهقة وغير موثوق بها. تمنحك VM Image Builder، المُنشَأة على HashiCorp Packer، مزايا الخدمة المدارة.
لتقليل تعقيد إنشاء صور الجهاز الظاهري، نقومVM Image Builder بما يلي:
تزيل الحاجة إلى استخدام الأدوات والعمليات والخطوات اليدوية المعقدة لإنشاء صورة جهاز ظاهري. تلخص VM Image Builder كل هذه التفاصيل وتخفي المتطلبات الخاصة بـ Azure، مثل الحاجة إلى تعميم الصورة (Sysprep). وتمنح المستخدمين الأكثر تقدمًا القدرة على تجاوز هذه المتطلبات.
يعمل مع مسارات إنشاء الصور الموجودة للحصول على تجربة النقر والانتقال. يمكنك استدعاء VM Image Builder من البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك أو استخدام مهمة DevOps لخدمة Azure VM Image Builder.
إحضار بيانات التخصيص من مصادر مختلفة، ما يزيل الحاجة إلى جمعها جميعا من مكان واحد.
يتكامل مع Azure Compute Gallery، الذي ينشئ نظام إدارة الصور لتوزيع الصور ونسخها نسخا متماثلا وتعيين إصدارها وتوسيع نطاقها عالميا. بالإضافة إلى ذلك، يمكنك توزيع نفس الصورة الناتجة كقرص ثابت ظاهري أو كصورة واحدة أو أكثر مدارة، دون الحاجة إلى إعادة إنشائها من البداية.
هام
يدعم Microsoft Dev Box الصور التي تستخدم نوع الأمان تمكين التشغيل الموثوق به فقط.
المتطلبات الأساسية
لتوفير صورة مخصصة قمت بإنشائها باستخدام VM Image Builder، تحتاج إلى:
- Azure PowerShell 6.0 أو أحدث. إذا لم يكن PowerShell مثبتا لديك، فاتبع الخطوات الواردة في تثبيت Azure PowerShell على Windows.
- أذونات المالك أو المساهم على اشتراك Azure أو على مجموعة موارد معينة.
- مجموعة الموارد.
- مركز تطوير مع اتصال شبكة متصلة. إذا لم يكن لديك واحد، فاتبع الخطوات الواردة في الاتصال مربعات التطوير للموارد عن طريق تكوين اتصالات الشبكة.
إنشاء صورة Windows وتوزيعها على Azure Compute Gallery
الخطوة الأولى هي استخدام Azure VM Image Builder وAzure PowerShell لإنشاء إصدار صورة في Azure Compute Gallery ثم توزيع الصورة عالميا. يمكنك أيضا القيام بهذه المهمة باستخدام Azure CLI.
لاستخدام VM Image Builder، تحتاج إلى تسجيل الميزات.
تحقق من تسجيلات مقدم الخدمة. تأكد من إرجاع
Registered
كل أمر للميزة المحددة.Get-AzResourceProvider -ProviderNamespace Microsoft.VirtualMachineImages | Format-table -Property ResourceTypes,RegistrationState Get-AzResourceProvider -ProviderNamespace Microsoft.Storage | Format-table -Property ResourceTypes,RegistrationState Get-AzResourceProvider -ProviderNamespace Microsoft.Compute | Format-table -Property ResourceTypes,RegistrationState Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | Format-table -Property ResourceTypes,RegistrationState Get-AzResourceProvider -ProviderNamespace Microsoft.Network | Format-table -Property ResourceTypes,RegistrationState
إذا لم ترجع
Registered
تسجيلات الموفر ، فسجل الموفرين عن طريق تشغيل الأوامر التالية:Register-AzResourceProvider -ProviderNamespace Microsoft.VirtualMachineImages Register-AzResourceProvider -ProviderNamespace Microsoft.Storage Register-AzResourceProvider -ProviderNamespace Microsoft.Compute Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault Register-AzResourceProvider -ProviderNamespace Microsoft.Network
تثبيت وحدات PowerShell:
'Az.ImageBuilder', 'Az.ManagedServiceIdentity' | ForEach-Object {Install-Module -Name $_ -AllowPrerelease}
إنشاء متغيرات لتخزين المعلومات التي تستخدمها أكثر من مرة.
- انسخ نموذج التعليمات البرمجية التالي.
- استبدل
<Resource group>
بمجموعة الموارد التي استخدمتها لإنشاء مركز التطوير. - تشغيل التعليمات البرمجية المحدثة في PowerShell.
# Get existing context $currentAzContext = Get-AzContext # Get your current subscription ID $subscriptionID=$currentAzContext.Subscription.Id # Destination image resource group $imageResourceGroup="<Resource group>" # Location $location="eastus2" # Image distribution metadata reference name $runOutputName="aibCustWinManImg01" # Image template name $imageTemplateName="vscodeWinTemplate"
إنشاء هوية معينة من قبل المستخدم وتعيين أذونات على مجموعة الموارد عن طريق تشغيل التعليمات البرمجية التالية في PowerShell.
يستخدم VM Image Builder هوية المستخدم المتوفرة لإدخال الصورة في معرض حوسبة Azure. ينشئ المثال التالي تعريف دور Azure بإجراءات محددة لتوزيع الصورة. ثم يتم تعيين تعريف الدور لهوية المستخدم.
# Set up role definition names, which need to be unique $timeInt=$(get-date -UFormat "%s") $imageRoleDefName="Azure Image Builder Image Def"+$timeInt $identityName="aibIdentity"+$timeInt # Add an Azure PowerShell module to support AzUserAssignedIdentity Install-Module -Name Az.ManagedServiceIdentity # Create an identity New-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName -Location $location $identityNameResourceId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).Id $identityNamePrincipalId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).PrincipalId
تعيين أذونات للهوية لتوزيع الصور.
استخدم هذا الأمر لتنزيل قالب تعريف دور Azure، ثم قم بتحديثه بالمعلمات المحددة مسبقا:
$aibRoleImageCreationUrl="https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json" $aibRoleImageCreationPath = "aibRoleImageCreation.json" # Download the configuration Invoke-WebRequest -Uri $aibRoleImageCreationUrl -OutFile $aibRoleImageCreationPath -UseBasicParsing ((Get-Content -path $aibRoleImageCreationPath -Raw) -replace '<subscriptionID>',$subscriptionID) | Set-Content -Path $aibRoleImageCreationPath ((Get-Content -path $aibRoleImageCreationPath -Raw) -replace '<rgName>', $imageResourceGroup) | Set-Content -Path $aibRoleImageCreationPath ((Get-Content -path $aibRoleImageCreationPath -Raw) -replace 'Azure Image Builder Service Image Creation Role', $imageRoleDefName) | Set-Content -Path $aibRoleImageCreationPath # Create a role definition New-AzRoleDefinition -InputFile ./aibRoleImageCreation.json # Grant the role definition to the VM Image Builder service principal New-AzRoleAssignment -ObjectId $identityNamePrincipalId -RoleDefinitionName $imageRoleDefName -Scope "/subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup"
إنشاء معرض.
لاستخدام VM Image Builder مع Azure Compute Gallery، يجب أن يكون لديك معرض حالي وتعريف للصورة. لا تقوم VM Image Builder بإنشاء المعرض وتعريف الصورة لك.
قم بتشغيل الأوامر التالية لإنشاء معرض جديد وتعريف صورة.
تنشئ هذه التعليمة البرمجية تعريفا بنوع أمان التشغيل الموثوق به وتلبي متطلبات صورة Windows 365.
# Gallery name $galleryName= "devboxGallery" # Image definition name $imageDefName ="vscodeImageDef" # Additional replication region $replRegion2="eastus" # Create the gallery New-AzGallery -GalleryName $galleryName -ResourceGroupName $imageResourceGroup -Location $location $SecurityType = @{Name='SecurityType';Value='TrustedLaunch'} $features = @($SecurityType) # Create the image definition New-AzGalleryImageDefinition -GalleryName $galleryName -ResourceGroupName $imageResourceGroup -Location $location -Name $imageDefName -OsState generalized -OsType Windows -Publisher 'myCompany' -Offer 'vscodebox' -Sku '1-0-0' -Feature $features -HyperVGeneration "V2"
أنشئ ملفا لتخزين تعريف القالب، مثل c:/temp/mytemplate.txt.
انسخ قالب Azure Resource Manger التالي ل VM Image Builder في ملف القالب الجديد.
يشير هذا القالب إلى الصورة المصدر والتخصيصات المطبقة. يقوم بتثبيت Choco و VS Code، ويشير أيضا إلى موقع توزيع الصور.
{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "imageTemplateName": { "type": "string" }, "api-version": { "type": "string" }, "svclocation": { "type": "string" } }, "variables": {}, "resources": [ { "name": "[parameters('imageTemplateName')]", "type": "Microsoft.VirtualMachineImages/imageTemplates", "apiVersion": "[parameters('api-version')]", "location": "[parameters('svclocation')]", "dependsOn": [], "tags": { "imagebuilderTemplate": "win11multi", "userIdentity": "enabled" }, "identity": { "type": "UserAssigned", "userAssignedIdentities": { "<imgBuilderId>": {} } }, "properties": { "buildTimeoutInMinutes": 100, "vmProfile": { "vmSize": "Standard_DS2_v2", "osDiskSizeGB": 127 }, "source": { "type": "PlatformImage", "publisher": "MicrosoftWindowsDesktop", "offer": "Windows-11", "sku": "win11-21h2-ent", "version": "latest" }, "customize": [ { "type": "PowerShell", "name": "Install Choco and Vscode", "inline": [ "Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))", "choco install -y vscode" ] } ], "distribute": [ { "type": "SharedImage", "galleryImageId": "/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<sharedImageGalName>/images/<imageDefName>", "runOutputName": "<runOutputName>", "artifactTags": { "source": "azureVmImageBuilder", "baseosimg": "win11multi" }, "replicationRegions": [ "<region1>", "<region2>" ] } ] } } ] }
أغلق ملف القالب قبل المتابعة إلى الخطوة التالية.
تكوين القالب الجديد الخاص بك مع المتغيرات الخاصة بك.
استبدل
<Template Path>
بموقع ملف القالب، مثلc:/temp/mytemplate
.$templateFilePath = <Template Path> (Get-Content -path $templateFilePath -Raw ) -replace '<subscriptionID>',$subscriptionID | Set-Content -Path $templateFilePath (Get-Content -path $templateFilePath -Raw ) -replace '<rgName>',$imageResourceGroup | Set-Content -Path $templateFilePath (Get-Content -path $templateFilePath -Raw ) -replace '<runOutputName>',$runOutputName | Set-Content -Path $templateFilePath (Get-Content -path $templateFilePath -Raw ) -replace '<imageDefName>',$imageDefName | Set-Content -Path $templateFilePath (Get-Content -path $templateFilePath -Raw ) -replace '<sharedImageGalName>',$galleryName| Set-Content -Path $templateFilePath (Get-Content -path $templateFilePath -Raw ) -replace '<region1>',$location | Set-Content -Path $templateFilePath (Get-Content -path $templateFilePath -Raw ) -replace '<region2>',$replRegion2 | Set-Content -Path $templateFilePath ((Get-Content -path $templateFilePath -Raw) -replace '<imgBuilderId>',$identityNameResourceId) | Set-Content -Path $templateFilePath
إرسال القالب إلى الخدمة.
يقوم الأمر التالي بتنزيل أي بيانات اصطناعية تابعة، مثل البرامج النصية، وتخزينها في مجموعة الموارد المرحلية. مجموعة الموارد المرحلية مسبوقة ب
IT_
.New-AzResourceGroupDeployment -ResourceGroupName $imageResourceGroup -TemplateFile $templateFilePath -Api-Version "2020-02-14" -imageTemplateName $imageTemplateName -svclocation $location
إنشاء الصورة عن طريق استدعاء
Run
الأمر على القالب:في المطالبة لتأكيد عملية التشغيل، أدخل Yes.
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2020-02-14" -Action Run
هام
قد يستغرق إنشاء الصورة ونسخها نسخا متماثلا إلى كلتا المنطقتين بعض الوقت. قد ترى فرقا في الإبلاغ عن التقدم بين PowerShell ومدخل Azure. قبل البدء في إنشاء تعريف مربع تطوير، انتظر حتى تكتمل العملية.
احصل على معلومات حول الصورة التي تم إنشاؤها حديثا، بما في ذلك حالة التشغيل وحالة التوفير.
Get-AzImageBuilderTemplate -ImageTemplateName $imageTemplateName -ResourceGroupName $imageResourceGroup | Select-Object -Property Name, LastRunStatusRunState, LastRunStatusMessage, ProvisioningState
عينة الإخراج:
Name LastRunStatusRunState LastRunStatusMessage ProvisioningState --------------------------------------------------------------------------------------- vscodeWinTemplate Creating
يمكنك أيضا عرض حالة التوفير لصورتك في مدخل Microsoft Azure. انتقل إلى المعرض الخاص بك واعرض تعريف الصورة.
تكوين المعرض
بعد توفير صورتك المخصصة في المعرض، يمكنك تكوين المعرض لاستخدام الصور في مركز التطوير. لمزيد من المعلومات، راجع تكوين معرض حوسبة Azure.
إعداد Microsoft Dev Box باستخدام صورة مخصصة
بعد توفر صور المعرض في مركز التطوير، يمكنك استخدام الصورة المخصصة مع Microsoft Dev Box. لمزيد من المعلومات، راجع التشغيل السريع: تكوين Microsoft Dev Box.
المحتوى ذو الصلة
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ