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.md
c:\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 avmSize
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:
- Lásd az Azure VM Image Builder szolgáltatás hibaelhárítását.
- A sablon újbóli elküldése előtt törölje a sablont az alábbi parancsok futtatásával:
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.
Törölje a VM Image Builder-sablont.
az resource delete \ --resource-group $imageResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateWin01
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
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.