Esercizio: Creare una risorsa di Azure in modo interattivo con l'interfaccia della riga di comando di Azure

Completato

Nello scenario originale è necessario creare macchine virtuali (VM) per testare software CRM (Customer Relationship Management). Quando è disponibile una nuova build, si vuole creare rapidamente una nuova macchina virtuale per testare l'esperienza di installazione completa da un'immagine pulita. Al termine del test, è possibile eliminare la macchina virtuale.

Si proveranno ora i comandi per creare una macchina virtuale.

Annotazioni

Questo esercizio è facoltativo. Se si vuole completare questo esercizio, è necessario creare una sottoscrizione di Azure prima di iniziare. Se non si ha un account Azure o non si vuole crearne uno in questo momento, è possibile leggere le istruzioni in modo da comprendere le informazioni presentate.

Annotazioni

Per completare i passaggi di questo esercizio, è necessario usare un gruppo di risorse. È possibile usare un gruppo di risorse già creato oppure creare un nuovo gruppo di risorse specifico per questo esercizio. Se si sceglie di creare un nuovo gruppo di risorse, sarà più semplice pulire le risorse create durante l'esercizio. Se non si ha un gruppo di risorse esistente o si vuole crearne uno nuovo in particolare per questo esercizio, è possibile seguire la procedura descritta in Usare il portale di Azure e Azure Resource Manager per gestire i gruppi di risorse per creare un gruppo di risorse usando il portale di Azure oppure seguire la procedura descritta in Gestire i gruppi di risorse di Azure usando l'interfaccia della riga di comando di Azure per creare un gruppo di risorse usando l'interfaccia della riga di comando di Azure.

Esercizio: Creare una macchina virtuale Linux con l'interfaccia della riga di comando di Azure

Ecco come creare una nuova macchina virtuale di Azure con l'interfaccia della riga di comando di Azure:

  1. Aprire Azure Cloud Shell tramite il portale di Azure o usando il pulsante Apri Cloud Shell nell'angolo in alto a destra di molti blocchi di codice dell'interfaccia della riga di comando di Azure.

  2. Usare il comando az vm create per creare la macchina virtuale.

    • Specificare il nome del gruppo di risorse. Sostituire myResourceGroupName nell'esempio seguente con il nome di un gruppo di risorse esistente o il nome del gruppo di risorse creato per questo esercizio.
    • Assegnare un nome alla macchina virtuale in base agli standard di denominazione dell'organizzazione.
    • Scegliere una località vicina all'utente dall'elenco delle località di Azure disponibili.
    • Usare l'immagine Linux: Ubuntu2204.
    • Assegnare un nome utente amministratore in base agli standard di denominazione dell'organizzazione.
    #!/bin/bash
    
    # Create variables with values of your choice.
    rgName="myResourceGroupName"
    vmName="msdocs-vm-01"
    vmLocation="westus"
    vmImage="Ubuntu2204"
    vmAdminUserName="myAzureUserName"
    
    # Create the VM
    az vm create \
      --resource-group $rgName \
      --name $vmName \
      --location $vmLocation \
      --image $vmImage \
      --public-ip-sku Standard \
      --admin-username $vmAdminUserName \
      --generate-ssh-keys
    

    Suggerimento

    È stato appena usato il pulsante Copia e si è notato che tutti i caratteri di continuazione di riga sono stati rimossi? Si tratta di un comportamento legato alla progettazione del prodotto. Dato che l'interfaccia della riga di comando di Azure può essere eseguita in molti ambienti con diversi caratteri di continuazione di riga, il pulsante Copia li rimuove. Se si preferisce copiare uno script formattato, usare il mouse e selezionare e copiare i contenuti del blocco di codice.

    Per incollare in Azure Cloud Shell, fare clic con il pulsante destro del mouse su una nuova riga nel terminale di Cloud Shell e scegliere Incolla, oppure usare i tasti di scelta rapida MAIUSC+INS (⌘+V in macOS).

    Se lo script non è stato copiato correttamente e il terminale Cloud Shell è in attesa dell'input di aggiunta, usare CTRL+Z per tornare a un prompt e riprovare.

  3. Attendere la creazione della macchina virtuale Linux:

    Il processo di creazione della macchina virtuale richiede alcuni minuti.

  4. Ottenere informazioni sulla macchina virtuale

    Una volta completata l'operazione, l'interfaccia della riga di comando di Azure restituisce informazioni sulla macchina virtuale in formato JSON. Usare i comandi az vm list e az vm show per ottenere informazioni specifiche sulla macchina virtuale. Ecco alcuni esempi:

    Alcuni script usano nomi di variabile e valori memorizzati nei passaggi precedenti.

    Ottenere un elenco di tutte le macchine virtuali in formato tabella.

    az vm list --output table
    

    Ottenere informazioni su una singola macchina virtuale in formato JSON.

    Parte di questo output viene mostrato una volta creata una nuova macchina virtuale. Tuttavia, è utile restituire più informazioni nell'ambito della comprensione dei nomi delle proprietà annidate a cui fare riferimento in uno script. Per i nomi delle proprietà è rilevante la distinzione tra maiuscole e minuscole.

    az vm show --resource-group $rgName --name $vmName
    

    Ottenere informazioni sulle proprietà delle macchine virtuali.

    # Get the time the VM was created
    az vm show --resource-group $rgName --name $vmName --query "timeCreated"
    
    # Get the OS disk storage account type
    az vm show --resource-group $rgName --name $vmName --query "storageProfile.osDisk.managedDisk.storageAccountType"
    

    Memorizzare una proprietà di una macchina virtuale in una variabile.

    L'interfaccia della riga di comando di Azure presenta diversi tipi di output di variabile. JSON è il predefinito, ma durante la memorizzazione dei valori nelle variabili, rimuovere la formattazione extra con --output tsv.

    #!/bin/bash
    # Store the VM id
    vmID=$(az vm show --resource-group $rgName --name $vmName --query id --output tsv)
    echo $vmID
    
    # Store the public IP address
    publicIP=$(az vm list-ip-addresses \
        --resource-group $rgName \
        --name $vmName \
        --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" --output tsv)
    echo $publicIP
    
  5. Connettersi alla macchina virtuale.

    #!/bin/bash
    az ssh vm --private-key-file \path\to\private\key \
        --resource-group $rgName \
        --name $vmName \
        --local-user $vmAdminUserName
    

    Disconnettersi digitando exit.

Informazioni sulle opzioni di macchina virtuale

Quando si lavora con le risorse di Azure a livello di riga di comando, non si usa il portale di Azure, che spesso offre un elenco di opzioni di proprietà. Ad esempio, un elenco di posizioni disponibili e dimensioni di macchina virtuale. L'interfaccia della riga di comando di Azure presenta vari comandi in molti dei suoi gruppi di comando, che forniscono queste informazioni. Ecco alcuni esempi di macchine virtuali:

Suggerimento

Il formato dell'interfaccia della riga di comando di Azure --output table non restituisce il 100% delle informazioni disponibili, ma spesso semplifica la lettura di grandi risultati di comandi. Usare il parametro --query per specificare le informazioni di maggior interesse.

  1. Ottenere le dimensioni delle macchine virtuali disponibili per una posizione:

    az vm list-sizes --location westus --output table
    
  2. Ottenere gli SKU disponibili per una posizione:

    In base alla selezione di --location, la restituzione di un elenco completo di SKU da parte dell'interfaccia della riga di comando di Azure potrebbe richiedere uno o due minuti.

    # virtual machines
    az vm list-skus --location westus --resource-type virtualMachines --output table
    
    # disks
    az vm list-skus --location westus --resource-type disks --output table
    
  3. Ottenere le opzioni di ridimensionamento disponibili per una macchina virtuale esistente:

    az vm list-vm-resize-options --resource-group $rgName --name $vmName --output table
    
  4. Visualizzare i dettagli per tutte le macchine virtuali in un gruppo di risorse.

    Se si è scelto di lavorare nel proprio ambiente locale e si dispone di più macchine virtuali nella sottoscrizione, eseguire una query per le macchine virtuali che soddisfano un criterio di filtro.

    #!/bin/bash
    # details of all VMs in a specified resource group
    az vm show --show-details --ids $(az vm list --resource-group $rgName --query "[].id" -o tsv)
    
    # list of all VMs created in the last 7 days
    createDate=$(date +%F -d "-7days")
    az vm list --resource-group $rgName \
            --query "[?timeCreated >='$createDate'].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
            --output table
    
    # list all VMs whose disks are of a certain type
    # first get a list of the disk types or organization is using
    az vm list --resource-group $rgName --query "[].{Name:name, osDiskSize:storageProfile.osDisk.diskSizeGb, managedDiskTypes:storageProfile.osDisk.managedDisk.storageAccountType}" --output table
    
    diskType="Premium_LRS"
    az vm list --resource-group $rgName \
            --query "[?storageProfile.osDisk.managedDisk.storageAccountType =='$diskType'].{Name:name, admin:osProfile.adminUsername, osDiskSize:storageProfile.osDisk.diskSizeGb, CreatedOn:timeCreated, vmID:id}" \
            --output table
    

Interrompere o eliminare una macchina virtuale

  1. Arrestare la macchina virtuale:

    È possibile spegnere (interrompere) una macchina virtuale in esecuzione, per quanto la macchina virtuale continui a essere fatturata.

    az vm stop --resource-group $rgName --name $vmName
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  2. Deallocare una macchina virtuale:

    Per evitare di ricevere fatture per una macchina virtuale interrotta, è possibile deallocarla. Le macchine virtuali deallocate contengono risorse non più allocate (non vengono più applicati addebiti). Lo stato della macchina virtuale cambia da "Interrotta" a "Interrotta (Deallocata)".

    az vm deallocate --resource-group $rgName --name $vmName
    
  3. Eliminare una macchina virtuale:

    Una volta arrestata la macchina virtuale, eliminarla eseguendo il comando az vm delete.

    az vm delete --resource-group $rgName --name $vmName
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

Durante l'esecuzione interattiva di questi comandi, un approccio migliore consiste nella scrittura di uno script dell'interfaccia della riga di comando di Azure. Gli script consentono di riutilizzare la logica per la creazione o l'eliminazione di una macchina virtuale in futuro.

Nella prossima unità, si automatizzano questi task usando lo script dell'interfaccia della riga di comando di Azure.