Tipps für die erfolgreiche Verwendung der Azure CLI

Azure CLI ist ein Befehlszeilentool, mit dem Sie Azure-Ressourcen aus vielen Shellumgebungen konfigurieren und verwalten können. Nachdem Sie Ihre bevorzugte Shellumgebung ausgewählt und die Azure CLI installiert haben, finden Sie in diesem Artikel nützliche Tipps zum Vermeiden häufiger Fallstricke und erfolgreiche Verwendung der Azure CLI.

Weitere Informationen zu bestimmten Azure CLI-Befehlen finden Sie in der Azure CLI-Referenzliste.

Auswählen einer Skriptsprache

Die Azure CLI ist ein Open Source-Tool, das Sie in vielen Skriptsprachen ausführen können.

  • Es ist die Skriptsprache, die die Anführungs-, Escapezeichen- und Zeilenfortsetzungsregeln für Azure CLI-Befehle bestimmt.
  • Es kann schwierig sein, die Azure CLI-Befehlssyntax mit einfachen oder doppelten Anführungszeichen, Escapezeichen oder Zeilenfortsetzungszeichen zwischen Sprachen zu kopieren.
  • Die meisten Microsoft-Dokumentationen für die Azure CLI werden in Bash geschrieben und getestet.
  • Wenn PowerShell Die Skriptsprache ihrer Wahl ist, sollten Sie das Tool Azure PowerShell verwenden, das über systemeigene PowerShell-Skriptsprachenfunktionen verfügt.

Weitere Informationen zu Skriptsprachenoptionen für Azure CLI finden Sie unter Auswählen des richtigen Befehlszeilentools.

Häufig gestellte Fragen

Hier sind einige Links, die Ihnen helfen, die am häufigsten gestellten Azure CLI-Fragen zu beantworten:

Betreffbereich mit Artikellink Tipp
Arbeiten hinter einem Proxy Informationen zum Arbeiten über einen Proxyserver.
Web Account Manager (WAM) Informationen zu WAM und wie sie deaktiviert werden.
Konfigurationseinstellungen Liste der verfügbaren Azure CLI-Konfigurationseinstellungen, Aktivieren/Deaktivieren von Azure CLI-Features und Festlegen von Standardwerten.
Ausgabeformate Anweisungen zum Speichern von Azure-Ressourcen-IDs in Variablen und zum Schützen geheimer Schlüssel, die von Azure CLI-Befehlen zurückgegeben werden.
Übergeben von JSON-Werten in einer Zeichenfolge Beispiele für JSON-Parameterwerte.
Supportlebenszyklus Informationen zu unterstützten Betriebssystemen, Skriptsprachen und dem Dienstende für Azure CLI-Versionen und Abhängigkeiten.
REST-API Alternativer Az-Rest-Befehl , der verwendet werden soll, wenn ein bestimmter Azure CLI-Befehl für eine Azure-Ressource nicht verfügbar ist.
Azure CLI-Referenzgruppen Eine bis Z-Liste von Azure CLI-Referenzgruppen mit Drilldown zu Untergruppen und allen Azure CLI-Befehlen.
Artikel zur Azure CLI Eine bis Z-Liste mit Schnellstarts, Anleitungen und Lernprogrammen, die Azure CLI-Referenzbefehle verwenden. Die Liste wird nach Referenzgruppe und Untergruppe gruppiert, um eine einfache Suche zu ermöglichen.
Azure CLI-Beispiele A to Z list of Samples, including those samples in the Azure-samples/azure-cli-samples GitHub repository.
Problembehandlung Tipps zur Fehlerursache und -behebung.
Neuerungen Kurze Zusammenfassung der neuen Azure CLI-Features.

Übergeben von Werten an einen anderen Befehl

Wenn der Wert mehrmals verwendet wird, sollten Sie ihn einer Variablen zuweisen. Variablen ermöglichen es Ihnen, Werte mehrmals zu verwenden oder allgemeinere Skripts zu erstellen. In diesem Beispiel wird einer Variablen eine ID zugewiesen, die mit dem Befehl az vm list ermittelt wurde.

# 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

Erwägen Sie den Einsatz von Piping, wenn der Wert nur einmal verwendet wird. (Die Piping übergibt die Ausgabe eines Befehls als Eingabe an einen zweiten Befehl.)

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

Für Listen mit mehreren Werten sollten Sie die folgenden Optionen berücksichtigen:

  1. Verwenden Sie eine „for“-Schleife, falls Sie weitere Kontrollen für das Ergebnis benötigen:
#!/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. Verwenden Sie alternativ xargs und ggf. das Flag -P, um die Vorgänge parallel auszuführen und so die Leistung zu verbessern:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. Darüber hinaus verfügt die Azure CLI noch über integrierte Unterstützung für die Verarbeitung von Befehlen mit mehreren parallelen --ids, um den gleichen Effekt wie mit „xargs“ zu erzielen. @- wird zum Abrufen von Werten aus der Pipe verwendet:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

Weitere Informationen zur Verwendung von Bash-Konstrukten mit der Azure CLI einschließlich Schleifen, Fallanweisungen, if...then...else-Ausdrücke und Fehlerbehandlung finden Sie unter Erlernen der Verwendung von Bash mit der Azure CLI.

Allgemeine Updateparameter

Azure CLI-Befehlsgruppen enthalten häufig einen update-Befehl. Azure Virtual Machines enthält beispielsweise den Befehl az vm update. Die meisten Aktualisierungsbefehle bieten die drei allgemeinen Parameter: --add, , --setund --remove.

Die Parameter --set und --add verwenden eine Liste von durch Leerzeichen getrennten Schlüssel-Wert-Paaren: key1=value1 key2=value2. Verwenden Sie zum Anzeigen der Eigenschaften, die aktualisiert werden können, einen show-Befehl, etwa az vm show.

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

Sie können eine JSON-Zeichenfolge verwenden, um den Befehl zu vereinfachen. Verwenden Sie beispielsweise den folgenden Wert, um einen neuen Datenträger an einen virtuellen Computer anzufügen:

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}"

Generische Ressourcenbefehle

Ein Dienst, mit dem Sie arbeiten möchten, hat möglicherweise keine Azure CLI-Unterstützung. Sie können die Az-Ressource oder az-Rest-Befehle verwenden, um mit diesen Ressourcen zu arbeiten.

Gleichzeitige Ausführung

Wenn Sie Azure CLI-Befehle gleichzeitig auf demselben Computer ausführen, können Schreibkonflikte auftreten, wenn mehrere Azure CLI-Befehle in denselben MSAL-Tokencache (Microsoft Authentication Library) schreiben.

Um potenzielle Fehler zu vermeiden, isolieren Sie den Azure CLI-Konfigurationsordner für jedes Skript, indem Sie die Umgebungsvariable AZURE_CONFIG_DIR für jedes Skript auf ein separates Verzeichnis festlegen. Azure CLI-Befehle in diesem Skript speichern die Konfiguration und den Tokencache am konfigurierten Speicherort und nicht im Standardordner ~/.azure.

export AZURE_CONFIG_DIR=/my/config/dir

Asynchrone Vorgänge

Vorgänge in Azure können beträchtliche Zeit in Anspruch nehmen. Die Konfiguration einer VM in einem Rechenzentrum erfolgt beispielsweise nicht sofort. Azure CLI wartet, bis der Befehl abgeschlossen ist, um andere Befehle zu akzeptieren. Viele Befehle bieten daher einen --no-wait-Parameter, wie hier gezeigt:

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

Beim Löschen einer Ressourcengruppe werden auch alle zugehörigen Ressourcen entfernt. Das Entfernen dieser Ressourcen kann sehr lange dauern. Wenn Sie den Befehl mit dem Parameter --no-wait ausführen, kann die Konsole neue Befehle akzeptieren, ohne das Entfernen zu unterbrechen.

Viele Befehle bieten eine Warteoption, mit der die Konsole angehalten wird, bis eine Bedingung erfüllt ist. Im folgenden Beispiel wird der Befehl az vm wait verwendet, um das parallele Erstellen unabhängiger Ressourcen zu unterstützen:

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

Nach der Erstellung der beiden IDs können Sie die Konsole wieder nutzen.

Skriptbeispiele

Hier sind Beispiele für die Verwendung von Variablen und Schleifen in einer Liste beim Arbeiten mit Azure Virtual Machines. Ausführliche Beispiele zur Verwendung von Bash-Konstrukten mit der Azure CLI einschließlich Schleifen, Fallanweisungen, if...then...else-Ausdrücke und Fehlerbehandlung finden Sie unter Erlernen der Verwendung von Bash mit der Azure CLI.

Verwenden Sie diese Skripts, um IDs in Variablen zu speichern:

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

Verwenden Sie diese Skripts zum Durchlaufen einer Liste per Schleifenvorgang:

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
)

Siehe auch