Azure VM Görüntü Oluşturucusu'nu ve Microsoft Dev Box'ı kullanarak geliştirme kutusunu yapılandırma
Bu makalede, Şablon kullanarak Microsoft Dev Box'ta özelleştirilmiş bir geliştirme kutusu oluşturmak için Azure VM Görüntü Oluşturucusu'nu kullanacaksınız. Şablon, Visual Studio Code'u (VS Code) yüklemek için bir özelleştirme adımı içerir.
Standartlaştırılmış sanal makine (VM) görüntülerinin kullanılması, buluta geçişte tutarlı dağıtımlar sağlamanıza yardımcı olur. Bu görüntüler önceden tanımlanmış güvenlik, yapılandırma ayarları ve gerekli yazılımları içerebilir. Görüntüleme işlem hattı ayarlamak zaman alabilir ve karmaşık olabilir. Azure VM Image Builder, görüntünüz için hizmetin derlediği ve bir geliştirme kutusu projesine gönderdiği bir yapılandırma oluşturmanıza olanak tanıyarak bu işlemi basitleştirir.
Özel VM görüntülerini el ile veya diğer araçlarla oluşturmak zor ve güvenilir olmayabilir. HashiCorp Packer üzerinde oluşturulan VM Görüntü Oluşturucusu, yönetilen bir hizmetin avantajlarını sunar.
VM görüntüsü oluşturmayı basitleştirmek için VM Görüntü Oluşturucusu:
- Karmaşık araçlara, işlemlere ve el ile uygulanan adımlara olan ihtiyacı ortadan kaldırır. Bu ayrıntıları soyutlar ve görüntüyü (Sysprep) genelleştirme gibi Azure'a özgü gereksinimleri gizler ve gerekirse ileri düzey kullanıcıların geçersiz kılmasına izin verir.
- Mevcut görüntü derleme işlem hatlarıyla çalışır. İşlem hattınızdan VM Görüntü Oluşturucusu'nu çağırabilir veya bir Azure VM Görüntü Oluşturucusu hizmeti DevOps görevi kullanabilirsiniz.
- Çeşitli kaynaklardan özelleştirme verilerini toplar, böylece hepsini tek bir yerde toplamanız gerekmez.
- Azure İşlem Galerisi ile tümleştirerek genel dağıtım, çoğaltma, sürüm oluşturma ve ölçeklendirme için bir görüntü yönetim sistemi oluşturur. Sanal sabit disk veya yönetilen görüntülerle aynı görüntüyü yeniden oluşturmadan dağıtabilirsiniz.
Önemli
Microsoft Dev Box yalnızca Güvenilen Başlatma etkin güvenlik türünü kullanan görüntüleri destekler.
Önkoşullar
VM Görüntü Oluşturucusu'nu kullanarak oluşturduğunuz özel görüntüyü sağlamak için şunları yapmanız gerekir:
- Azure PowerShell 6.0 veya üzeri. PowerShell yüklü değilse Windows'a Azure PowerShell yükleme sayfasındaki adımları izleyin.
- Azure aboneliğinde veya belirli bir kaynak grubunda sahip veya Katkıda Bulunan izinleri.
- Bir kaynak grubu.
- Bağlı ağ bağlantısı olan bir geliştirme merkezi. Yoksa, ağ bağlantılarını yapılandırarak geliştirme kutularını kaynaklara bağlama'daki adımları izleyin.
Windows görüntüsü oluşturma ve Azure İşlem Galerisi'ne dağıtma
İlk adım, Azure İşlem Galerisi'nde görüntü oluşturmak ve bunu genel olarak dağıtmak için Azure VM Görüntü Oluşturucusu ve Azure PowerShell kullanmaktır.
Aşağıdaki örnekte PowerShell kullanılır. Azure Komut Satırı Arabirimi'ni (CLI) de kullanabilirsiniz.
VM Görüntü Oluşturucusu'nu kullanmak için özellikleri kaydetmeniz gerekir.
Sağlayıcı kayıtlarınızı denetleyin. Her komutun belirtilen özellik için döndürdüğünden
Registered
emin olun.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
Sağlayıcı kayıtları döndürmezse
Registered
, aşağıdaki komutları çalıştırarak sağlayıcıları kaydedin: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 modüllerini yükleme:
'Az.ImageBuilder', 'Az.ManagedServiceIdentity' | ForEach-Object {Install-Module -Name $_ -AllowPrerelease}
Birden çok kez kullandığınız bilgileri depolamak için değişkenler oluşturun.
- Aşağıdaki örnek kodu kopyalayın.
- öğesini geliştirme merkezini oluşturmak için kullandığınız kaynak grubuyla değiştirin
<Resource group>
. - Güncelleştirilmiş kodu PowerShell'de çalıştırın.
# 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'de aşağıdaki kodu çalıştırarak kullanıcı tarafından atanan bir kimlik oluşturun ve kaynak grubunda izinleri ayarlayın.
VM Görüntü Oluşturucusu, görüntüyü Azure İşlem Galerisi'nde depolamak için sağladığınız kullanıcı kimliğini kullanır. Aşağıdaki örnek, görüntüyü dağıtmak için belirli eylemleri içeren bir Azure rol tanımı oluşturur. Rol tanımı daha sonra kullanıcı kimliğine atanır.
# 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
Görüntüleri dağıtmak için kimliğe izinler atayın.
Azure rol tanımı şablonunu indirmek ve daha önce belirtilen parametrelerle güncelleştirmek için bu komutu kullanın:
$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"
Galeri Oluştur
VM Görüntü Oluşturucusu'nu Azure İşlem Galerisi ile kullanmak için mevcut bir galeriye ve görüntü tanımına sahip olduğunuzdan emin olun. VM Görüntü Oluşturucusu galeriyi ve görüntü tanımını sizin için oluşturmaz.
Yeni bir galeri ve görüntü tanımı oluşturmak için aşağıdaki komutları çalıştırın.
Bu kod, güvenilir başlatma güvenlik türüne sahip bir tanım oluşturur ve Windows 365 görüntü gereksinimlerini karşılar.
# 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"
Şablon tanımınızı depolamak için c:/temp/mytemplate.txt gibi bir dosya oluşturun.
VM Image Builder için aşağıdaki Azure Kaynak Yöneticisi şablonunu yeni şablon dosyanıza kopyalayın.
Bu şablon, kaynak görüntüyü ve uygulanan özelleştirmeleri gösterir. Choco ve VS Code'u yükler ve ayrıca görüntü dağıtım konumunu gösterir.
{ "$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>" ] } ] } } ] }
Sonraki adıma geçmeden önce şablon dosyanızı kapatın.
Yeni şablonunuzu değişkenlerinizle yapılandırın.
öğesini
<Template Path>
şablon dosyanızın konumuyla değiştirin; örneğinc:/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
Şablonunuzu hizmete gönderin.
Aşağıdaki komut betikler gibi tüm bağımlı yapıtları indirir ve hazırlama kaynak grubunda depolar. Hazırlama kaynak grubuna ön eki eklenir
IT_
.New-AzResourceGroupDeployment -ResourceGroupName $imageResourceGroup -TemplateFile $templateFilePath -Api-Version "2020-02-14" -imageTemplateName $imageTemplateName -svclocation $location
Şablonda komutunu çağırarak
Run
görüntüyü oluşturun:Çalıştırma işlemini onaylama istemine Evet yazın.
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2020-02-14" -Action Run
Önemli
Görüntüyü oluşturmak ve her iki bölgeye çoğaltmak biraz zaman alabilir. PowerShell ile Azure portalı arasında devam eden raporlamada bir fark görebilirsiniz. Geliştirme kutusu tanımı oluşturmaya başlamadan önce işlem tamamlanana kadar bekleyin.
Çalıştırma durumu ve sağlama durumu da dahil olmak üzere yeni oluşturulan görüntü hakkında bilgi edinin.
Get-AzImageBuilderTemplate -ImageTemplateName $imageTemplateName -ResourceGroupName $imageResourceGroup | Select-Object -Property Name, LastRunStatusRunState, LastRunStatusMessage, ProvisioningState
Örnek çıkış:
Name LastRunStatusRunState LastRunStatusMessage ProvisioningState --------------------------------------------------------------------------------------- vscodeWinTemplate Creating
Görüntünüzün sağlama durumunu Azure portalında da görüntünüzü görüntüleyebilirsiniz. Galerinize gidin ve görüntü tanımını görüntüleyin.
Galeriyi yapılandırma
Özel görüntünüz galeride depolandığında, galeriyi geliştirme merkezindeki görüntüleri kullanacak şekilde yapılandırabilirsiniz. Daha fazla bilgi için bkz . Azure İşlem Galerisini Yapılandırma.
Microsoft Dev Box'u özel görüntüyle ayarlama
Galeri görüntüleri geliştirme merkezinde kullanılabilir olduğunda, Microsoft Dev Box ile özel görüntüyü kullanabilirsiniz. Daha fazla bilgi için bkz . Hızlı Başlangıç: Microsoft Dev Box'ı yapılandırma.