Esercitazione: Creare e usare un'immagine personalizzata per i set di scalabilità di macchine virtuali con l'interfaccia della riga di comando di Azure

Quando si crea un set di scalabilità, si specifica un'immagine da usare quando vengono distribuite le istanze di macchina virtuale. Per ridurre il numero di attività dopo la distribuzione delle istanze di macchina virtuale, è possibile usare un'immagine di VM personalizzata. Questa immagine di VM personalizzata include le installazioni o le configurazioni delle applicazioni necessarie. Le istanze di macchina virtuale create nel set di scalabilità usano l'immagine di VM personalizzata e sono pronte per gestire il traffico delle applicazioni. In questa esercitazione si apprenderà come:

  • Creare una Raccolta di calcolo di Azure
  • Creare una definizione di immagine specializzata
  • Creare una versione di immagine
  • Creare un set di scalabilità da un'immagine specializzata
  • Condividere una raccolta di immagini

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Prerequisiti

  • Questo articolo richiede la versione 2.4.0 dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.

Panoramica

Una Raccolta di calcolo di Azure semplifica la condivisione di immagini personalizzate nell'organizzazione. Le immagini personalizzate sono come le immagini di marketplace, ma si possono creare autonomamente. Le immagini personalizzate possono essere usate per le configurazioni di avvio, ad esempio il precaricamento e le configurazioni di applicazioni e altre configurazioni del sistema operativo.

La raccolta di calcolo di Azure consente di condividere le immagini VM personalizzate con altri utenti. Scegliere le immagini che si intende condividere, le aree nelle quali si vuole renderle disponibili e i destinatari.

Creare e configurare una macchina virtuale di origine

Creare prima un gruppo di risorse con il comando az group create, quindi creare una VM con az vm create. Questa macchina virtuale viene quindi usata come origine per l'immagine.

L'esempio seguente crea una macchina virtuale basata su Linux denominata myVM nel gruppo di risorse denominato myResourceGroup.

export RANDOM_ID=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_ID"
export REGION="eastus"
export MY_VM_NAME="myVM"

az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

az vm create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_VM_NAME \
  --image debian11 \
  --admin-username azureuser \
  --generate-ssh-keys

Suggerimento

L'ID della VM viene mostrato nell'output del comando az vm create. Copiare e archiviarlo in una posizione sicura in modo da poterlo usare più avanti in questa esercitazione.

Una raccolta di immagini è la risorsa principale usata per l'abilitazione della condivisione di immagini.

I caratteri consentiti per i nomi della raccolta sono lettere maiuscole o minuscole, cifre, punti e punti. Il nome della raccolta non può contenere trattini. I nomi di raccolta devono essere univoci all'interno della sottoscrizione.

Creare una raccolta di immagini usando sig az create.

Nell'esempio seguente :

  • Si crea un gruppo di risorse per la raccolta denominata myGalleryRG che si trova negli Stati Uniti orientali.
  • La raccolta è denominata myGallery.
export MY_GALLERY_RG_NAME="myGalleryRG$RANDOM_ID"
export MY_GALLERY_NAME="myGallery$RANDOM_ID"

az group create --name $MY_GALLERY_RG_NAME --location $REGION
az sig create --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME

Creare una definizione dell'immagine

Le definizioni di immagini creano un raggruppamento logico per le immagini. Vengono usati per gestire le informazioni sulle versioni delle immagini create all'interno di esse.

I nomi delle definizioni di immagini possono essere costituiti da lettere maiuscole o minuscole, numeri, trattini e punti.

Assicurarsi che la definizione dell'immagine sia il tipo corretto:

  • Stato : se la macchina virtuale è stata generalizzata (usando Sysprep per Windows o waagent -deprovision per Linux), è necessario creare una definizione di immagine generalizzata usando --os-state generalized. Se si vuole usare la VM senza rimuovere gli account utente esistenti, creare una definizione di immagine specializzata usando --os-state specialized.
  • Tipo di sicurezza: le nuove macchine virtuali di Azure vengono create con Avvio attendibile configurato per impostazione predefinita. Questa esercitazione include esempi di codice successivi che riflettono la configurazione Avvio attendibile durante la creazione della definizione dell'immagine e del set di scalabilità. Se si sta creando un'immagine con una macchina virtuale in cui non è abilitata l'avvio attendibile, assicurarsi di riflettere il tipo di sicurezza corretto quando si creano entrambe le risorse. Per altre informazioni sull'avvio attendibile, vedere Avvio attendibile per le macchine virtuali di Azure.

Per altre informazioni sui valori che è possibile specificare per la definizione di immagine, vedere Definizioni di immagini.

Creare una definizione di immagine nella raccolta usando az sig image-definition create.

Nell'esempio seguente la definizione dell'immagine è:

  • Denominato myImageDefinition.
  • Configurato per un'immagine specializzata del sistema operativo Linux. Per creare una definizione per le immagini usando un sistema operativo Windows, usare --os-type Windows.
  • Configurato per l'avvio attendibile.
export MY_IMAGE_DEF_NAME="myImageDefinition$RANDOM_ID"
MY_PUBLISHER_NAME="myPublisher$RANDOM_ID"

az sig image-definition create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --publisher $MY_PUBLISHER_NAME \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized \
   --features SecurityType=TrustedLaunch

Suggerimento

L'ID della definizione di immagine viene mostrato nell'output del comando. Copiare e archiviarlo in una posizione sicura in modo da poterlo usare più avanti in questa esercitazione.

Creare una versione di immagine

Per creare una versione di immagine dalla macchina virtuale, usare az image gallery create-image-version.

I caratteri consentiti per la versione dell'immagine sono numeri e punti. I numeri devono essere compresi nell'intervallo di un valore Integer a 32 bit. Formato: VersionePrincipale.VersioneSecondaria.Patch.

Nell'esempio seguente :

  • La versione dell'immagine è 1.0.0.
  • Viene creata una replica nell'area Stati Uniti centro-meridionali e una replica nell'area Stati Uniti orientali. Le aree di replica devono includere l'area in cui si trova la macchina virtuale di origine.
  • --virtual-machine è l'ID della macchina virtuale creata in precedenza.
export MY_VM_ID=$(az vm show --name $MY_VM_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query "id" --output tsv)

az sig image-version create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --gallery-image-version 1.0.0 \
   --target-regions "southcentralus=1" "eastus=1" \
   --virtual-machine $MY_VM_ID

Nota

È necessario attendere che la versione dell'immagine finisca completamente di essere compilata e replicata prima di poter usare la stessa immagine per creare un'altra versione dell'immagine.

Quando si crea la versione dell'immagine, è anche possibile archiviare l'immagine nell'archiviazione Premium, aggiungendo --storage-account-type premium_lrs, oppure nell'archiviazione con ridondanza della zona, aggiungendo --storage-account-type standard_zrs.

Creare un set di scalabilità dall'immagine

Si crea un set di scalabilità usando az vmss create. Se si usa una macchina virtuale di origine specializzata, aggiungere il --specialized parametro per indicare che si tratta di un'immagine specializzata.

Quando si usa l'ID definizione immagine per --image per creare le istanze del set di scalabilità, si crea un set di scalabilità che usa la versione più recente dell'immagine disponibile. Se si vuole una versione specifica dell'immagine, assicurarsi di includere l'ID versione dell'immagine quando si definisce .--image

  • Esempio di immagine più recente: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage

  • Esempio di immagine specifica: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0

Nell'esempio seguente il set di scalabilità è:

  • Denominato myScaleSet
  • Uso della versione più recente dell'immagine myImageDefinition .
  • Configurato per l'avvio attendibile.
export MY_IMAGE_DEF_ID=$(az sig image-definition show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --gallery-image-definition $MY_IMAGE_DEF_NAME --query "id" --output tsv)
export MY_SCALE_SET_RG_NAME="myResourceGroup$RANDOM_ID"
export MY_SCALE_SET_NAME="myScaleSet$RANDOM_ID"

az group create --name $MY_SCALE_SET_RG_NAME --location eastus

az vmss create \
   --resource-group $MY_SCALE_SET_RG_NAME \
   --name $MY_SCALE_SET_NAME \
   --orchestration-mode flexible \
   --image $MY_IMAGE_DEF_ID \
   --specialized \
   --security-type TrustedLaunch

La creazione e la configurazione di tutte le macchine virtuali e risorse del set di scalabilità richiedono alcuni minuti.

È possibile condividere immagini tra sottoscrizioni usando il controllo degli accessi in base al ruolo di Azure ed è possibile condividerle a livello di raccolta, definizione di immagine o versione dell'immagine. Qualsiasi utente con autorizzazione di lettura per una versione dell'immagine, anche tra sottoscrizioni, è in grado di distribuire una macchina virtuale usando la versione dell'immagine.

È consigliabile condividere con altri utenti a livello di raccolta.

L'esempio seguente:

export MY_GALLERY_ID=$(az sig show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --query "id" --output tsv)
export CALLER_ID=$(az ad signed-in-user show --query id -o tsv)

az role assignment create \
   --role "Reader" \
   --assignee $CALLER_ID \
   --scope $MY_GALLERY_ID

Pulire le risorse

Per rimuovere il set di scalabilità e le risorse aggiuntive, eliminare il gruppo di risorse e tutte le relative risorse con az group delete. Il parametro --no-wait restituisce il controllo al prompt senza attendere il completamento dell'operazione. Il parametro --yes conferma che si desidera eliminare le risorse senza un prompt aggiuntivo a tale scopo.

Passaggi successivi

In questa esercitazione è stato descritto come creare e usare un'immagine di macchina virtuale personalizzata per il set di scalabilità con l'interfaccia della riga di comando di Azure:

  • Creare una Raccolta di calcolo di Azure
  • Creare una definizione di immagine specializzata
  • Creare una versione di immagine
  • Creare un set di scalabilità da un'immagine specializzata
  • Condividere una raccolta di immagini

Passare all'esercitazione successiva per informazioni su come distribuire le applicazioni nel set di scalabilità.