Condividi tramite


Suggerimenti per un uso corretto dell'interfaccia della riga di comando di Azure

L'interfaccia della riga di comando di Azure è uno strumento da riga di comando che consente di configurare e gestire le risorse di Azure da molti ambienti della shell. Dopo aver scelto l'ambiente shell preferito e aver installato l'interfaccia della riga di comando di Azure, usare questo articolo per scoprire suggerimenti utili su come evitare problemi comuni e usare correttamente l'interfaccia della riga di comando di Azure.

Per altre informazioni sui comandi specifici dell'interfaccia della riga di comando di Azure, vedere l'elenco di riferimento dell'interfaccia della riga di comando di Azure.

Scegliere un linguaggio di scripting

L'interfaccia della riga di comando di Azure è uno strumento open source che è possibile eseguire in molti linguaggi di scripting.

  • Si tratta del linguaggio di scripting che determina le regole di virgolette, caratteri di escape e continuazione della riga per i comandi dell'interfaccia della riga di comando di Azure.
  • Può essere difficile copiare la sintassi dei comandi dell'interfaccia della riga di comando di Azure contenente virgolette singole o doppie, caratteri di escape o caratteri di continuazione di riga tra lingue.
  • La maggior parte della documentazione Microsoft per l'interfaccia della riga di comando di Azure è scritta e testata in Bash.
  • Se PowerShell è il linguaggio di scripting preferito, è consigliabile usare lo strumento Azure PowerShell, che include funzionalità native del linguaggio di scripting di PowerShell .

Per altre informazioni sulle opzioni del linguaggio di scripting per l'interfaccia della riga di comando di Azure, vedere Scegliere lo strumento da riga di comando appropriato.

Domande frequenti

Ecco alcuni collegamenti che consentono di rispondere alle domande più frequenti sull'interfaccia della riga di comando di Azure:

Area dell'oggetto con collegamento all'articolo Suggerimento
Web Account Manager (WAM) Informazioni su WAM e su come disabilitarla.
Impostazioni di configurazione Elenco delle impostazioni di configurazione dell'interfaccia della riga di comando di Azure disponibili, come attivare/disattivare le funzionalità dell'interfaccia della riga di comando di Azure e impostare i valori predefiniti.
Formati di output Istruzioni su come archiviare gli ID risorsa di Azure nelle variabili e proteggere i segreti restituiti dai comandi dell'interfaccia della riga di comando di Azure.
Passaggio di valori JSON in una stringa Esempi di virgolette per i valori dei parametri JSON.
Ciclo di vita del supporto Informazioni sui sistemi operativi supportati, sui linguaggi di scripting e sulla fine del servizio per le versioni e le dipendenze dell'interfaccia della riga di comando di Azure.
REST API Comando az rest alternativo da usare quando un comando specifico dell'interfaccia della riga di comando di Azure non è disponibile per una risorsa di Azure.
Gruppi di riferimento dell'interfaccia della riga di comando di Azure Elenco a Z dei gruppi di riferimento dell'interfaccia della riga di comando di Azure con drill-down per sottogruppi e tutti i comandi dell'interfaccia della riga di comando di Azure.
Articoli dell'interfaccia della riga di comando di Azure Elenco a Z di guide introduttive, guide pratiche ed esercitazioni che usano i comandi di riferimento dell'interfaccia della riga di comando di Azure. L'elenco è raggruppato per gruppo di riferimento e sottogruppo per una ricerca semplice.
Esempi dell'interfaccia della riga di comando di Azure Elenco a Z di esempi, inclusi gli esempi nel repository GitHub Azure-samples/azure-cli-samples.
Risoluzione dei problemi Suggerimenti per la correzione e la causa dell'errore.
Novità Breve riepilogo delle nuove funzionalità dell'interfaccia della riga di comando di Azure.

Passare valori a un altro comando

Se il valore viene usato più volte, assegnarlo a una variabile. Le variabili consentono di usare più volte i valori o di creare script più generali. Questo esempio assegna un ID trovato dal comando az vm list a una variabile.

# assign the list of running VMs to a variable
running_vm_ids=$(az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM running'].id" --output tsv)

# verify the value of the variable
echo $running_vm_ids

Se il valore viene usato una sola volta, prendere in considerazione il piping. Il piping passa l'output di un comando come input a un secondo comando.

az vm list --query "[?powerState=='VM running'].name" --output tsv | grep my_vm

Per gli elenchi multivalore, considerare le opzioni seguenti:

  1. Se sono necessari altri controlli sul risultato, usare un ciclo "for":
#!/usr/bin/env bash
for vmList in $(az vm list --resource-group MyResourceGroup --show-details --query "[?powerState=='VM running'].id"   -output tsv); do
    echo stopping $vmList
    az vm stop --ids $vmList
    if [ $? -ne 0 ]; then
        echo "Failed to stop $vmList"
        exit 1
    fi
    echo $vmList stopped
done
  1. In alternativa, usare xargs e valutare se usare il flag -P per eseguire le operazioni in parallelo per migliorare le prestazioni:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. Infine, l'interfaccia della riga di comando di Azure include il supporto predefinito per elaborare i comandi con più --ids in parallelo per ottenere lo stesso effetto di xargs. @- viene usato per ottenere valori dalla pipe:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

Per altre informazioni sull'uso di costrutti Bash con l'interfaccia della riga di comando di Azure, inclusi cicli, istruzioni case, if.. allora.. altrimenti e la gestione degli errori, vedere Informazioni sull'uso di Bash con l'interfaccia della riga di comando di Azure.

Parametri di aggiornamento comuni

I gruppi di comandi dell'interfaccia della riga di comando di Azure spesso includono un comando di aggiornamento. Ad esempio, Azure Macchine virtuali include il comando az vm update. La maggior parte dei comandi di aggiornamento offre i tre parametri comuni: --add, --sete --remove.

I --set parametri e --add accettano un elenco di coppie chiave-valore separate da spazi: key1=value1 key2=value2. Per visualizzare le proprietà che è possibile aggiornare, usare un comando show, ad esempio az vm show.

az vm show --resource-group VMResources --name virtual-machine-01

Per semplificare il comando, prendere in considerazione l'uso di una stringa JSON. Ad esempio, per collegare un nuovo disco dati a una macchina virtuale, usare il valore seguente:

az vm update --resource-group VMResources --name virtual-machine-01 \
--add storageProfile.dataDisks "{\"createOption\": \"Attach\", \"managedDisk\":
   {\"id\":
   \"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yg/providers/Microsoft.Compute/disks/yg-disk\"},
   \"lun\": 1}"

Comandi di risorse generici

Un servizio che si vuole usare potrebbe non avere il supporto dell'interfaccia della riga di comando di Azure. È possibile usare i comandi az resource o az rest per usare queste risorse.

Esecuzione simultanea

Se si eseguono i comandi dell'interfaccia della riga di comando di Azure contemporaneamente nello stesso computer, i conflitti di scrittura possono verificarsi se più comandi dell'interfaccia della riga di comando di Azure scrivono nella stessa cache dei token di Microsoft Authentication Library (MSAL).

Per evitare potenziali errori, isolare la cartella di configurazione dell'interfaccia della riga di comando di Azure per ogni script impostando la variabile AZURE_CONFIG_DIR di ambiente per ogni script in una directory separata. I comandi dell'interfaccia della riga di comando di Azure in tale script salvano la configurazione e la cache dei token nel percorso configurato anziché nella cartella predefinita ~/.azure .

export AZURE_CONFIG_DIR=/my/config/dir

Operazioni asincrone

Le operazioni in Azure possono richiedere una notevole quantità di tempo. Ad esempio, la configurazione di una macchina virtuale in un data center non è istantanea. L'interfaccia della riga di comando di Azure attende fino al termine del comando per accettare altri comandi. Molti comandi offrono quindi un --no-wait parametro come illustrato di seguito:

az group delete --name MyResourceGroup --no-wait

Quando si elimina un gruppo di risorse, vengono rimosse anche tutte le risorse che appartengono. La rimozione di queste risorse può richiedere molto tempo. Quando si esegue il comando con il --no-wait parametro , la console accetta nuovi comandi senza interrompere la rimozione.

Molti comandi offrono un'opzione di attesa, sospendo la console fino a quando non viene soddisfatta una condizione. L'esempio seguente usa il comando az vm wait per supportare la creazione di risorse indipendenti in parallelo:

az vm create --resource-group VMResources --name virtual-machine-01 --image centos --no-wait
az vm create --resource-group VMResources --name virtual-machine-02 --image centos --no-wait

subscription=$(az account show --query "id" -o tsv)
vm1_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-01"
vm2_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-02"
az vm wait --created --ids $vm1_id $vm2_id

Dopo aver creato entrambi gli ID, è possibile usare di nuovo la console.

Script di esempio

Di seguito sono riportati esempi per l'uso di variabili e il ciclo di un elenco quando si usa Azure Macchine virtuali. Per esempi approfonditi sull'uso di costrutti Bash con l'interfaccia della riga di comando di Azure, inclusi cicli, istruzioni case, if.. allora.. altrimenti e la gestione degli errori, vedere Informazioni sull'uso di Bash con l'interfaccia della riga di comando di Azure.

Usare questi script per salvare gli ID nelle variabili:

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
   `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    SET "vm_ids=%%F %vm_ids%"  :: construct the id list
)
az vm stop --ids %vm_ids% :: CLI stops all VMs in parallel

Usare questi script per scorrere un elenco:

ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
    `az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
    ECHO Stopping %%F
    az vm stop --ids %%F
)

Vedi anche