Share via


Az Azure Image Builder eseményindítóinak használata automatikus rendszerkép-létrehozás beállításához

Az Azure Image Builder (AIB) eseményindítóival automatikus rendszerkép-buildeket állíthat be, ha bizonyos feltételek teljesülnek a buildelési folyamatban.

Fontos

Tájékoztatjuk, hogy a régiónként engedélyezett eseményindítók száma korlátozott, előfizetésenként régiónként 100.

Megjegyzés:

Jelenleg csak egy új forrásrendszerkép eseményindítójának beállítását támogatjuk, de várhatóan a jövőben is támogatni fogjuk a különböző típusú eseményindítókat.

Előfeltételek

Az első eseményindító beállítása előtt győződjön meg arról, hogy az Azure Image Builder API 2022-07-01-es verzióját használja.

Eseményindító beállítása az Azure Image Builderben

A szolgáltatók regisztrálása

A VM Image Builder eseményindítókkal való használatához regisztrálnia kell az alábbi 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

Regisztrálja az automatikus rendszerkép-létrehozási eseményindítók funkciót:

az feature register --namespace Microsoft.VirtualMachineImages --name Triggers

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

Először be kell állítania néhány változót, amelyeket többször is használni fog a parancsokban.

# Resource group name - ibTriggersTestRG in this example
resourceGroupName=ibTriggersRG
# Datacenter location - West US 2 in this example
location=westus2
# Additional region to replicate the image to - East US in this example
additionalregion=eastus2
# Name of the Azure Compute Gallery - ibTriggersGallery in this example
acgName=ibTriggersGallery
# Name of the image definition to be created - ibTriggersImageDef in this example
imageDefName=ibTriggersImageDef
# Name of the Trigger to be created - ibTrigger in this example
ibTriggerName=ibTrigger
# Name of the image template to be created - ibTriggersImageTemplate in this example
imageTemplateName=ibTriggersImageTemplate
# Reference name in the image distribution metadata
runOutputName=ibTriggersTestRun
# Create a variable for your subscription ID
subscriptionID=$(az account show --query id --output tsv)

Erőforráscsoport létrehozása

Most létre kell hoznia egy erőforráscsoportot, ahol tárolhatja a képsablont. Az erőforráscsoport létrehozásához használja a következő parancsot:

az group create -n $resourceGroupName -l $location

Felügyelt identitás létrehozása a szolgáltatáshoz

Emellett létre kell hoznia egy felügyelt identitást is, amelyet a rendszerképsablonhoz (és potenciálisan az Azure Image Builder buildelési virtuális gépéhez) fog használni. Ebben a példában létrehozunk egy felügyelt identitást "Közreműködői" hozzáféréssel, de igény szerint finomíthatja a felügyelt identitáshoz rendelt engedélyeket vagy szerepköröket mindaddig, amíg az Azure Image Builder szolgáltatás megfelelő működéséhez szükséges engedélyeket tartalmazza.

Az Azure Image Builder szolgáltatáshoz szükséges engedélyekkel kapcsolatos további információkért tekintse meg az alábbi dokumentációt: Azure VM Image Builder-engedélyek konfigurálása az Azure CLI használatával

A felügyelt identitások Azure Image Builderben való hozzárendelésével és használatával kapcsolatos további információkért tekintse meg a következő dokumentációt: VM Image Builder-sablonhivatkozás: Identity

A következő paranccsal hozza létre a képsablonhoz használni kívánt felügyelt identitást:

# 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 $resourceGroupName -n $identityName

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

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

# Grant "Contributor" access to the user-assigned identity
az role assignment create \
    --assignee $imgBuilderCliId \
    --role "Contributor" \
    --scope /subscriptions/$subscriptionID/resourceGroups/$resourceGroupName

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 $resourceGroupName \
    --gallery-name $acgName

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

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

A képsablon létrehozása

Töltse le a példa JSON-sablont, és konfigurálja a változókkal. A következő képsablon egy platformrendszerképet használ a forrásként, de a forrást azure compute gallery-rendszerképre módosíthatja, ha automatikus rendszerkép-összeállításokat szeretne beállítani, amikor az Azure Compute Gallery új rendszerképverziót használ.

curl https://raw.githubusercontent.com/Azure/azvmimagebuilder/main/quickquickstarts/9_Setting_up_a_Trigger_with_a_Custom_Linux_Image/helloImageTemplate.json -o helloImageTemplateforTriggers.json
sed -i -e "s/<subscriptionID>/$subscriptionID/g" helloImageTemplateforTriggers.json
sed -i -e "s/<rgName>/$resourceGroupName/g" helloImageTemplateforTriggers.json
sed -i -e "s/<imageDefName>/$imageDefName/g" helloImageTemplateforTriggers.json
sed -i -e "s/<acgName>/$acgName/g" helloImageTemplateforTriggers.json
sed -i -e "s/<region1>/$location/g" helloImageTemplateforTriggers.json
sed -i -e "s/<region2>/$additionalregion/g" helloImageTemplateforTriggers.json
sed -i -e "s/<runOutputName>/$runOutputName/g" helloImageTemplateforTriggers.json
sed -i -e "s%<imgBuilderId>%$imgBuilderId%g" helloImageTemplateforTriggers.json

Képsablon követelményei:

  • A source rendszerképnek platformrendszerképnek vagy Azure Compute Gallery-rendszerképnek kell lennie (jelenleg csak ez a két forrás engedélyezett)
  • Platformrendszerkép használata esetén a forrás verziójának kell lennie Latest. Azure Compute Gallery-rendszerkép esetén az erőforrás-azonosító utolsó részét kell beállítani Latest, amelynek a verzió neve szerepel.
  • Nem adhat meg verziót, ha a rendszerképet egy Azure Compute Galleryben terjeszti. A verzió automatikusan növekszik.
  • Ha a forrás egy Azure Compute Gallery-rendszerképre van állítva, és az elosztás egy Azure Compute Galleryre van állítva, a forrásgyűjtemény képe és az elosztási katalógus képe nem lehet ugyanaz. Az Azure Compute Gallery rendszerképdefiníció-azonosítója nem lehet ugyanaz mind a forrásgyűjtemény rendszerképe, mind az elosztott katalógus képe esetében.
  • A képsablonban a "Sikeres" provisioningStateértéknek kell lennie, ami azt jelenti, hogy a sablon probléma nélkül lett létrehozva. Ha a sablon kiépítése nem sikerült, nem fog tudni eseményindítót létrehozni.

A sablon konfigurálása után a következő paranccsal küldje el a rendszerképkonfigurációt az Azure Image Builder szolgáltatásnak:

az image builder create -g $resourceGroupName -n $imageTemplateName --image-template helloImageTemplateforTriggers.json

A következő paranccsal ellenőrizheti, hogy a képsablon sikeresen létrejött-e:

az image builder show --name $imageTemplateName --resource-group $resourceGroupName

Megjegyzés:

A fenti parancs futtatásakor a provisioningState következőnek kell lennie: "Sikeres", ami azt jelenti, hogy a sablon probléma nélkül lett létrehozva. Ha a provisioningState rendszer nem mondja, hogy sikeres volt, nem fog tudni eseményindítót létrehozni a képsablon használatával.

Forrásindító létrehozása

Töltse le a példa triggersablont, és konfigurálja a változókkal. Az alábbi eseményindító elindít egy új rendszerkép-összeállítást a forráslemezkép frissítésekor.

curl https://raw.githubusercontent.com/kof-f/azvmimagebuilder/main/quickquickstarts/9_Setting_up_a_Trigger_with_a_Custom_Linux_Image/trigger.json -o trigger.json
sed -i -e "s/<region1>/$location/g" trigger.json

Eseményindítók követelményei:

  • Az eseményindító helyének meg kell egyeznie a képsablon helyével. Ez a az resource create parancsmag követelménye.
  • Jelenleg az egyik kind eseményindítót támogatjuk, amely egy "SourceImage"
  • Képenként csak egy "SourceImage" eseményindítót támogatunk. Ha már rendelkezik "SourceImage" eseményindítóval a képen, akkor nem hozhat létre újat.
  • A mezőt nem kind frissítheti másik típusú eseményindítóra. Törölnie kell az eseményindítót, és újra létre kell hoznia, vagy létre kell hoznia egy másik eseményindítót a megfelelő konfigurációval.

Az alábbi paranccsal adja hozzá az eseményindítót az erőforráscsoporthoz.

az image builder trigger create --name $ibTriggerName --resource-group $resourceGroupName --image-template-name $imageTemplateName --kind SourceImage

Az alábbi paranccsal ellenőrizheti, hogy az eseményindító sikeresen létrejött-e:

az image builder trigger show --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName

Megjegyzés:

A fenti parancs futtatásakor azt provisioningState kell mondani, Succeededami azt jelenti, hogy az eseményindító probléma nélkül lett létrehozva. In status, a kódnak el kell mondania Healthy , és az üzenetnek el kell mondania Trigger is active.

Az erőforrások törlése

Az eseményindító törlése

Az eseményindító törléséhez használja a következő parancsot:

az image builder trigger delete --name $ibTriggerName --image-template-name $imageTemplateName --resource-group $resourceGroupName

A képsablon törlése

A képsablon törléséhez használja a következő parancsot:

az image builder delete --name $imageTemplateName --resource-group $resourceGroupName

További lépések

További információért tekintse meg az Image Builder sablonreferenciát .