Effettuare il provisioning di una macchina virtuale Linux usando l'interfaccia della riga di comando di Azure

Completato

È possibile installare l'interfaccia della riga di comando di Azure in locale nei sistemi operativi Linux, macOS e Windows. I dettagli relativi all'installazione dipendono dal sistema operativo e, nel caso di Linux, anche dalla distribuzione.

Nota

Per altre informazioni sulle opzioni di installazione di Linux, vedere Installare l'interfaccia della riga di comando di Azure in Linux.

Per usare l'interfaccia della riga di comando di Azure in modo interattivo, avviare una shell disponibile nel sistema operativo in uso, ad esempio cmd.exe in Windows o Bash in Linux o macOS, quindi eseguire un comando al prompt dei comandi. Per automatizzare attività ripetitive, assemblare i comandi dell'interfaccia della riga di comando in uno script della shell usando la sintassi di script della shell scelta, quindi eseguire lo script.

Se si vuole evitare di installare l'interfaccia della riga di comando di Azure, è possibile usare Azure Cloud Shell. Azure Cloud Shell è una shell interattiva autenticata che consente di gestire le risorse di Azure da un Web browser. Azure Cloud Shell può eseguire Bash e Azure PowerShell e ha la versione corrente dell'interfaccia della riga di comando di Azure già preinstallata. Per accedere ad Azure Cloud Shell, aprire il collegamento ad Azure Cloud Shell in un Web browser o avviare il servizio dal portale di Azure selezionando l'icona di Azure Cloud Shell accanto alla casella di testo della ricerca globale.

Screenshot che mostra l'icona di Azure Cloud Shell nel portale di Azure.

Azure Cloud Shell offre il vantaggio dell'autenticazione predefinita, che prevede l'uso delle credenziali fornite quando si accede alla sottoscrizione di Azure dal Web browser. Questo elimina la necessità di eseguire il comando az login all'inizio di ogni sessione, che occorre quando si esegue l'interfaccia della riga di comando di Azure in locale.

Distribuire una macchina virtuale Linux usando l'interfaccia della riga di comando di Azure

Il provisioning di una VM di Azure che esegue Linux tramite l'interfaccia della riga di comando di Azure prevede in genere questa sequenza di passaggi principali:

  • Identificare un'immagine di macchina virtuale adatta.
  • Identificare le dimensioni della macchina virtuale appropriate.
  • Creare un gruppo di risorse.
  • Creare e configurare una rete virtuale.
  • Creare una macchina virtuale di Azure.

A seconda dell'ambiente e dei requisiti esistenti, può non essere necessario completare ognuno dei passaggi precedenti. Ad esempio, si potrebbe usare per la distribuzione un gruppo di risorse o una subnet di rete virtuale esistente. Inoltre, l'interfaccia della riga di comando di Azure supporta un'ampia gamma di impostazioni predefinite, che vengono applicate automaticamente se si decide di non assegnare esplicitamente un valore ad alcune delle impostazioni delle risorse. Ad esempio, come per la distribuzione basata su portale di Azure, se non si specifica una rete virtuale esistente, l'interfaccia della riga di comando di Azure eseguirà automaticamente il provisioning di una rete virtuale. In questo modulo si useranno le impostazioni predefinite dell'interfaccia della riga di comando di Azure, ignorando il processo di creazione di una rete virtuale.

Nota

Per informazioni sull'implementazione di reti virtuali tramite l'interfaccia della riga di comando di Azure, vedere Avvio rapido: Usare l'interfaccia della riga di comando di Azure per creare una rete virtuale.

Identificare un'immagine di macchina virtuale adatta

Prima di avviare il processo di provisioning, è necessario stabilire quale immagine della macchina virtuale usare. È anche necessario verificare la disponibilità dell'immagine nell'area di Azure che ospiterà la distribuzione.

Per elencare le aree di Azure disponibili nella sottoscrizione, eseguire il comando seguente da una sessione Bash nel riquadro di Azure Cloud Shell:

az account list-locations --output table

Esaminare l'output e identificare il valore nella colonna Name per l'area che si intende usare. Si supponga di aver scelto come destinazione l'area Stati Uniti orientali, dunque il nome è Eastus.

Per identificare l'immagine appropriata, è necessario determinarne l'autore, offerta e SKU. Per restringere l'elenco delle opzioni disponibili, elencare gli autori non Microsoft per l'area identificata in precedenza eseguendo il comando seguente:

az vm image list-publishers --location eastus --query [].name --output tsv | grep -v "Microsoft" | more

Nota

L'elenco è piuttosto esteso, quindi è necessario assicurarsi di limitare l'output al buffer di sessione disponibile.

Si supponga di scegliere Canonical. Identificare quindi le offerte di quell'autore disponibili eseguendo il comando seguente:

az vm image list-offers --location eastus --publisher Canonical --query [].name --output tsv

Si supponga di scegliere 0001-com-ubuntu-server-jammy. Eseguire quindi il comando seguente per identificare gli SKU disponibili con tale offerta eseguendo il comando seguente:

az vm image list-skus --location eastus --publisher Canonical --offer 0001-com-ubuntu-server-focal --query [].name --output tsv

Nota

Canonical ha recentemente modificato i nomi delle offerte. Prima di Ubuntu 20.04, il nome dell'offerta era UbuntuServer. Per Ubuntu 20.04 il nome dell'offerta è 0001-com-ubuntu-server-focal, per Ubuntu 22.04 è 0001-com-ubuntu-server-jammy.

Per distribuire una macchina virtuale di Azure usando un'immagine specifica, è necessario determinare il valore della relativa proprietà Urn. Questo valore è composto da autore, offerta, SKU e, facoltativamente, un numero di versione che identifica l'immagine in modo univoco. È anche possibile impostare il numero di versione su latest, che indica l'ultima versione della distribuzione. Per visualizzare il valore della proprietà Urn per tutte le immagini 22_04-lts di Ubuntu nell'area Stati Uniti orientali, eseguire il comando seguente:

az vm image list --location eastus --publisher Canonical --offer 0001-com-ubuntu-server-jammy --sku 22_04-lts --all --output table

Nota

È possibile usare la proprietà UrnAlias per un approccio più semplice, anche se molto meno flessibile, per identificare un'immagine da usare durante la distribuzione. Questa proprietà è immediatamente disponibile per le immagini più comuni ed è possibile recuperarne i valori eseguendo il comando az vm image list --output table dell'interfaccia della riga di comando di Azure. Ad esempio, la proprietà UrnAliasUbuntu2204 corrisponde all'immagine Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest.

Identificare le dimensioni della macchina virtuale appropriate

Oltre alla disponibilità dell'immagine, è anche necessario verificare che le dimensioni della macchina virtuale che si intende usare siano disponibili nell'area di Azure che ospiterà la distribuzione. A tale scopo eseguire questo comando:

az vm list-sizes --location eastus --output table

Identificare le dimensioni della macchina virtuale adatte per la distribuzione di esempio nell'elenco e prendere nota del valore nella colonna Name. Quando si eseguirà il comando dell'interfaccia della riga di comando di Azure che avvia il provisioning della VM di Azure sarà necessario immettere il nome nello stesso identico formato. Si supponga di scegliere Standard_F4s.

Importante

Prima di procedere, verificare che queste dimensioni di macchina virtuale siano disponibili nell'area di Azure di destinazione e, se necessario, modificare i valori dei parametri nei comandi successivi di conseguenza.

Creare un gruppo di risorse

Dopo aver identificato l'immagine e le dimensioni della macchina virtuale di Azure, è possibile avviare il processo di provisioning. Iniziare creando un gruppo di risorse per ospitare la macchina virtuale di Azure e le risorse dipendenti. Per creare un gruppo di risorse, usare il comando az group create. Questo comando richiede di specificare il valore dei parametri name e location, che designano rispettivamente il nome del gruppo di risorse e l'area di Azure di destinazione.

az group create --name rg_lnx-cli --location eastus

L'output del comando dovrebbe essere simile all'esempio seguente:

{
  "id": "/subscriptions/fd7edadd-187f-41dd-a5df-f80bad63c167/resourceGroups/sample-RG",
  "location": "eastus",
  "managedBy": null,
  "name": "rg_lnx-cli",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

Creare una macchina virtuale di Azure

Per creare una macchina virtuale, usare il comando az vm create. Questo comando supporta un'ampia gamma di parametri, inclusi quelli per l'immagine del sistema operativo, le dimensioni del disco e le credenziali amministrative. Nell'esempio seguente il comando az vm create attiva la distribuzione di una macchina virtuale di Azure denominata sample-cli-vm0, che ospita l'ultima versione dello SKU Ubuntu 22_04-lts-gen2. Il processo di provisioning configura un account utente amministrativo denominato azureuser con l'autenticazione basata su una coppia di chiavi SSH. La chiave privata e la chiave pubblica vengono generate e archiviate in locale nella posizione predefinita (~/.ssh) per consentire l'accesso SSH alla macchina virtuale di Azure. Usare l'esempio di codice seguente per creare una VM di Azure:

az vm create \
    --resource-group rg_lnx-cli \
    --name lnx-cli-vm \
    --image Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest \
    --size Standard_F4s \
    --admin-username azureuser \
    --generate-ssh-keys

Nota

--size è facoltativo. Se si decide di escluderlo, le dimensioni risultanti dipenderanno dall'immagine scelta.

L'esecuzione della macchina virtuale di Azure inizierà poco dopo, in genere entro un paio di minuti. L'output del comando dell'interfaccia della riga di comando di Azure includerà informazioni in formato JSON sulla VM appena distribuita:

{
  "fqdns": "",
  "id": "/subscriptions/fd7edadd-187f-0000-0000-000000000000/resourceGroups/rg_lnx-cli/providers/Microsoft.Compute/virtualMachines/lnx-cli-vm",
  "location": "eastus",
  "macAddress": "00-0D-3A-8C-C6-AE",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "20.51.149.212",
  "resourceGroup": "rg_lnx-cli",
  "zones": ""
}

A questo punto, sarà possibile connettersi alla VM di Azure eseguendo il comando seguente (dopo aver sostituito il segnaposto <public_ip_address> con l'indirizzo IP identificato nell'output generato dall'interfaccia della riga di comando di Azure) dal computer in cui è archiviata la chiave privata:

ssh azureuser@<public_ip_address>