Megosztás a következőn keresztül:


Windows rendszerű virtuális gép létrehozása az Azure VM Image Builder használatával

A következőkre vonatkozik: ✔️ Windows rendszerű virtuális gépek

Ebben a cikkben megtudhatja, hogyan hozhat létre testreszabott Windows-rendszerképet az Azure VM Image Builder használatával. A cikkben szereplő példa testre szabókkal szabja testre a rendszerképet:

  • PowerShell (ScriptUri): PowerShell-szkript letöltése és futtatása.
  • Windows újraindítása: Újraindítja a virtuális gépet.
  • PowerShell (beágyazott): Egy adott parancsot futtat. Ebben a példában létrehoz egy könyvtárat a virtuális gépen a használatával mkdir c:\\buildActions.
  • Fájl: Fájl másolása a GitHubról a virtuális gépre. Ez a példa index.mdc:\buildArtifacts\index.html másol a virtuális gépen.
  • buildTimeoutInMinutes: Percekben megadott buildelési időt ad meg. Az alapértelmezett érték 240 perc, amelyet növelheti a hosszabb ideig futó buildek engedélyezéséhez. A minimálisan megengedett érték 6 perc. A 6 percnél rövidebb értékek hibákat okoznak.
  • vmProfile: Megadja a hálózati és a vmSize hálózati tulajdonságokat.
  • osDiskSizeGB: A kép méretének növeléséhez használható.
  • identity. Egy identitást biztosít a virtuálisgép-rendszerkép-készítő számára, amelyet a buildelés során használhat.

A rendszerkép konfigurálásához használja a következő JSON-mintasablont: helloImageTemplateWin.json.

Megjegyzés:

A Windows-felhasználók a Következő Azure CLI-példákat futtathatják az Azure Cloud Shellben a Bash használatával.

A szolgáltatók regisztrálása

A VM Image Builder használatához regisztrálnia kell a funkciót. Ellenőrizze a regisztrációt az alábbi parancsok futtatásával:

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

Ha a kimenet nem azt mondja, hogy regisztrálva van, futtassa a következő parancsokat:

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

Változók beállítása

Mivel néhány információt többször is használni fog, hozzon létre néhány változót az információk tárolásához:

# 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'

Hozzon létre egy változót az előfizetés azonosítójához:

subscriptionID=$(az account show --query id --output tsv)

Az erőforráscsoport létrehozása

A képkonfigurációs sablon összetevőjének és a rendszerképnek a tárolásához használja a következő erőforráscsoportot:

az group create -n $imageResourceGroup -l $location

Felhasználó által hozzárendelt identitás létrehozása és engedélyek beállítása az erőforráscsoporton

A VM Image Builder a megadott felhasználói identitással injektálja a rendszerképet az erőforráscsoportba. Ebben a példában egy Azure-szerepkördefiníciót hoz létre, amely a rendszerkép terjesztésére vonatkozó engedélyekkel rendelkezik. A szerepkördefiníció ezután hozzá lesz rendelve a felhasználói identitáshoz.

Felhasználó által hozzárendelt felügyelt identitás létrehozása és engedélyek megadása

Hozzon létre egy felhasználó által hozzárendelt identitást, hogy a VM Image Builder hozzáférhessen a szkriptet tároló tárfiókhoz.

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

A képkonfigurációs sablon letöltése

Létrehoztunk egy paraméteres képkonfigurációs sablont, amelyet kipróbálhat. Töltse le a példa JSON-fájlt, majd konfigurálja a korábban beállított változókkal.

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

Ezt a példát módosíthatja a terminálban egy szövegszerkesztővel, például vi.

vi helloImageTemplateWin.json

Megjegyzés:

A forrásképhez mindig adjon meg egy verziót. Verzióként nem adható meg latest .

Ha hozzáadja vagy módosítja azt az erőforráscsoportot, amelybe a rendszerképet elosztja, győződjön meg arról, hogy az engedélyek be vannak állítva az erőforráscsoporton.

A rendszerkép létrehozása

Küldje el a képkonfigurációt a VM Image Builder szolgáltatásnak az alábbi parancsok futtatásával:

az resource create \
    --resource-group $imageResourceGroup \
    --properties @helloImageTemplateWin.json \
    --is-full-object \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateWin01

Ha elkészült, a rendszer egy sikeres üzenetet ad vissza a konzolra, és létrehoz egy VM Image Builder konfigurációs sablont a $imageResourceGroup. Ha meg szeretné tekinteni ezt az erőforrást az erőforráscsoportban, nyissa meg az Azure Portalt, majd engedélyezze a Rejtett típusok megjelenítése lehetőséget.

A háttérben a VM Image Builder egy átmeneti erőforráscsoportot is létrehoz az előfizetésben. Ez az erőforráscsoport a következő formátumban hozza létre a rendszerképet: IT_<DestinationResourceGroup>_<TemplateName>.

Megjegyzés:

Ne törölje közvetlenül az átmeneti erőforráscsoportot. Először törölje a képsablon összetevőjét, amely az átmeneti erőforráscsoport törlését okozza.

Ha a szolgáltatás hibát jelez a képkonfigurációs sablon elküldésekor, tegye a következőket:

az resource delete \
    --resource-group $imageResourceGroup \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateWin01

A rendszerkép összeállításának indítása

Indítsa el a képkészítési folyamatot az erőforrás-meghívási művelettel.

az resource invoke-action \
     --resource-group $imageResourceGroup \
     --resource-type  Microsoft.VirtualMachineImages/imageTemplates \
     -n helloImageTemplateWin01 \
     --action Run

Várjon, amíg a build befejeződik.

Ha bármilyen hibát tapasztal, tekintse meg az Azure VM Image Builder szolgáltatás hibaelhárítását.

Create the VM

Hozza létre a virtuális gépet a létrehozott rendszerkép használatával. Az alábbi kódban cserélje le <a jelszót> a virtuális gépen lévő aibuser saját jelszavára.

az vm create \
  --resource-group $imageResourceGroup \
  --name aibImgWinVm00 \
  --admin-username aibuser \
  --admin-password <password> \
  --image $imageName \
  --location $location

A testreszabás ellenőrzése

Hozzon létre távoli asztali kapcsolatot a virtuális géppel a virtuális gép létrehozásakor beállított felhasználónévvel és jelszóval. A virtuális gépen nyisson meg egy parancssori ablakot, majd írja be a következőt:

dir c:\

A rendszerkép testreszabása során a következő két könyvtár jön létre:

  • buildActions
  • buildArtifacts

Az erőforrások törlése

Ha elkészült, törölje a létrehozott erőforrásokat.

  1. Törölje a VM Image Builder-sablont.

    az resource delete \
        --resource-group $imageResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateWin01
    
  2. Törölje a szerepkör-hozzárendelést, a szerepkördefiníciót és a felhasználói identitást.

    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. Törölje a kép erőforráscsoportját.

    az group delete -n $imageResourceGroup
    

További lépések

A cikk által használt JSON-fájl összetevőiről a VM Image Builder sablonreferenciája nyújt további információt.