Esercitazione: Installare applicazioni in set di scalabilità di macchine virtuali con l'interfaccia della riga di comando di Azure

Per eseguire applicazioni nelle istanze di macchine virtuali (VM) in un set di scalabilità, è necessario prima installare i componenti dell'applicazione e i file necessari. In un'esercitazione precedente si è appreso come usare un'immagine di macchina virtuale personalizzata per distribuire le istanze di macchina virtuale. Questa immagine personalizzata includeva installazioni e configurazioni manuali di applicazioni. È anche possibile automatizzare l'installazione delle applicazioni in un set di scalabilità dopo la distribuzione di ogni istanza di macchina virtuale oppure aggiornare un'applicazione che è già in esecuzione in un set di scalabilità. In questa esercitazione si apprenderà come:

  • Installare automaticamente le applicazioni nel set di scalabilità
  • Usare l'estensione Script personalizzato di Azure
  • Aggiornare un'applicazione in esecuzione in un set di scalabilità

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

Prerequisiti

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

Informazioni sull'estensione Script personalizzato di Azure

L'estensione script personalizzata scarica ed esegue gli script sulle macchine virtuali di Azure. Questa estensione è utile per la configurazione post-distribuzione, l'installazione di software o qualsiasi altra attività di configurazione o gestione. Gli script possono essere scaricati dall'archiviazione di Azure o da GitHub oppure possono essere forniti al portale di Azure durante il runtime dell'estensione.

L'estensione Script personalizzato si integra nei modelli di Azure Resource Manager e può anche essere usata con l'interfaccia della riga di comando di Azure, Azure PowerShell, il portale di Azure o l'API REST. Per altre informazioni, vedere Panoramica dell'estensione script personalizzata.

Per usare l'estensione dello script personalizzata con l'interfaccia della riga di comando di Azure, creare un file JSON che definisca i file da ottenere e i comandi da eseguire. Queste definizioni JSON possono essere riusate nelle distribuzioni del set di scalabilità per applicare installazioni di applicazioni coerenti.

Creare una definizione di estensione Script personalizzato

Per vedere l'estensione Script personalizzato in azione, creare un set di scalabilità che installa il server Web NGINX e restituisce il nome host dell'istanza di macchina virtuale del set di scalabilità. La seguente definizione dell'estensione Script personalizzato scarica uno script di esempio da GitHub, installa i pacchetti richiesti, quindi scrive il nome host dell'istanza di macchina virtuale in una pagina HTML di base.

Nella shell corrente creare un file denominato customConfig.json e incollare la configurazione seguente. Ad esempio, creare il file in Cloud Shell anziché nel computer locale. È possibile usare qualsiasi editor. Per questa esercitazione verrà usato Vi. Immettere vi in Cloud Shell. Incollare il codice JSON seguente nell'editor e digitare :w customConfig.json.

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],
  "commandToExecute": './automate_nginx.sh'
}

Nota

Se si decide di fare riferimento direttamente al codice JSON, invece che al file customConfig.json, può essere necessario invertire l'uso delle virgolette singole (') e doppie (") nel parametro --settings seguente.

Creare un set di scalabilità

Importante

A partire da novembre 2023, i set di scalabilità di macchine virtuali creati con PowerShell e l'interfaccia della riga di comando di Azure avranno per impostazione predefinita la modalità di orchestrazione flessibile se non è specificata alcuna modalità di orchestrazione. Per altre informazioni su questa modifica e sulle azioni da eseguire, vedere Modifica che causa un'interruzione per i clienti di PowerShell/CLI di VMSS - Hub della community Microsoft

Come prima cosa creare un gruppo di risorse con az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella posizione eastus:

az group create --name myResourceGroup --location eastus

Si può ora creare un set di scalabilità di macchine virtuali con il comando az vmss create. Nell'esempio seguente viene creato un set di scalabilità denominato myScaleSet e vengono generate le chiavi SSH, se non sono presenti:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --admin-username azureuser \
  --generate-ssh-keys

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

Applicare l'estensione Script personalizzato

Applicare la configurazione dell'estensione dello script personalizzata alle istanze di macchine virtuali nel set di scalabilità con az vmss extension set. Nell'esempio seguente viene applicata la configurazione customConfig.json alle istanze di macchine virtuali myScaleSet nel gruppo di risorse denominato myResourceGroup:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings customConfig.json

Attenzione

Per i nomi di file è rilevante la distinzione tra maiuscole e minuscole. Usare il nome di file esatto indicato in queste istruzioni per evitare errori.

Applicare l'estensione alle istanze del set di scalabilità esistenti

Aggiornare tutte le istanze per applicare lo script personalizzato. L'aggiornamento potrebbe richiedere qualche minuto.

az vmss update-instances --resource-group myResourceGroup --name myScaleSet --instance-ids "*"

Consentire il traffico verso la porta 80

Per consentire il flusso del traffico attraverso il servizio di bilanciamento del carico alle macchine virtuali, è necessario aggiornare il gruppo di sicurezza di rete predefinito.

az network nsg rule create --name AllowHTTP --resource-group myResourceGroup --nsg-name myScaleSetNSG --access Allow --priority 1010 --destination-port-ranges 80 

Testare il set di scalabilità

Per vedere il server Web in azione, ottenere l'indirizzo IP pubblico del servizio di bilanciamento del carico con az network public-ip show. Nell'esempio seguente si ottiene l'indirizzo IP per myScaleSetLBPublicIP creato come parte del set di scalabilità:

az network public-ip show \
  --resource-group myResourceGroup \
  --name myScaleSetLBPublicIP \
  --query [ipAddress] \
  --output tsv

Immettere l'indirizzo IP pubblico del servizio di bilanciamento del carico in un Web browser. Il servizio di bilanciamento del carico distribuisce il traffico a una delle istanze di macchina virtuale, come illustrato nell'esempio seguente:

Pagina Web di base in Nginx

Lasciare aperto il Web browser per poter visualizzare una versione aggiornata nel passaggio successivo.

Modificare il criteri di aggiornamento

Nella sezione precedente è stato necessario un aggiornamento manuale per applicare l'applicazione aggiornata a tutte le istanze del set di scalabilità. Per consentire l'applicazione automatica degli aggiornamenti a tutte le istanze del set di scalabilità esistenti, aggiornare il criterio di aggiornamento da manuale ad automatico. Per altre informazioni sui criteri di aggiornamento, vedere Criteri di aggiornamento per i set di scalabilità di macchine virtuali.

az vmss update \
    --name myScaleSet \
    --resource-group myResourceGroup \
    --set upgradePolicy.mode=automatic

Aggiornare la distribuzione dell'app

Nella shell corrente creare un file denominato customConfigv2.json e incollare la configurazione seguente. Questa definizione esegue una versione v2 aggiornata dello script di installazione dell'applicazione:

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx_v2.sh"],
  "commandToExecute": "./automate_nginx_v2.sh"
}

Applicare di nuovo la configurazione dell'estensione Script personalizzato al set di scalabilità con az vmss extension set. Il file customConfigv2.json viene usato per applicare la versione aggiornata dell'applicazione:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings @customConfigv2.json

Poiché il set di scalabilità usa ora un criterio di aggiornamento automatico, l'applicazione aggiornata verrà applicata automaticamente alle istanze esistenti del set di scalabilità. Aggiornare il Web browser per visualizzare l'applicazione aggiornata.

Pagina Web aggiornata in Nginx

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.

az group delete --name myResourceGroup --no-wait --yes

Passaggi successivi

In questa esercitazione si è appreso come installare e aggiornare automaticamente applicazioni nel set di scalabilità con l'interfaccia della riga di comando di Azure:

  • Installare automaticamente le applicazioni nel set di scalabilità
  • Usare l'estensione Script personalizzato di Azure
  • Aggiornare un'applicazione in esecuzione in un set di scalabilità

Passare all'esercitazione successiva per informazioni su come ridimensionare automaticamente il set di scalabilità.