Share via


Een Linux-installatiekopieën maken en distribueren naar een Azure Compute Gallery met behulp van de Azure CLI

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

In dit artikel leert u hoe u Azure VM Image Builder en de Azure CLI gebruikt om een installatiekopieënversie te maken in een Azure Compute Gallery (voorheen Shared Image Gallery ) en de installatiekopieën vervolgens wereldwijd te distribueren. U kunt ook een installatiekopieënversie maken met behulp van Azure PowerShell.

In dit artikel wordt een voorbeeld-JSON-sjabloon gebruikt om de installatiekopieën te configureren. Het JSON-bestand bevindt zich op helloImageTemplateforSIG.json.

Als u de installatiekopie wilt distribueren naar een Azure Compute Gallery, gebruikt de sjabloon sharedImage als de waarde voor de distribute sectie van de sjabloon.

De providers registreren

Als u VM Image Builder wilt gebruiken, moet u de providers registreren. Controleer uw registratie door de volgende opdrachten uit te voeren:

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

Als de uitvoer niet geregistreerd staat, voert u de volgende opdrachten uit:

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

Variabelen en machtigingen instellen

Omdat u enkele stukjes informatie herhaaldelijk gebruikt, maakt u enkele variabelen om die informatie op te slaan.

VM Image Builder ondersteunt het maken van aangepaste installatiekopieën alleen in dezelfde resourcegroep als de door de bron beheerde installatiekopieën. Werk in het volgende voorbeeld de naam van de resourcegroep bij zodat deze dezelfde resourcegroep is als de door de bron beheerde installatiekopieën.

# 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

Maak een variabele voor uw abonnements-id:

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

De resourcegroep maken:

az group create -n $sigResourceGroup -l $location

Een door de gebruiker toegewezen identiteit maken en machtigingen instellen voor de resourcegroep

VM Image Builder maakt gebruik van de opgegeven gebruikersidentiteit om de installatiekopieën in een Azure Compute-galerie te injecteren. In dit voorbeeld maakt u een Azure-roldefinitie met specifieke acties voor het distribueren van de installatiekopieën. De roldefinitie wordt vervolgens toegewezen aan de gebruikersidentiteit.

# 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

Als u VM Image Builder wilt gebruiken met Azure Compute Gallery, moet u een bestaande galerie en installatiekopieëndefinitie hebben. VM Image Builder maakt de galerie en installatiekopieëndefinitie niet voor u.

Als u nog geen galerie en definitie van installatiekopieën hebt die u wilt gebruiken, begint u met het maken ervan.

Maak eerst een galerie:

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

Maak vervolgens een definitie van een installatiekopieën:

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

Het JSON-bestand downloaden en configureren

Download de JSON-sjabloon en configureer deze met uw variabelen:

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

De installatiekopieversie maken

In deze sectie maakt u de versie van de installatiekopieën in de galerie.

Verzend de installatiekopieënconfiguratie naar de Azure VM Image Builder-service:

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

Start de build van de installatiekopieën:

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

Het kan even duren voordat de installatiekopieën worden gemaakt en gerepliceerd naar beide regio's. Wacht totdat dit onderdeel is voltooid voordat u doorgaat met het maken van een virtuele machine.

De VM maken

Maak de VM op basis van de installatiekopieënversie die is gemaakt door VM 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" \
  --security-type TrustedLaunch \
  --generate-ssh-keys

Verbinding maken met de virtuele machine via Secure Shell (SSH):

ssh aibuser@<publicIpAddress>

Zodra uw SSH-verbinding tot stand is gebracht, ziet u dat de afbeelding is aangepast met een bericht van de dag:

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

Uw resources opschonen

Notitie

Als u nu de versie van de installatiekopieën opnieuw wilt bekijken om een nieuwe versie van dezelfde installatiekopieën te maken, slaat u de hier beschreven stap over en gaat u naar VM Image Builder gebruiken om een andere versie van de installatiekopieën te maken.

Als u de resources die zijn gemaakt tijdens het volgen van het proces in dit artikel niet meer nodig hebt, kunt u ze als volgt verwijderen.

Met dit proces worden zowel de installatiekopieën verwijderd die u hebt gemaakt als alle andere resourcebestanden. Zorg ervoor dat u deze implementatie hebt voltooid voordat u de resources verwijdert.

Wanneer u galerieresources verwijdert, moet u alle installatiekopieën verwijderen voordat u de definitie van de installatiekopieën kunt verwijderen die is gebruikt om deze te maken. Als u een galerie wilt verwijderen, moet u eerst alle definities van de installatiekopieën in de galerie hebben verwijderd.

  1. Verwijder de VM Image Builder-sjabloon.

    az resource delete \
        --resource-group $sigResourceGroup \
        --resource-type Microsoft.VirtualMachineImages/imageTemplates \
        -n helloImageTemplateforSIG01
    
  2. Machtigingentoewijzingen, rollen en identiteit verwijderen.

    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. Haal de installatiekopieënversie op die is gemaakt door VM Image Builder (deze begint altijd met 0.) en verwijder deze.

    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. Verwijder de definitie van de installatiekopieën.

    az sig image-definition delete \
    -g $sigResourceGroup \
    --gallery-name $sigName \
    --gallery-image-definition $imageDefName \
    --subscription $subscriptionID
    
  5. Verwijder de galerie.

    az sig delete -r $sigName -g $sigResourceGroup
    
  6. Verwijder de resourcegroep.

    az group delete -n $sigResourceGroup -y
    

Volgende stappen

Meer informatie over Azure Compute Gallery.