Fejlesztői doboz konfigurálása az Azure VM Image Builder és a Microsoft Dev Box használatával
Ebben a cikkben az Azure-beli VM Image Builder használatával hozhat létre egy testreszabott fejlesztői dobozt a Microsoft Dev Boxban egy sablon használatával. A sablon tartalmaz egy testreszabási lépést a Visual Studio Code (VS Code) telepítéséhez.
Amikor a szervezet szabványosított virtuálisgép-rendszerképeket használ, egyszerűbben migrálhat a felhőbe, és biztosíthatja az üzemelő példányok konzisztenciáját. A képek általában tartalmazzák az előre meghatározott biztonsági beállításokat, a konfigurációs beállításokat és a szükséges szoftvereket. A saját képalkotó folyamat beállításához időre, infrastruktúrára és sok más részletre van szükség. Az Azure VM Image Builderrel létrehozhat egy konfigurációt, amely leírja a rendszerképet. A szolgáltatás ezután létrehozza a rendszerképet, és elküldi azt egy dev box-projektnek.
Bár egyéni virtuálisgép-rendszerképeket kézzel vagy más eszközökkel is létrehozhat, a folyamat nehézkes és megbízhatatlan lehet. A HashiCorp Packerre épülő VM Image Builder egy felügyelt szolgáltatás előnyeit nyújtja.
A virtuálisgép-rendszerképek létrehozásának összetettségének csökkentése érdekében a VM Image Builder:
Eltávolítja a virtuálisgép-rendszerképek létrehozásához szükséges összetett eszközök, folyamatok és manuális lépések szükségességét. A VM Image Builder kivonatolja ezeket a részleteket, és elrejti az Azure-specifikus követelményeket, például a rendszerkép általánosításának szükségességét (Sysprep). És ez lehetővé teszi a fejlettebb felhasználók számára, hogy felülbírálják ezeket a követelményeket.
A meglévő rendszerkép-összeállítási folyamatokkal együttműködve kattintásra használható. Meghívhatja a VM Image Buildert a folyamatból, vagy használhat egy Azure VM Image Builder szolgáltatás DevOps-feladatot.
Beolvassa a testreszabási adatokat a különböző forrásokból, így nem szükséges az összeset egyetlen helyről összegyűjteni.
Integrálható az Azure Compute Gallery szolgáltatással, amely képkezelő rendszert hoz létre a képek globális terjesztésére, replikálására, verziószámozására és skálázására. Emellett ugyanúgy terjesztheti az eredményül kapott lemezképet, mint egy virtuális merevlemez vagy egy vagy több felügyelt lemezkép, anélkül, hogy újra kellene építenie őket az alapoktól.
Fontos
A Microsoft Dev Box csak azokat a lemezképeket támogatja, amelyek engedélyezve van a Megbízható indítás biztonsági típust használják.
Előfeltételek
A VM Image Builder használatával létrehozott egyéni rendszerkép kiépítéséhez a következőkre van szükség:
- Azure PowerShell 6.0 vagy újabb verzió. Ha nincs telepítve a PowerShell, kövesse az Azure PowerShell windowsos telepítésének lépéseit.
- Tulajdonosi vagy közreműködői engedélyek egy Azure-előfizetésen vagy egy adott erőforráscsoporton.
- Egy erőforráscsoport.
- Csatolt hálózati kapcsolattal rendelkező fejlesztői központ. Ha nincs ilyenje, kövesse a Csatlakozás fejlesztői mezőkben szereplő lépéseket az erőforrásokhoz a hálózati kapcsolatok konfigurálásával.
Windows-rendszerkép létrehozása és terjesztése az Azure Compute Galleryben
Az első lépés az Azure VM Image Builder és az Azure PowerShell használata képverzió létrehozásához az Azure Compute Galleryben, majd a rendszerkép globális terjesztése. Ezt a feladatot az Azure CLI használatával is elvégezheti.
A VM Image Builder használatához regisztrálnia kell a funkciókat.
Ellenőrizze a szolgáltatói regisztrációkat. Győződjön meg arról, hogy az egyes parancsok
Registered
a megadott funkcióhoz térnek vissza.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
Ha a szolgáltatói regisztrációk nem térnek vissza
Registered
, regisztrálja a szolgáltatókat az alábbi parancsok futtatásával: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-modulok telepítése:
'Az.ImageBuilder', 'Az.ManagedServiceIdentity' | ForEach-Object {Install-Module -Name $_ -AllowPrerelease}
Hozzon létre változókat a többször használt információk tárolásához.
- Másolja ki a következő mintakódot.
- Cserélje le
<Resource group>
a fejlesztői központ létrehozásához használt erőforráscsoportra. - Futtassa a frissített kódot a PowerShellben.
# 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"
Hozzon létre egy felhasználó által hozzárendelt identitást, és állítsa be az erőforráscsoportra vonatkozó engedélyeket az alábbi kód PowerShellben való futtatásával.
A VM Image Builder a megadott felhasználói identitással injektálja a rendszerképet az Azure Compute Gallerybe. Az alábbi példa egy Azure-szerepkördefiníciót hoz létre a rendszerkép terjesztésére vonatkozó konkrét műveletekkel. A szerepkördefiníció ezután hozzá lesz rendelve a felhasználói identitáshoz.
# 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
Engedélyek hozzárendelése az identitáshoz a képek terjesztéséhez.
Ezzel a paranccsal letölthet egy Azure-szerepkördefiníciós sablont, majd frissítheti a korábban megadott paraméterekkel:
$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"
Katalógus létrehozása
Ha a virtuálisgép-rendszerkép-készítőt az Azure Compute Gallery használatával szeretné használni, rendelkeznie kell egy meglévő katalógussal és képdefinícióval. A VM Image Builder nem hozza létre a katalógust és a képdefiníciót.
Futtassa az alábbi parancsokat egy új katalógus és képdefiníció létrehozásához.
Ez a kód létrehoz egy definíciót a megbízható indítási biztonsági típussal, és megfelel a Windows 365 rendszerkép követelményeinek.
# 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"
Hozzon létre egy fájlt a sablondefiníció tárolásához, például c:/temp/mytemplate.txt.
Másolja az alábbi Azure Resource Manger-sablont a VM Image Builderhez az új sablonfájlba.
Ez a sablon a forrásrendszerképet és az alkalmazott testreszabásokat jelzi. Telepíti a Choco-t és a VS Code-ot, valamint a képterjesztés helyét is jelzi.
{ "$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>" ] } ] } } ] }
Zárja be a sablonfájlt, mielőtt továbblép a következő lépésre.
Konfigurálja az új sablont a változókkal.
Cserélje le
<Template Path>
a sablonfájl helyére, példáulc:/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
Küldje el a sablont a szolgáltatásnak.
Az alábbi parancs letölti a függő összetevőket, például szkripteket, és az átmeneti erőforráscsoportban tárolja őket. Az átmeneti erőforráscsoport előtaggal
IT_
van elnevezett.New-AzResourceGroupDeployment -ResourceGroupName $imageResourceGroup -TemplateFile $templateFilePath -Api-Version "2020-02-14" -imageTemplateName $imageTemplateName -svclocation $location
Hozza létre a képet a
Run
sablon parancsának meghívásával:A futtatási folyamat megerősítéséhez adja meg az Igen értéket.
Invoke-AzResourceAction -ResourceName $imageTemplateName -ResourceGroupName $imageResourceGroup -ResourceType Microsoft.VirtualMachineImages/imageTemplates -ApiVersion "2020-02-14" -Action Run
Fontos
A rendszerkép létrehozása és replikálása mindkét régióba eltarthat egy ideig. A PowerShell és az Azure Portal között eltérést tapasztalhat a folyamatban lévő jelentéskészítésben. Mielőtt elkezdené létrehozni a dev box definícióját, várjon, amíg a folyamat befejeződik.
Információt kaphat az újonnan létrehozott rendszerképről, beleértve a futtatási állapotot és a kiépítési állapotot.
Get-AzImageBuilderTemplate -ImageTemplateName $imageTemplateName -ResourceGroupName $imageResourceGroup | Select-Object -Property Name, LastRunStatusRunState, LastRunStatusMessage, ProvisioningState
Sample output:
Name LastRunStatusRunState LastRunStatusMessage ProvisioningState --------------------------------------------------------------------------------------- vscodeWinTemplate Creating
A rendszerkép kiépítési állapotát az Azure Portalon is megtekintheti. Nyissa meg a katalógust, és tekintse meg a képdefiníciót.
A katalógus konfigurálása
Miután kiépítette az egyéni rendszerképet a katalógusban, konfigurálhatja a katalógust a rendszerképek használatára a fejlesztői központban. További információ: Az Azure Compute Gallery konfigurálása.
A Microsoft Dev Box beállítása egyéni rendszerképpel
Miután a katalógusképek elérhetővé válnak a fejlesztői központban, használhatja az egyéni rendszerképet a Microsoft Dev Box használatával. További információ : Rövid útmutató: A Microsoft Dev Box konfigurálása.
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: