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:\\buildActionsav .
  • 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 en vmSize 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. Om du vill visa den här resursen i resursgruppen går du till Azure-portalen och aktiverar sedan Visa dolda typer.

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

Ta inte bort mellanlagringsresursgruppen direkt. Ta först bort artefakten för avbildningsmallen, vilket gör att mellanlagringsresursgruppen tas bort.

Om tjänsten rapporterar ett fel när du skickar avbildningskonfigurationsmallen gör du följande:

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.

  1. Ta bort mallen för VM Image Builder.

    az resource delete \
        --resource-group $imageResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateWin01
    
  2. 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
    
  3. 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.