Skapa en virtuell Windows-dator med hjälp av Azure VM Image Builder
Gäller för: ✔️ Virtuella Windows-datorer
I den här artikeln får du lära dig hur du skapar en anpassad Windows-avbildning med hjälp av Azure VM Image Builder. I exemplet i den här artikeln används anpassningar för att anpassa avbildningen:
- PowerShell (ScriptUri): Ladda ned och kör ett PowerShell-skript.
- Windows-omstart: Startar om den virtuella datorn.
- PowerShell (infogad): Kör ett specifikt kommando. I det här exemplet skapar den en katalog på den virtuella datorn med hjälp
mkdir c:\\buildActions
av . - Fil: Kopierar en fil från GitHub till den virtuella datorn. I det här exemplet kopieras index.md till
c:\buildArtifacts\index.html
på den virtuella datorn. buildTimeoutInMinutes
: Anger en byggtid i minuter. Standardvärdet är 240 minuter, vilket du kan öka för att tillåta längre versioner. Det minsta tillåtna värdet är 6 minuter. Värden som är kortare än 6 minuter orsakar fel.vmProfile
: Anger envmSize
och nätverksegenskaper.osDiskSizeGB
: Kan användas för att öka storleken på en bild.identity
. Tillhandahåller en identitet som vm Image Builder kan använda under bygget.
Använd följande JSON-exempelmall för att konfigurera avbildningen: helloImageTemplateWin.json.
Kommentar
Windows-användare kan köra följande Azure CLI-exempel på Azure Cloud Shell med hjälp av Bash.
Registrera leverantörerna
Om du vill använda VM Image Builder måste du registrera funktionen. Kontrollera registreringen genom att köra följande kommandon:
az provider show -n Microsoft.VirtualMachineImages | grep registrationState
az provider show -n Microsoft.KeyVault | grep registrationState
az provider show -n Microsoft.Compute | grep registrationState
az provider show -n Microsoft.Storage | grep registrationState
az provider show -n Microsoft.Network | grep registrationState
az provider show -n Microsoft.ContainerInstance -o json | grep registrationState
Om utdata inte säger registrerade kör du följande kommandon:
az provider register -n Microsoft.VirtualMachineImages
az provider register -n Microsoft.Compute
az provider register -n Microsoft.KeyVault
az provider register -n Microsoft.Storage
az provider register -n Microsoft.Network
az provider register -n Microsoft.ContainerInstance
Ange variabler
Eftersom du kommer att använda viss information upprepade gånger skapar du några variabler för att lagra den informationen:
# Resource group name - we're using myImageBuilderRG in this example
imageResourceGroup='myWinImgBuilderRG'
# Region location
location='WestUS2'
# Run output name
runOutputName='aibWindows'
# The name of the image to be created
imageName='aibWinImage'
Skapa en variabel för ditt prenumerations-ID:
subscriptionID=$(az account show --query id --output tsv)
Skapa resursgruppen
Om du vill lagra artefakten för avbildningskonfigurationsmallen och avbildningen använder du följande resursgrupp:
az group create -n $imageResourceGroup -l $location
Skapa en användartilldelad identitet och ange behörigheter för resursgruppen
Vm Image Builder använder den angivna användaridentiteten för att mata in avbildningen i resursgruppen. I det här exemplet skapar du en Azure-rolldefinition med specifika behörigheter för att distribuera avbildningen. Rolldefinitionen tilldelas sedan till användaridentiteten.
Skapa en användartilldelad hanterad identitet och bevilja behörigheter
Skapa en användartilldelad identitet så att den virtuella datorn Image Builder kan komma åt lagringskontot där skriptet lagras.
identityName=aibBuiUserId$(date +'%s')
az identity create -g $imageResourceGroup -n $identityName
# Get the identity ID
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)
# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# Download the preconfigured role definition example
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json
imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')
# Update the definition
sed -i -e "s%<subscriptionID>%$subscriptionID%g" aibRoleImageCreation.json
sed -i -e "s%<rgName>%$imageResourceGroup%g" aibRoleImageCreation.json
sed -i -e "s%Azure Image Builder Service Image Creation Role%$imageRoleDefName%g" aibRoleImageCreation.json
# Create role definitions
az role definition create --role-definition ./aibRoleImageCreation.json
# Grant a role definition to the user-assigned identity
az role assignment create \
--assignee $imgBuilderCliId \
--role "$imageRoleDefName" \
--scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup
Ladda ned mallen för avbildningskonfiguration
Vi har skapat en parameteriserad bildkonfigurationsmall som du kan prova. Ladda ned JSON-exempelfilen och konfigurera den sedan med de variabler som du angav tidigare.
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/0_Creating_a_Custom_Windows_Managed_Image/helloImageTemplateWin.json -o helloImageTemplateWin.json
sed -i -e "s%<subscriptionID>%$subscriptionID%g" helloImageTemplateWin.json
sed -i -e "s%<rgName>%$imageResourceGroup%g" helloImageTemplateWin.json
sed -i -e "s%<region>%$location%g" helloImageTemplateWin.json
sed -i -e "s%<imageName>%$imageName%g" helloImageTemplateWin.json
sed -i -e "s%<runOutputName>%$runOutputName%g" helloImageTemplateWin.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateWin.json
Du kan ändra det här exemplet i terminalen med hjälp av en textredigerare som vi
.
vi helloImageTemplateWin.json
Kommentar
Ange alltid en version för källbilden. Du kan inte ange latest
som version.
Om du lägger till eller ändrar den resursgrupp som avbildningen distribueras till kontrollerar du att behörigheterna har angetts för resursgruppen.
Skapa avbildningen
Skicka avbildningskonfigurationen till tjänsten Image Builder för den virtuella datorn genom att köra följande kommandon:
az resource create \
--resource-group $imageResourceGroup \
--properties @helloImageTemplateWin.json \
--is-full-object \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01
När du är klar returneras ett meddelande om lyckat resultat till konsolen och en konfigurationsmall för VM Image Builder skapas i $imageResourceGroup
.
I bakgrunden skapar VM Image Builder också en mellanlagringsresursgrupp i din prenumeration. Den här resursgruppen används för att skapa avbildningen i följande format: IT_<DestinationResourceGroup>_<TemplateName>
.
Kommentar
Om borttagning krävs ska du inte ta bort mellanlagringsresursgruppen direkt. Ta först bort artefakten för avbildningsmallen, som sedan tar bort mellanlagringsresursgruppen. Annars kan bildmallen ange ett feltillstånd.
Om tjänsten rapporterar ett fel när du skickar avbildningskonfigurationsmallen gör du följande:
- Se Felsöka azure VM Image Builder-tjänsten.
- Innan du försöker skicka mallen igen tar du bort den genom att köra följande kommandon:
az resource delete \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01
Starta avbildningsversionen
Starta avbildningsskapandeprocessen med az resource invoke-action.
az resource invoke-action \
--resource-group $imageResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateWin01 \
--action Run
Vänta tills bygget är klart.
Om du stöter på några fel kan du läsa Felsöka azure VM Image Builder-tjänsten.
Skapa den virtuella datorn
Skapa den virtuella datorn med den avbildning som du skapade. I följande kod ersätter du <lösenordet> med ditt eget lösenord för aibusern på den virtuella datorn.
az vm create \
--resource-group $imageResourceGroup \
--name aibImgWinVm00 \
--admin-username aibuser \
--admin-password <password> \
--image $imageName \
--location $location
Verifiera anpassningen
Skapa en fjärrskrivbordsanslutning till den virtuella datorn med det användarnamn och lösenord som du angav när du skapade den virtuella datorn. Öppna ett kommandotolkfönster på den virtuella datorn och skriv sedan:
dir c:\
Följande två kataloger skapas under avbildningsanpassningen:
- buildActions
- buildArtifacts
Rensa dina resurser
När du är klar tar du bort de resurser som du har skapat.
Ta bort mallen för VM Image Builder.
az resource delete \ --resource-group $imageResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateWin01
Ta bort rolltilldelningen, rolldefinitionen och användaridentiteten.
az role assignment delete \ --assignee $imgBuilderCliId \ --role "$imageRoleDefName" \ --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup az role definition delete --name "$imageRoleDefName" az identity delete --ids $imgBuilderId
Ta bort bildresursgruppen.
az group delete -n $imageResourceGroup
Nästa steg
Mer information om komponenterna i JSON-filen som används i den här artikeln finns i mallreferensen för VM Image Builder.