Windows rendszerű virtuális gép létrehozása az Azure Image Builderrel

Ez a cikk bemutatja, hogyan hozhat létre testreszabott Windows a Azure VM Image Builder. A cikkben látható példa testreszabók segítségével szabja testre a képet:

  • PowerShell (ScriptUri) – töltsön le és futtatason egy PowerShell-szkriptet.
  • Windows Újraindítás – újraindítja a virtuális gépet.
  • PowerShell (beágyazott) – egy adott parancs futtatása. Ebben a példában egy könyvtárat hoz létre a virtuális gépen a mkdir c:\\buildActions használatával.
  • Fájl – másol egy fájlt a GitHub a virtuális gépre. Ez a példa index.md virtuális c:\buildArtifacts\index.html gépre másolja a következőt: .
  • buildTimeoutInMinutes – Növelje a buildidőt a hosszabb ideig futó buildek érdekében, az alapértelmezett érték 240 perc, a buildek pedig megnövelik a buildek idejét, így hosszabb ideig futó buildek futnak.
  • vmProfile – vmSize és Network tulajdonságok megadása
  • osDiskSizeGB – növelheti a kép méretét
  • identity – identitás biztosítása az Azure Image Builder számára, amely a build során használható

Megadhatja a következőt buildTimeoutInMinutes is: . Az alapértelmezett érték 240 perc, és megnövelheti a buildidőt, így hosszabb ideig futó buildek futnak.

A rendszerkép konfigurálása egy .json-mintasablont használ. A használt .json-fájl itt található:helloImageTemplateWin.js a következőn:.

Megjegyzés

A Windows felhasználók számára az alábbi Azure CLI-példák futtathatók a Azure Cloud Shell Bash használatával.

A funkciók regisztrálása

Az Azure Image Builder regisztrálnia kell a funkciót.

Ellenőrizze a regisztrációt.

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

Ha nem regisztráltat, futtassa a következőt:

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

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

Néhány információt többször is felhasználunk, ezért létrehozunk néhány változót az információk tárolására.

# Resource group name - we are using myImageBuilderRG in this example
imageResourceGroup=myWinImgBuilderRG
# Region location 
location=WestUS2
# Name for the image 
imageName=myWinBuilderImage
# Run output name
runOutputName=aibWindows
# name of the image to be created
imageName=aibWinImage

Hozzon létre egy változót az előfizetés-azonosítóhoz. Ezt a használatával kaphatja az account show | grep id meg.

subscriptionID=<Your subscription ID>

Erőforráscsoport létrehozása

Ez az erőforráscsoport tárolja a rendszerkép-konfigurációs sablon összetevőt és a rendszerképet.

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áscsoporthoz

Image Builder a megadott felhasználói identitással fogja bejektálni a rendszerképet az erőforráscsoportba. Ebben a példában létre fog hozni egy Azure-beli szerepkör-definíciót, amely részletes műveleteket végez a rendszerkép terjesztéséhez. A rendszer ezután hozzárendeli a szerepkör-definíciót a felhasználói identitáshoz.

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

# create user assigned identity for image builder to access the storage account where the script is located
idenityName=aibBuiUserId$(date +'%s')
az identity create -g $imageResourceGroup -n $idenityName

# get identity id
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $idenityName | grep "clientId" | cut -c16- | tr -d '",')

# get the user identity URI, needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$idenityName

# download 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 role definition to the user assigned identity
az role assignment create \
    --assignee $imgBuilderCliId \
    --role "$imageRoleDefName" \
    --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup

Példaként a rendszerképkonfigurációs sablon letöltése

Létre lett hozva egy paraméteres rendszerképkonfigurációs sablon, hogy kipróbálja. Töltse le a .json példafájlt, és konfigurálja a korábban beállított változók használatával.

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 a következővel: .

vi helloImageTemplateWin.json

Megjegyzés

A forrásként használt rendszerképhez mindig meg kell adnia egy verziót, amely nem latest használható. Ha hozzáadja vagy módosítja azt az erőforráscsoportot, amelybe a rendszerképet terjeszteni kell, meg kell győződnie arról, hogy az engedélyek be vannak állítva az erőforráscsoporton.

A rendszerkép létrehozása

A rendszerkép konfigurációjának elküldése a virtuális gép Image Builder szolgáltatásnak

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

Ha elkészült, ez egy sikert visszakért üzenetet ad vissza a konzolra, és létrehoz egy et a Image Builder Configuration Template $imageResourceGroup -ban. Ezt az erőforrást az erőforráscsoportban láthatja a Azure Portal, ha engedélyezi a "Rejtett típusok megjelenítése" funkció engedélyezését.

A háttérben a Image Builder egy átmeneti erőforráscsoportot is létrehoz az előfizetésben. A rendszer ezt az erőforráscsoportot használja a rendszerkép-buildhez. A következő formátumban lesz: IT_<DestinationResourceGroup>_<TemplateName>

Megjegyzés

Az átmeneti erőforráscsoportot nem törölheti közvetlenül. Először törölje a rendszerképsablon összetevőt. Ez az átmeneti erőforráscsoport törlését fogja okozhatni.

Ha a szolgáltatás hibát ad vissza a rendszerkép-konfigurációs sablon beküldési ideje alatt:

  • Tekintse át ezeket a hibaelhárítási lépéseket.
  • Mielőtt újra próbálkozik a beküldési művelettel, törölnie kell a sablont az alábbi kódrészlet használatával.
az resource delete \
    --resource-group $imageResourceGroup \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateLinux01

A rendszerkép-összeállítás elkezdődhet

Indítsa el a rendszerkép-építés folyamatát az az resource invoke-action használatával.

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

Várjon, amíg a build befejeződik. Ez körülbelül 15 percet is igénybe vehet.

Ha hibába ütközik, tekintse át ezeket a hibaelhárítási lépéseket.

A virtuális gép létrehozása

Hozza létre a virtuális gépet a létrehozott rendszerkép használatával. Cserélje <password> le a helyére a saját jelszavát a aibuser virtuális gépen.

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 asztal kapcsolatot a virtuális géphez a virtuális gép létrehozásakor megadott felhasználónévvel és jelszóval. A virtuális gépen belül nyisson meg egy parancssort, és írja be a következőt:

dir c:\

A kép testreszabása során létrehozott két könyvtárnak kell látsza:

  • buildActions
  • buildArtifacts

A fölöslegessé vált elemek eltávolítása

Ha végzett, törölje az erőforrásokat.

A képszerkesztő sablon törlése

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

Törölje a szerepkör-hozzárendelést, a szerepkör-definí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

A rendszerkép erőforráscsoport törlése

az group delete -n $imageResourceGroup

Következő lépések

A cikkben használt .json-fájl összetevőivel kapcsolatos további információkért tekintse meg a Képszerkesztő sablonreferenciáját.