Esercitazione: Creare e gestire macchine virtuali Linux con l'interfaccia della riga di comando di Azure

Attenzione

Questo articolo fa riferimento a CentOS, una distribuzione Linux prossima allo stato EOL (End of Life, fine del ciclo di vita). Prendere in considerazione l'uso e il piano di conseguenza. Per altre informazioni, vedere le linee guida per la fine della vita di CentOS.

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Le macchine virtuali di Azure offrono un ambiente di elaborazione completamente configurabile e flessibile. Questa esercitazione illustra gli elementi di base della distribuzione di una macchina virtuale di Azure, ad esempio la selezione delle dimensioni di una VM, la selezione dell'immagine di una VM e la distribuzione di una VM. Scopri come:

  • Creare e connettersi a una macchina virtuale
  • Selezionare e usare le immagini di una macchina virtuale
  • Visualizzare e usare macchine virtuali di dimensioni specifiche
  • Ridimensionare una VM
  • Visualizzare e comprendere lo stato di una macchina virtuale

Questa esercitazione usa l'interfaccia della riga di comando all'interno di Azure Cloud Shell, che viene costantemente aggiornato alla versione più recente.

Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, per questa esercitazione è necessario eseguire l'interfaccia della riga di comando di Azure versione 2.0.30 o successiva. Eseguire az --version per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Crea gruppo di risorse

Creare un gruppo di risorse con il comando az group create.

Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite. Il gruppo di risorse deve essere creato prima della macchina virtuale. In questo esempio viene creato un gruppo di risorse denominato myResourceGroupVM nell'area eastus2.

az group create --name myResourceGroupVM --location eastus2

Il gruppo di risorse viene specificato quando si crea o si modifica una VM, come viene illustrato in questa esercitazione.

Crea macchina virtuale

Crea una macchina virtuale usando il comando az vm create.

Quando si crea una macchina virtuale, sono disponibili alcune opzioni come immagine del sistema operativo, ridimensionamento dei dischi e credenziali amministrative. L'esempio seguente crea una macchina virtuale denominata myVM che esegue SUSE Linux Enterprise Server (SLES). Viene creato un account utente denominato azureuser nella macchina virtuale e vengono generate chiavi SSH se non esistono già nel percorso predefinito delle chiavi (~/.ssh):

az vm create \
    --resource-group myResourceGroupVM \
    --name myVM \
    --image SuseSles15SP3 \
    --public-ip-sku Standard \
    --admin-username azureuser \
    --generate-ssh-keys

La creazione della macchina virtuale può richiedere alcuni minuti. Dopo la creazione della macchina virtuale, l'interfaccia della riga di comando di Azure restituisce informazioni sulla VM. Prendere nota dell'indirizzo publicIpAddress, che può essere usato per accedere alla macchina virtuale.

{
  "fqdns": "",
  "id": "/subscriptions/d5b9d4b7-6fc1-0000-0000-000000000000/resourceGroups/myResourceGroupVM/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus2",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "52.174.34.95",
  "resourceGroup": "myResourceGroupVM"
}

Connettersi a una macchina virtuale

È ora possibile connettersi alla macchina virtuale con SSH in Azure Cloud Shell o dal computer locale. Sostituire l'indirizzo IP di esempio con l'indirizzo publicIpAddress annotato nel passaggio precedente.

ssh azureuser@52.174.34.95

Dopo aver eseguito l'accesso alla macchina virtuale, sarà possibile installare e configurare le applicazioni. Al termine si chiude la sessione SSH come di consueto:

exit

Informazioni sulle immagini delle VM

Azure Marketplace include diverse immagini che possono essere usate per creare VM. Nei passaggi precedenti è stata creata una macchina virtuale usando un'immagine Ubuntu. In questo passaggio l'interfaccia della riga di comando di Azure viene usata per cercare nel marketplace un'immagine CentOS, che viene quindi usata per distribuire una seconda macchina virtuale.

Per visualizzare un elenco delle immagini più usate, eseguire il comando az vm image list.

az vm image list --output table

L'output del comando restituisce le immagini di macchina virtuale più popolari in Azure.

Architecture    Offer                         Publisher               Sku                                 Urn                                                                             UrnAlias                 Version
--------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------  -----------------------  ---------
x64             CentOS                        OpenLogic               7.5                                 OpenLogic:CentOS:7.5:latest                                                     CentOS                   latest
x64             debian-10                     Debian                  10                                  Debian:debian-10:10:latest                                                      Debian                   latest
x64             flatcar-container-linux-free  kinvolk                 stable                              kinvolk:flatcar-container-linux-free:stable:latest                              Flatcar                  latest
x64             opensuse-leap-15-3            SUSE                    gen2                                SUSE:opensuse-leap-15-3:gen2:latest                                             openSUSE-Leap            latest
x64             RHEL                          RedHat                  7-LVM                               RedHat:RHEL:7-LVM:latest                                                        RHEL                     latest
x64             sles-15-sp3                   SUSE                    gen2                                SUSE:sles-15-sp3:gen2:latest                                                    SLES                     latest
x64             UbuntuServer                  Canonical               18.04-LTS                           Canonical:UbuntuServer:18.04-LTS:latest                                         UbuntuLTS                latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-Datacenter                     MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest                     Win2022Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition-core  MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition-core:latest  Win2022AzureEditionCore  latest
x64             WindowsServer                 MicrosoftWindowsServer  2019-Datacenter                     MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest                     Win2019Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2016-Datacenter                     MicrosoftWindowsServer:WindowsServer:2016-Datacenter:latest                     Win2016Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-R2-Datacenter                  MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest                  Win2012R2Datacenter      latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-Datacenter                     MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest                     Win2012Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2008-R2-SP1                         MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:latest                         Win2008R2SP1             latest

Per visualizzare l'elenco completo, aggiungere il parametro --all. L'elenco di immagini può anche essere filtrato per --publisher o –-offer. In questo esempio l'elenco viene filtrato per cercare tutte le immagini, pubblicate da OpenLogic, con un'offerta corrispondente a CentOS.

az vm image list --offer CentOS --publisher OpenLogic --all --output table

Esempio di output parziale:

Architecture    Offer                      Publisher    Sku              Urn                                                       Version
--------------  -------------------------  -----------  ---------------  --------------------------------------------------------  ---------------
x64             CentOS                     OpenLogic    8_2              OpenLogic:CentOS:8_2:8.2.2020111800                       8.2.2020111800
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020062401                  8.2.2020062401
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020100601                  8.2.2020100601
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020111801                  8.2.2020111801
x64             CentOS                     OpenLogic    8_3              OpenLogic:CentOS:8_3:8.3.2020120900                       8.3.2020120900
x64             CentOS                     OpenLogic    8_3              OpenLogic:CentOS:8_3:8.3.2021020400                       8.3.2021020400
x64             CentOS                     OpenLogic    8_3-gen2         OpenLogic:CentOS:8_3-gen2:8.3.2020120901                  8.3.2020120901
x64             CentOS                     OpenLogic    8_3-gen2         OpenLogic:CentOS:8_3-gen2:8.3.2021020401                  8.3.2021020401
x64             CentOS                     OpenLogic    8_4              OpenLogic:CentOS:8_4:8.4.2021071900                       8.4.2021071900
x64             CentOS                     OpenLogic    8_4-gen2         OpenLogic:CentOS:8_4-gen2:8.4.2021071901                  8.4.2021071901
x64             CentOS                     OpenLogic    8_5              OpenLogic:CentOS:8_5:8.5.2022012100                       8.5.2022012100
x64             CentOS                     OpenLogic    8_5              OpenLogic:CentOS:8_5:8.5.2022101800                       8.5.2022101800
x64             CentOS                     OpenLogic    8_5-gen2         OpenLogic:CentOS:8_5-gen2:8.5.2022012101                  8.5.2022012101

Nota

Canonical ha modificato i nomi offerta usati per le versioni più recenti. Prima di Ubuntu 20.04, il nome offerta è UbuntuServer. Per Ubuntu 20.04 il nome offerta è 0001-com-ubuntu-server-focal e per Ubuntu 22.04 è 0001-com-ubuntu-server-jammy.

Per distribuire una macchina virtuale usando un'immagine specifica, prendere nota del valore nella colonna Urn, che è costituito da server di pubblicazione, offerta, SKU e, facoltativamente, un numero di versione peridentificare l'immagine. Quando si specifica l'immagine, il numero di versione dell'immagine può essere sostituito con latest, che seleziona la versione più recente della distribuzione. In questo esempio viene usato il parametro --image per specificare la versione più recente di un'immagine CentOS 8.5.

az vm create --resource-group myResourceGroupVM --name myVM2 --image OpenLogic:CentOS:8_5:latest --generate-ssh-keys

Informazioni sulle dimensioni delle VM

La dimensioni di una macchina virtuale determinano la quantità di risorse di calcolo, ad esempio CPU, GPU e memoria, disponibili per la macchina virtuale. È necessario ridimensionare le macchine virtuali in modo appropriato per il carico di lavoro previsto. Se aumenta il carico di lavoro, è possibile ridimensionare una macchina virtuale esistente.

Dimensioni delle VM

La tabella seguente classifica le dimensioni a seconda dei casi d'uso.

Tipo Descrizione
Utilizzo generico Rapporto equilibrato tra CPU e memoria. Soluzione ideale per sviluppo/test e soluzioni di dati e applicazioni medio-piccole.
Con ottimizzazione per il calcolo Rapporto elevato tra CPU e memoria. Soluzione idonea per applicazioni con livelli medi di traffico, dispositivi di rete e processi batch.
Ottimizzato per la memoria Rapporto elevato tra memoria e core. Soluzione ideale per database relazionali, cache medio-grandi e analisi in memoria.
Con ottimizzazione per l'archiviazione I/O e velocità effettiva del disco elevati. Ideale per Big Data, database SQL e NoSQL.
GPU VM specializzate ottimizzate per livelli intensivi di rendering della grafica ed editing di video.
Prestazioni elevate Le macchine virtuali con CPU più potenti, con interfacce di rete ad alta velocità effettiva opzionali (RDMA).

Trovare le dimensioni delle macchine virtuali disponibili

Per visualizzare un elenco delle dimensioni delle VM disponibili in una determinata area, usare il comando az vm list-sizes.

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

Esempio di output parziale:

  MaxDataDiskCount    MemoryInMb  Name                      NumberOfCores    OsDiskSizeInMb    ResourceDiskSizeInMb
------------------  ------------  ----------------------  ---------------  ----------------  ----------------------
4                   8192          Standard_D2ds_v4           2                1047552           76800
8                   16384         Standard_D4ds_v4           4                1047552           153600
16                  32768         Standard_D8ds_v4           8                1047552           307200
32                  65536         Standard_D16ds_v4          16               1047552           614400
32                  131072        Standard_D32ds_v4          32               1047552           1228800
32                  196608        Standard_D48ds_v4          48               1047552           1843200
32                  262144        Standard_D64ds_v4          64               1047552           2457600
4                   8192          Standard_D2ds_v5           2                1047552           76800
8                   16384         Standard_D4ds_v5           4                1047552           153600
16                  32768         Standard_D8ds_v5           8                1047552           307200
32                  65536         Standard_D16ds_v5          16               1047552           614400
32                  131072        Standard_D32ds_v5          32               1047552           1228800
32                  196608        Standard_D48ds_v5          48               1047552           1843200
32                  262144        Standard_D64ds_v5          64               1047552           2457600
32                  393216        Standard_D96ds_v5          96               1047552           3686400

Creare una macchina virtuale con dimensioni specifiche

Nell'esempio precedente di creazione di una VM, non essendo state specificate le dimensioni, sono state usate le dimensioni predefinite. Le dimensioni di una VM possono essere selezionate in fase di creazione usando az vm create e il parametro --size.

az vm create \
    --resource-group myResourceGroupVM \
    --name myVM3 \
    --image SuseSles15SP3 \
    --size Standard_D2ds_v4  \
    --generate-ssh-keys

Ridimensionare una VM

Dopo la distribuzione di una VM, è possibile ridimensionarla per aumentare o ridurre l'allocazione delle risorse. È possibile visualizzare la dimensione attuale di una macchina virtuale con az vm show:

az vm show --resource-group myResourceGroupVM --name myVM --query hardwareProfile.vmSize

Prima di ridimensionare una macchina virtuale, verificare se le dimensioni desiderate sono disponibili nel cluster di Azure corrente. Il comando az vm list-vm-resize-options restituisce l'elenco di dimensioni.

az vm list-vm-resize-options --resource-group myResourceGroupVM --name myVM --query [].name

Se le dimensioni desiderate sono disponibili, la VM può essere ridimensionata mentre è accesa, ma durante l'operazione viene riavviata. Usare il comando az vm resize per eseguire il ridimensionamento.

az vm resize --resource-group myResourceGroupVM --name myVM --size Standard_D4s_v3

Se nel cluster corrente non sono disponibili le dimensioni desiderate, è necessario deallocare la VM prima di poter eseguire l'operazione di ridimensionamento. Usare il comando az vm deallocate per arrestare e deallocare la VM. Tenere presente che, quando la VM viene riaccesa, i dati sul disco temporaneo potrebbero essere rimossi. Anche l'indirizzo IP pubblico viene modificato a meno che non venga usato un indirizzo IP statico.

az vm deallocate --resource-group myResourceGroupVM --name myVM

Dopo la deallocazione, è possibile eseguire il ridimensionamento.

az vm resize --resource-group myResourceGroupVM --name myVM --size Standard_GS1

Dopo il ridimensionamento, la VM può essere avviata.

az vm start --resource-group myResourceGroupVM --name myVM

Stati di alimentazione di una macchina virtuale

Una macchina virtuale di Azure può avere uno dei diversi stati di alimentazione. Questo stato rappresenta lo stato corrente della VM dal punto di vista dell'hypervisor.

Stati di alimentazione

Stato di alimentazione Descrizione
Starting Indica che è in corso l'avvio della macchina virtuale.
In esecuzione Indica che la macchina virtuale è in esecuzione.
Arresto in corso Indica che è in corso l'arresto della macchina virtuale.
Arrestato Indica che la macchina virtuale è stata arrestata. Alle macchine virtuali con stato arrestato continuano a essere addebitati i costi di calcolo.
Deallocazione Indica che è in corso la deallocazione della macchina virtuale.
Deallocato Indica che la macchina virtuale è stata rimossa dall'hypervisor, ma è ancora disponibile nel piano di controllo. Alle macchine virtuali con stato deallocato non vengono addebitati i costi di calcolo.
- Indica che lo stato di alimentazione della macchina virtuale è sconosciuto.

Trovare lo stato di alimentazione

Per recuperare lo stato di una determinata VM, usare il comando az vm get-instance-view. Assicurarsi di specificare un nome valido per una macchina virtuale e un gruppo di risorse.

az vm get-instance-view \
    --name myVM \
    --resource-group myResourceGroupVM \
    --query instanceView.statuses[1] --output table

Output:

Code                Level    DisplayStatus
------------------  -------  ---------------
PowerState/running  Info     VM running

Per recuperare lo stato di alimentazione di tutte le macchine virtuali nella sottoscrizione, usare l'API Macchine virtuali - Elenca tutte con il parametro statusOnly impostato su true.

Attività di gestione

Durante il ciclo di vita di una macchina virtuale si eseguono attività di gestione come l'avvio, l'arresto o l'eliminazione della macchina virtuale. È consigliabile creare script per automatizzare le attività ripetitive o complesse. Usando l'interfaccia della riga di comando di Azure è possibile eseguire molte attività di gestione comuni dalla riga di comando o tramite script.

Ottenere l'indirizzo IP

Questo comando restituisce gli indirizzi IP pubblici e privati di una macchina virtuale.

az vm list-ip-addresses --resource-group myResourceGroupVM --name myVM --output table

Interrompi macchina virtuale

az vm stop --resource-group myResourceGroupVM --name myVM

Avvia macchina virtuale

az vm start --resource-group myResourceGroupVM --name myVM

Eliminazione di risorse VM

A seconda della modalità di eliminazione di una macchina virtuale, è possibile che venga eliminata la risorsa macchina virtuale, non le risorse di rete e disco. È possibile modificare il comportamento predefinito per eliminare altre risorse quando si elimina la macchina virtuale. Per altre informazioni, vedere Eliminare una macchina virtuale e le risorse collegate.

Se si elimina un gruppo di risorse, vengono eliminate anche tutte le risorse in esso contenute, ad esempio la macchina virtuale, la rete virtuale e il disco. 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 myResourceGroupVM --no-wait --yes

Passaggi successivi

In questa esercitazione sono illustrate la creazione e la gestione di VM di base, ad esempio:

  • Creare e connettersi a una macchina virtuale
  • Selezionare e usare le immagini di una macchina virtuale
  • Visualizzare e usare macchine virtuali di dimensioni specifiche
  • Ridimensionare una VM
  • Visualizzare e comprendere lo stato di una macchina virtuale

Passare all'esercitazione successiva per informazioni sui dischi di macchine virtuali.