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
Een installatiekopieëndefinitie en galerie maken
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.
Verwijder de VM Image Builder-sjabloon.
az resource delete \ --resource-group $sigResourceGroup \ --resource-type Microsoft.VirtualMachineImages/imageTemplates \ -n helloImageTemplateforSIG01
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
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
Verwijder de definitie van de installatiekopieën.
az sig image-definition delete \ -g $sigResourceGroup \ --gallery-name $sigName \ --gallery-image-definition $imageDefName \ --subscription $subscriptionID
Verwijder de galerie.
az sig delete -r $sigName -g $sigResourceGroup
Verwijder de resourcegroep.
az group delete -n $sigResourceGroup -y
Volgende stappen
Meer informatie over Azure Compute Gallery.