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


Linux-rendszerkép létrehozása és terjesztése egy Azure Compute Galleryben az Azure CLI használatával

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai

Ebből a cikkből megtudhatja, hogyan hozhat létre képverziót egy Azure Compute Galleryben (korábban megosztott képgyűjteményben ), és hogyan terjesztheti a rendszerképet globálisan az Azure VM Image Builder és az Azure CLI használatával. Képverziót az Azure PowerShell használatával is létrehozhat.

Ez a cikk egy JSON-mintasablont használ a rendszerkép konfigurálásához. A JSON-fájl a helloImageTemplateforSIG.json található.

A rendszerkép Azure Compute Galleryben való terjesztéséhez a sablon a sharedImage értéket használja a distribute sablon szakaszának értékeként.

A szolgáltatók regisztrálása

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

az provider show -n Microsoft.VirtualMachineImages -o json | grep registrationState
az provider show -n Microsoft.KeyVault -o json | grep registrationState
az provider show -n Microsoft.Compute -o json | grep registrationState
az provider show -n Microsoft.Storage -o json | grep registrationState
az provider show -n Microsoft.Network -o json | 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 és engedélyek beállítása

Mivel néhány információt ismétlődően fog használni, hozzon létre néhány változót az információk tárolásához.

A VM Image Builder csak abban az erőforráscsoportban támogatja az egyéni képek létrehozását, mint a forrás által felügyelt rendszerkép. Az alábbi példában frissítse az erőforráscsoport nevét úgy, hogy ugyanaz legyen, mint a forrás által felügyelt rendszerkép.

# Resource group name - ibLinuxGalleryRG in this example
sigResourceGroup=ibLinuxGalleryRG
# Datacenter location - West US 2 in this example
location=westus2
# Additional region to replicate the image to - East US in this example
additionalregion=eastus
# Name of the Azure Compute Gallery - myGallery in this example
sigName=myIbGallery
# Name of the image definition to be created - myImageDef in this example
imageDefName=myIbImageDef
# Reference name in the image distribution metadata
runOutputName=aibLinuxSIG

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

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

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

A VM Image Builder a megadott felhasználói identitással injektálja a rendszerképet egy Azure Compute Gallerybe. Ebben a példában egy Azure-szerepkördefiníciót hoz létre a rendszerkép terjesztéséhez szükséges konkrét műveletekkel. A szerepkördefiníció ezután hozzá lesz rendelve a felhasználói identitáshoz.

# Create user-assigned identity for VM Image Builder to access the storage account where the script is stored
identityName=aibBuiUserId$(date +'%s')
az identity create -g $sigResourceGroup -n $identityName

# Get the identity ID
imgBuilderCliId=$(az identity show -g $sigResourceGroup -n $identityName --query clientId -o tsv)

# Get the user identity URI that's needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$sigResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName

# Download an Azure role-definition template, and update the template with the parameters that were 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 a role definition to the user-assigned identity
az role assignment create \
    --assignee $imgBuilderCliId \
    --role "$imageRoleDefName" \
    --scope /subscriptions/$subscriptionID/resourceGroups/$sigResourceGroup

Ha a virtuálisgép-rendszerkép-készítőt az Azure Compute Gallery használatával szeretné használni, rendelkeznie kell egy meglévő katalógussal és képdefinícióval. A VM Image Builder nem hozza létre a katalógust és a képdefiníciót.

Ha még nem rendelkezik katalógussal és képdefinícióval, először hozza létre őket.

Először hozzon létre egy katalógust:

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 20_04-lts-gen2 \
   --os-type Linux \
   --hyper-v-generation V2 \
   --features SecurityType=TrustedLaunchSupported

A JSON-fájl letöltése és konfigurálása

Töltse le a JSON-sablont, és konfigurálja a változókkal:

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 képverzió létrehozása

Ebben a szakaszban a képverziót hozza létre a katalógusban.

Küldje el a képkonfigurációt az Azure VM 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 összeállítását:

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 eltarthat néhány percig. Várjon, amíg ez a rész befejeződik, mielőtt továbblép a virtuális gép létrehozásához.

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

Hozza létre a virtuális gépet a VM Image Builder által létrehozott képverzióból.

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" \
  --security-type TrustedLaunch \
  --generate-ssh-keys

Csatlakozás a virtuális géphez a Secure Shell (SSH) használatával:

ssh aibuser@<publicIpAddress>

Amint létrejött az SSH-kapcsolat, látnia kell, hogy a rendszerkép a Nap üzenetével lett testre szabva:

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

Az erőforrások törlése

Feljegyzés

Ha most meg szeretné próbálni újrakonfigurálni a képverziót ugyanannak a képnek egy új verziójának létrehozásához, hagyja ki az itt ismertetett lépést, és lépjen a Virtuálisgép-képszerkesztővel egy másik képverzió létrehozásához.

Ha már nincs szüksége az ebben a cikkben ismertetett folyamat során létrehozott erőforrásokra, az alábbi lépéssel törölheti őket.

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

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

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

    az resource delete \
        --resource-group $sigResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIG01
    
  2. Engedélyek hozzárendeléseinek, szerepköreinek és identitásának 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
    
  3. Szerezze be a VM Image Builder által létrehozott képverziót (mindig ezzel 0.kezdődik), majd törölje.

    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
    
  4. Törölje a képdefiníciót.

    az sig image-definition delete \
    -g $sigResourceGroup \
    --gallery-name $sigName \
    --gallery-image-definition $imageDefName \
    --subscription $subscriptionID
    
  5. Törölje a katalógust.

    az sig delete -r $sigName -g $sigResourceGroup
    
  6. Törölje az erőforráscsoportot.

    az group delete -n $sigResourceGroup -y
    

Következő lépések

További információ az Azure Compute Galleryről.