Linux-rendszerkép létrehozása és terjesztése egy Azure Compute Galleryben
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai
Ez a cikk bemutatja, hogyan használhatja az Azure Image Buildert és az Azure CLI-t képverzió létrehozásához egy Azure Compute Galleryben (korábbi nevén megosztott képgyűjteményben ), majd terjesztheti a rendszerképet globálisan. Ezt az Azure PowerShell használatával is megteheti.
A rendszerkép konfigurálásához egy .json mintasablont használunk. A használt .json fájl a következő: helloImageTemplateforSIG.json.
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
Az Azure Image Builder használatához regisztrálnia kell a funkciót.
Ellenőrizze a regisztrációjá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
az provider show -n Microsoft.ContainerInstance | grep registrationState
Ha nem azt mondják, hogy regisztrálva vannak, 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
az provider register -n Microsoft.ContainerInstance
Változók és engedélyek beállítása
Néhány információt folyamatosan használunk, ezért létrehozunk néhány változót az információk tárolásához.
Az 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. Frissítse a példában szereplő erőforráscsoport nevét úgy, hogy ugyanaz legyen, mint a forrás által 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 Azure Compute 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.
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
Az Image Builder a megadott felhasználói identitással injektálja a rendszerképet az Azure Compute Gallerybe. Ebben a példában létrehoz egy Azure-szerepkördefiníciót, amely részletes műveleteket végez a rendszerkép katalógusban való terjesztéséhez. A szerepkördefiníció ezután hozzá lesz rendelve a felhasználói identitáshoz.
# create user assigned identity for image builder to access the storage account where the script is located
identityName=aibBuiUserId$(date +'%s')
az identity create -g $sigResourceGroup -n $identityName
# get identity id
imgBuilderCliId=$(az identity show -g $sigResourceGroup -n $identityName --query clientId -o tsv)
# get the user identity URI, needed for the template
imgBuilderId=/subscriptions/$subscriptionID/resourcegroups/$sigResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$identityName
# 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
Képdefiníció és katalógus létrehozása
Az Image Builder Azure Compute Galleryrel való használatához rendelkeznie kell egy meglévő katalógussal és képdefinícióval. Az Image Builder nem fogja létrehozni 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 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ó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
Ez a következő rész létrehozza a képverziót a katalógusban.
Küldje el a képkonfiguráció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 ö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 egy ideig. Várjon, amíg ez a rész befejeződik, mielőtt továbblépne egy virtuális gép létrehozására.
Create the VM
Hozzon létre egy virtuális gépet az Azure Image Builder által létrehozott rendszerkép-verzió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" \
--generate-ssh-keys
Csatlakozzon a virtuális géphez SSH-n keresztül.
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 :-) **
*******************************************************
Clean up resources
Ha most meg szeretné próbálni újrakonkonformizálni a képverziót, hogy egy új verziót hozzon létre ugyanannak a lemezképnek, hagyja ki a következő lépéseket, és folytassa az Azure Image Builder használatával egy másik képverzió létrehozásához.
Ez törli a létrehozott lemezképet, valamint 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 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ógus összes képdefinícióját.
Törölje a képszerkesztő sablont.
az resource delete \
--resource-group $sigResourceGroup \
--resource-type Microsoft.VirtualMachineImages/imageTemplates \
-n helloImageTemplateforSIG01
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
Kérje le a képszerkesztő által létrehozott képverziót, amely mindig a következővel 0.
kezdődik, majd törölje a képverziót
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
További lépések
További információ az Azure Compute Gallerys szolgáltatásról.