Linux-rendszerkép létrehozása és továbbítása egy megosztott rendszerkép-katalógusba

Ez acikk bemutatja, hogyan hozhat létre rendszerképverziót az Azure Image Builder és az Azure CLI használatával egy Shared Image Gallery-ban, majd terjesztheti a rendszerképet globálisan. Ezt a használatával is Azure PowerShell.

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

A lemezkép egy Shared Image Gallery való terjesztéséhez a sablon a sharedImage értéket használja distribute a sablon szakaszának értékeként.

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 és engedélyek 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.

Image Builder csak az egyéni rendszerképek létrehozását támogatja ugyanabban az erőforráscsoportban, mint a forrásként felügyelt rendszerkép. Frissítse a példában látható erőforráscsoport nevét úgy, hogy az ugyanaz legyen, mint a forrásként felügyelt rendszerkép.

# Resource group name - we are using ibLinuxGalleryRG in this example
sigResourceGroup=ibLinuxGalleryRG
# Datacenter location - we are using West US 2 in this example
location=westus2
# Additional region to replicate the image to - we are using East US in this example
additionalregion=eastus
# name of the shared image gallery - in this example we are using myGallery
sigName=myIbGallery
# name of the image definition to be created - in this example we are using myImageDef
imageDefName=myIbImageDef
# image distribution metadata reference name
runOutputName=aibLinuxSIG

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=<Subscription ID>

Hozza létre az erőforráscsoportot.

az group create -n $sigResourceGroup -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óidentitást fogja használni a rendszerkép Azure-beli virtuális Shared Image Gallery (SIG) való Shared Image Gallery be. 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 SIG-be való terjesztéséhez. A rendszer ezután hozzárendeli a szerepkör-definíciót a felhasználói identitáshoz.

# 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 $sigResourceGroup -n $idenityName

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

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

# this command will download an Azure role definition template, and update the template with the parameters specified earlier.
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>/$sigResourceGroup/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/$sigResourceGroup

A Image Builder rendszerkép-katalógussal való használathoz meglévő rendszerkép-katalógusra és rendszerkép-definícióra van szükség. Image Builder nem hozza létre a rendszerkép-katalógust és a képdefiníciót.

Ha még nem rendelkezik használható katalógussal és képdefinícióval, először hozzon létre egy katalógust. Először hozzon létre egy képkatatárat.

az sig create \
    -g $sigResourceGroup \
    --gallery-name $sigName

Ezután hozzon létre egy képdefiníciót.

az sig image-definition create \
   -g $sigResourceGroup \
   --gallery-name $sigName \
   --gallery-image-definition $imageDefName \
   --publisher myIbPublisher \
   --offer myOffer \
   --sku 18.04-LTS \
   --os-type Linux

A .json letöltése és konfigurálása

Töltse le a .json sablont, és konfigurálja a változóival.

curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/quickquickstarts/1_Creating_a_Custom_Linux_Shared_Image_Gallery_Image/helloImageTemplateforSIG.json -o helloImageTemplateforSIG.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforSIG.json
sed -i -e "s/<rgName>/$sigResourceGroup/g" helloImageTemplateforSIG.json
sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforSIG.json
sed -i -e "s/<sharedImageGalName>/$sigName/g" helloImageTemplateforSIG.json
sed -i -e "s/<region1>/$location/g" helloImageTemplateforSIG.json
sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforSIG.json
sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforSIG.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforSIG.json

A rendszerkép verziójának létrehozása

A következő rész a rendszerkép verzióját hozza létre a katalógusban.

Küldje el a rendszerkép konfigurációját az Azure Image Builder szolgáltatásnak.

az resource create \
    --resource-group $sigResourceGroup \
    --properties @helloImageTemplateforSIG.json \
    --is-full-object \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateforSIG01

Indítsa el a rendszerkép buildet.

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

A rendszerkép létrehozása és replikálása mindkét régióba egy kis ideig tart. Várja meg, amíg ez a rész be nem fejeződik, mielőtt továbblép a virtuális gép létrehozására.

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

Hozzon létre egy virtuális gépet az Azure Image Builder.

az vm create \
  --resource-group $sigResourceGroup \
  --name myAibGalleryVM \
  --admin-username aibuser \
  --location $location \
  --image "/subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup/providers/Microsoft.Compute/galleries/$sigName/images/$imageDefName/versions/latest" \
  --generate-ssh-keys

Csatlakozzon a virtuális géphez SSH-n keresztül.

ssh aibuser@<publicIpAddress>

Látnia kell, hogy a rendszerkép az SSH-kapcsolat létrejötte után a nap üzenettel lett testre szabva.

*******************************************************
**            This VM was built from the:            **
**      !! AZURE VM IMAGE BUILDER Custom Image !!    **
**         You have just been Customized :-)         **
*******************************************************

Az erőforrások eltávolítása

Ha most szeretné újra testre szabni a rendszerkép verzióját ugyanazon rendszerkép új verziójának létrehozásához, hagyja ki a következő lépéseket, és ugorjon az Azure Image Builder használata egy másik rendszerképverzió létrehozásához.

Ezzel törli a létrehozott rendszerképet és az összes többi erőforrásfájlt. Az erőforrások törlése előtt győződjön meg arról, hogy befejezte az üzembe helyezést.

A rendszerkép-katalógus erőforrásainak törlésekor törölnie kell az összes rendszerképverziót, mielőtt törölheti a létrehozásukhoz használt rendszerkép-definíciót. Katalógus törléséhez először törölnie kell a katalógusban található összes képdefiníciót.

Törölje a képszerkesztő sablont.

az resource delete \
    --resource-group $sigResourceGroup \
    --resource-type Microsoft.VirtualMachineImages/imageTemplates \
    -n helloImageTemplateforSIG01

Engedély-hozzárendelések, szerepkörök és identitás törlése

az role assignment delete \
    --assignee $imgBuilderCliId \
    --role "$imageRoleDefName" \
    --scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup

az role definition delete --name "$imageRoleDefName"

az identity delete --ids $imgBuilderId

Szerezze be a rendszerképszerkesztő által létrehozott rendszerképverziót. Ez mindig a következővel kezdődik: 0. , majd a rendszerképverzió törlése

sigDefImgVersion=$(az sig image-version list \
   -g $sigResourceGroup \
   --gallery-name $sigName \
   --gallery-image-definition $imageDefName \
   --subscription $subscriptionID --query [].'name' -o json | grep 0. | tr -d '"')
az sig image-version delete \
   -g $sigResourceGroup \
   --gallery-image-version $sigDefImgVersion \
   --gallery-name $sigName \
   --gallery-image-definition $imageDefName \
   --subscription $subscriptionID

Törölje a képdefiníciót.

az sig image-definition delete \
   -g $sigResourceGroup \
   --gallery-name $sigName \
   --gallery-image-definition $imageDefName \
   --subscription $subscriptionID

Törölje a katalógust.

az sig delete -r $sigName -g $sigResourceGroup

Törölje az erőforráscsoportot.

az group delete -n $sigResourceGroup -y

Következő lépések

További információ az Azure Megosztott rendszerkép-katalógusok szolgáltatásról.