Tips för att använda Azure CLI

Azure CLI är ett kommandoradsverktyg som gör att du kan konfigurera och hantera Azure-resurser från många gränssnittsmiljöer. När du har valt önskad gränssnittsmiljö och installerat Azure CLI kan du använda den här artikeln för att hitta användbara tips om hur du undviker vanliga fallgropar och använder Azure CLI.

Mer information om specifika Azure CLI-kommandon finns i Azure CLI-referenslistan.

Välj ett skriptspråk

Azure CLI är ett verktyg med öppen källkod som du kan köra på många skriptspråk.

  • Det är skriptspråket som avgör reglerna för citattecken, escape-tecken och radfortsättning för Azure CLI-kommandon.
  • Det kan vara svårt att kopiera Azure CLI-kommandosyntax som innehåller enkla eller dubbla citattecken, escape-tecken eller radfortsättningstecken mellan språk.
  • De flesta Microsoft-dokumentationen för Azure CLI är skriven och testad i Bash.
  • Om PowerShell är ditt valfritt skriptspråk kan du överväga att använda verktyget Azure PowerShell, som har inbyggda funktioner för PowerShell-skriptspråk .

Mer information om skriptspråkalternativ för Azure CLI finns i Välj rätt kommandoradsverktyg.

Vanliga frågor

Här följer några länkar som hjälper dig att besvara de vanligaste azure CLI-frågorna:

Ämnesområde med artikellänk Dricks
Arbeta bakom en proxy Information om hur du arbetar över en proxyserver.
Web Account Manager (WAM) Information om WAM och hur du inaktiverar den.
Konfigurationsinställningar Lista över tillgängliga Azure CLI-konfigurationsinställningar, hur du aktiverar/inaktiverar Azure CLI-funktioner och anger standardvärden.
Utdataformat Instruktioner om hur du lagrar Azure-resurs-ID:er i variabler och skyddar hemligheter som returneras av Azure CLI-kommandon.
Skicka JSON-värden i en sträng Citera exempel för JSON-parametervärden.
Supportlivscykel Information om operativsystem som stöds, skriptspråk och tjänstens slut för Azure CLI-versioner och beroenden.
REST-API Alternativt az rest-kommando att använda när ett specifikt Azure CLI-kommando inte är tillgängligt för en Azure-resurs.
Azure CLI-referensgrupper En till Z-lista över Azure CLI-referensgrupper med ökad detaljnivå till undergrupper och alla Azure CLI-kommandon.
Azure CLI-artiklar En till Z-lista över snabbstarter, instruktionsguider och självstudier som använder Azure CLI-referenskommandon. Listan grupperas efter referensgrupp och undergrupp för enkel sökning.
Azure CLI-exempel En till Z-lista med exempel, inklusive dessa exempel i GitHub-lagringsplatsen Azure-samples/azure-cli-samples.
Felsökning Tips för felorsak och reparation.
Nyheter Kort sammanfattning av nya Azure CLI-funktioner.

Skicka värden till ett annat kommando

Om värdet används mer än en gång tilldelar du det till en variabel. Med variabler kan du använda värden mer än en gång eller skapa mer allmänna skript. I det här exemplet tilldelas ett ID som hittas av kommandot az vm list till en variabel.

# 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

Om värdet bara används en gång bör du överväga rördragning. (Piping skickar utdata från ett kommando som indata till ett andra kommando.)

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

Överväg följande alternativ för listor med flera värden:

  1. Om du behöver fler kontroller i resultatet använder du en "for"-loop:
#!/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. Du kan också använda xargs och överväga att använda -P flaggan för att köra åtgärderna parallellt för bättre prestanda:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. Slutligen har Azure CLI inbyggt stöd för att bearbeta kommandon med flera --ids parallellt för att uppnå samma effekt av xargs. @- används för att hämta värden från röret:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

Mer information om hur du använder Bash-konstruktioner med Azure CLI, inklusive loopar, ärendeinstruktioner, if.. då.. annars, och felhantering, se Lär dig att använda Bash med Azure CLI.

Vanliga uppdateringsparametrar

Azure CLI-kommandogrupper har ofta ett uppdateringskommando. Azure Virtual Machines innehåller till exempel kommandot az vm update. De flesta uppdateringskommandon erbjuder de tre vanliga parametrarna: --add, --setoch --remove.

Parametrarna --set och --add tar en lista över blankstegsavgränsade nyckel/värde-par: key1=value1 key2=value2. Om du vill se vilka egenskaper du kan uppdatera använder du ett show-kommando, till exempel az vm show.

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

Om du vill förenkla kommandot bör du överväga att använda en JSON-sträng. Om du till exempel vill koppla en ny datadisk till en virtuell dator använder du följande värde:

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

Allmänna resurskommandon

En tjänst som du vill arbeta med kanske inte har Stöd för Azure CLI. Du kan använda az-resursen eller az rest-kommandona för att arbeta med dessa resurser.

Samtidig körning

Om du kör Azure CLI-kommandon samtidigt på samma dator kan skrivkonflikter inträffa om flera Azure CLI-kommandon skriver till samma MSAL-tokencache (Microsoft Authentication Library).

För att undvika potentiella fel isolerar du Azure CLI-konfigurationsmappen för varje skript genom att ange miljövariabeln AZURE_CONFIG_DIR för varje skript till en separat katalog. Azure CLI-kommandon i skriptet sparar konfigurations- och tokencacheminnet på den konfigurerade platsen i stället för standardmappen ~/.azure .

export AZURE_CONFIG_DIR=/my/config/dir

Asynkrona åtgärder

Åtgärder i Azure kan ta en märkbar tid. Till exempel är det inte omedelbart att konfigurera en virtuell dator i ett datacenter. Azure CLI väntar tills kommandot har slutförts för att acceptera andra kommandon. Många kommandon erbjuder därför en --no-wait parameter som visas här:

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

När du tar bort en resursgrupp tas även alla resurser som tillhör den bort. Det kan ta lång tid att ta bort dessa resurser. När du kör kommandot med parametern --no-wait accepterar konsolen nya kommandon utan att avbryta borttagningen.

Många kommandon erbjuder ett väntealternativ och pausar konsolen tills något villkor uppfylls. I följande exempel används kommandot az vm wait för att skapa oberoende resurser parallellt:

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

När båda ID:na har skapats kan du använda konsolen igen.

Skriptexempel

Här är exempel på hur du använder variabler och loopar genom en lista när du arbetar med Azure Virtual Machines. För djupgående exempel på hur du använder Bash-konstruktioner med Azure CLI, inklusive loopar, ärendeinstruktioner, if.. då.. annars, och felhantering, se Lär dig att använda Bash med Azure CLI.

Använd dessa skript för att spara ID:t till variabler:

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

Använd dessa skript för att loopa igenom en lista:

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
)

Se även