Een dev box configureren met behulp van Azure VM Image Builder en Microsoft Dev Box
In dit artikel gebruikt u Azure VM Image Builder om een aangepast dev box in Microsoft Dev Box te maken met behulp van een sjabloon. De sjabloon bevat een aanpassingsstap voor het installeren van Visual Studio Code (VS Code).
Wanneer uw organisatie gestandaardiseerde VM-installatiekopieën (virtuele machines) gebruikt, kan deze eenvoudiger worden gemigreerd naar de cloud en wordt de consistentie in uw implementaties gegarandeerd. Installatiekopieën omvatten gewoonlijk vooraf gedefinieerde beveiliging, configuratie-instellingen en eventuele benodigde software. Voor het instellen van uw eigen imaging-pijplijn zijn tijd, infrastructuur en vele andere details vereist. Met Azure VM Image Builder kunt u een configuratie maken die uw installatiekopieën beschrijft. De service bouwt vervolgens de installatiekopieën en verzendt deze naar een dev box-project.
Hoewel het mogelijk is om handmatig aangepaste VM-installatiekopieën te maken of door andere hulpprogramma's te gebruiken, kan het proces lastig en onbetrouwbaar zijn. VM Image Builder, die is gebouwd op HashiCorp Packer, biedt u de voordelen van een beheerde service.
Om de complexiteit van het maken van VM-installatiekopieën te verminderen, is VM Image Builder:
Hiermee verwijdert u de noodzaak om complexe hulpprogramma's, processen en handmatige stappen te gebruiken om een VM-installatiekopieën te maken. VM Image Builder abstraheert al deze details en verbergt Azure-specifieke vereisten, zoals de noodzaak om de installatiekopieën (Sysprep) te generaliseren. En het geeft meer geavanceerde gebruikers de mogelijkheid om dergelijke vereisten te overschrijven.
Werkt met bestaande build-pijplijnen voor installatiekopieën voor een klik-en-go-ervaring. U kunt VM Image Builder aanroepen vanuit uw pijplijn of een DevOps-taak voor de Azure VM Image Builder-service gebruiken.
Hiermee worden aanpassingsgegevens opgehaald uit verschillende bronnen, waardoor de noodzaak om ze allemaal van één locatie te verzamelen wordt verwijderd.
Integreert met Azure Compute Gallery, waarmee u een installatiekopieënbeheersysteem maakt voor het distribueren, repliceren, versiebeheer en schalen van installatiekopieën wereldwijd. Daarnaast kunt u dezelfde resulterende installatiekopieën distribueren als een virtuele harde schijf of als een of meer beheerde installatiekopieën, zonder dat u ze helemaal opnieuw hoeft op te bouwen.
Belangrijk
Microsoft Dev Box ondersteunt alleen installatiekopieën die gebruikmaken van het beveiligingstype Trusted Launch ingeschakeld.
Vereisten
Als u een aangepaste installatiekopieën wilt inrichten die u hebt gemaakt met behulp van VM Image Builder, hebt u het volgende nodig:
- Azure PowerShell 6.0 of hoger. Als u PowerShell niet hebt geïnstalleerd, volgt u de stappen in Azure PowerShell installeren in Windows.
- Machtigingen voor eigenaar of inzender voor een Azure-abonnement of voor een specifieke resourcegroep.
- Een resourcegroep.
- Een ontwikkelaarscentrum met een gekoppelde netwerkverbinding. Als u er nog geen hebt, volgt u de stappen in Verbinding maken dev-vakken voor resources door netwerkverbindingen te configureren.
Een Windows-installatiekopieën maken en distribueren naar azure Compute Gallery
De eerste stap is het gebruik van Azure VM Image Builder en Azure PowerShell om een installatiekopieënversie te maken in azure Compute Gallery en vervolgens de installatiekopieën wereldwijd te distribueren. U kunt deze taak ook uitvoeren met behulp van de Azure CLI.
Als u VM Image Builder wilt gebruiken, moet u de functies registreren.
Controleer uw providerregistraties. Zorg ervoor dat elke opdracht wordt geretourneerd
Registered
voor de opgegeven functie.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
Als de providerregistraties niet worden geretourneerd
Registered
, registreert u de providers door de volgende opdrachten uit te voeren: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-modules installeren:
'Az.ImageBuilder', 'Az.ManagedServiceIdentity' | ForEach-Object {Install-Module -Name $_ -AllowPrerelease}
Maak variabelen voor het opslaan van gegevens die u meer dan één keer gebruikt.
- Kopieer de volgende voorbeeldcode.
- Vervang
<Resource group>
door de resourcegroep die u hebt gebruikt om het ontwikkelaarscentrum te maken. - Voer de bijgewerkte code uit in 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"
Maak een door de gebruiker toegewezen identiteit en stel machtigingen in voor de resourcegroep door de volgende code uit te voeren in PowerShell.
VM Image Builder gebruikt de opgegeven gebruikersidentiteit om de installatiekopieën in de Azure Compute Gallery te injecteren. In het volgende voorbeeld wordt een Azure-roldefinitie gemaakt met specifieke acties voor het distribueren van de installatiekopieën. De roldefinitie wordt vervolgens toegewezen aan de gebruikersidentiteit.
# 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
Wijs machtigingen toe voor de identiteit om de installatiekopieën te distribueren.
Gebruik deze opdracht om een Azure-roldefinitiesjabloon te downloaden en deze vervolgens bij te werken met de eerder opgegeven parameters:
$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"
Een galerie maken
Als u VM Image Builder wilt gebruiken met Azure Compute Gallery, moet u een bestaande galerie en installatiekopieëndefinitie hebben. VM Image Builder maakt de galerie en installatiekopieëndefinitie niet voor u.
Voer de volgende opdrachten uit om een nieuwe galerie en afbeeldingsdefinitie te maken.
Met deze code maakt u een definitie met het beveiligingstype Vertrouwde start en voldoet u aan de vereisten voor installatiekopieën van 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"
Maak een bestand om uw sjabloondefinitie op te slaan, zoals c:/temp/mytemplate.txt.
Kopieer de volgende Azure Resource Manger-sjabloon voor VM Image Builder naar uw nieuwe sjabloonbestand.
Deze sjabloon geeft de bronafbeelding en de toegepaste aanpassingen aan. Het installeert Choco en VS Code en geeft ook de distributielocatie van de installatiekopieën aan.
{ "$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>" ] } ] } } ] }
Sluit het sjabloonbestand voordat u doorgaat met de volgende stap.
Configureer uw nieuwe sjabloon met uw variabelen.
Vervang door
<Template Path>
de locatie van het sjabloonbestand, zoalsc:/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
Dien uw sjabloon in bij de service.
Met de volgende opdracht worden afhankelijke artefacten, zoals scripts, gedownload en opgeslagen in de faseringsresourcegroep. De faseringsresourcegroep wordt voorafgegaan door
IT_
.New-AzResourceGroupDeployment -ResourceGroupName $imageResourceGroup -TemplateFile $templateFilePath -Api-Version "2020-02-14" -imageTemplateName $imageTemplateName -svclocation $location
Bouw de installatiekopieën door de
Run
opdracht op de sjabloon aan te roepen:Voer Ja in bij de prompt om het uitvoeringsproces te bevestigen.
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2020-02-14" -Action Run
Belangrijk
Het maken van de installatiekopieën en het repliceren naar beide regio's kan enige tijd duren. Mogelijk ziet u een verschil in voortgangsrapportage tussen PowerShell en Azure Portal. Voordat u begint met het maken van een dev box-definitie, wacht u totdat het proces is voltooid.
Informatie ophalen over de zojuist gemaakte installatiekopie, inclusief de uitvoeringsstatus en inrichtingsstatus.
Get-AzImageBuilderTemplate -ImageTemplateName $imageTemplateName -ResourceGroupName $imageResourceGroup | Select-Object -Property Name, LastRunStatusRunState, LastRunStatusMessage, ProvisioningState
Voorbeelduitvoer:
Name LastRunStatusRunState LastRunStatusMessage ProvisioningState --------------------------------------------------------------------------------------- vscodeWinTemplate Creating
U kunt ook de inrichtingsstatus van uw installatiekopieën bekijken in Azure Portal. Ga naar uw galerie en bekijk de definitie van de installatiekopieën.
De galerie configureren
Nadat uw aangepaste installatiekopieën zijn ingericht in de galerie, kunt u de galerie configureren voor het gebruik van de installatiekopieën in het ontwikkelaarscentrum. Zie Azure Compute Gallery configureren voor meer informatie.
Microsoft Dev Box instellen met een aangepaste installatiekopieën
Nadat de galerie-installatiekopieën beschikbaar zijn in het ontwikkelaarscentrum, kunt u de aangepaste installatiekopieën gebruiken met Microsoft Dev Box. Zie quickstart: Microsoft Dev Box configureren voor meer informatie.
Gerelateerde inhoud
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor