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

Distribuzione in 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 un account Azure, creare un account 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 utilizzate per inizializzare configurazioni, ad esempio precaricare applicazioni, configurazioni delle 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 galleria sono lettere maiuscole e minuscole, cifre, punti e punti fermi. Il nome della raccolta non può contenere trattini. I nomi della galleria devono essere univoci all'interno della propria 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 gli esempi di codice riportati di seguito, che rispecchiano la configurazione Trusted Launch durante la creazione della definizione dell'immagine e del set di scalabilità. Se si sta creando un'immagine da una VM che non ha Trusted Launch abilitato, assicurarsi di specificare il tipo di sicurezza corretto al momento della creazione di 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 Trusted Launch.
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 cifre 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 in Zone Redundant Storage aggiungendo --storage-account-type standard_zrs.

Crea un set di scalabilità da un'immagine

Crei un set di scalabilità tramite 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 vuoi una versione specifica dell'immagine, assicurati di includere l'ID della versione dell'immagine quando definisci il --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 Trusted Launch.
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.

Ti consigliamo di condividere con altri utenti a livello di galleria.

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, hai imparato come creare e usare un'immagine VM personalizzata per i tuoi set di scalabilità con l'interfaccia della riga di comando di Azure (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

Passa all'esercitazione successiva per scoprire come distribuire applicazioni nel set di scalabilità.