Udostępnij za pośrednictwem


Porady dotyczące pomyślnego korzystania z interfejsu wiersza polecenia platformy Azure

Interfejs wiersza polecenia platformy Azure to narzędzie wiersza polecenia, które umożliwia konfigurowanie zasobów platformy Azure i zarządzanie nimi z wielu środowisk powłoki. Po wybraniu preferowanego środowiska powłoki i zainstalowaniu interfejsu wiersza polecenia platformy Azure skorzystaj z tego artykułu, aby dowiedzieć się, jak uniknąć typowych pułapek i pomyślnie użyć interfejsu wiersza polecenia platformy Azure.

Aby dowiedzieć się więcej o konkretnych poleceniach interfejsu wiersza polecenia platformy Azure, zobacz listę dokumentacji interfejsu wiersza polecenia platformy Azure.

Wybieranie języka skryptów

Interfejs wiersza polecenia platformy Azure to narzędzie typu open source, które można uruchomić w wielu językach skryptów.

  • Jest to język skryptowy, który określa reguły cytowania, znaku ucieczki i kontynuacji wiersza dla poleceń interfejsu wiersza polecenia platformy Azure.
  • Kopiowanie składni poleceń interfejsu wiersza polecenia platformy Azure zawierających pojedyncze lub podwójne cudzysłowy, znaki ucieczki lub znaki kontynuacji wiersza między językami może być trudne.
  • Większość dokumentacji firmy Microsoft dla interfejsu wiersza polecenia platformy Azure jest napisana i przetestowana w powłoce Bash.
  • Jeśli program PowerShell jest wybranym językiem skryptów, rozważ użycie narzędzia Azure PowerShell, który ma natywną funkcjonalność języka skryptów programu PowerShell.

Aby uzyskać więcej informacji na temat opcji języka skryptów dla interfejsu wiersza polecenia platformy Azure, zobacz Wybieranie odpowiedniego narzędzia wiersza polecenia.

Często zadawane pytania

Oto kilka linków, które ułatwiają udzielenie odpowiedzi na najczęściej zadawane pytania dotyczące interfejsu wiersza polecenia platformy Azure:

Obszar tematu z linkiem do artykułu Napiwek
Menedżer kont sieci Web (WAM) Informacje na temat WAM i sposobu jego wyłączania.
Ustawienia konfiguracji Lista dostępnych ustawień konfiguracji interfejsu wiersza polecenia platformy Azure, włączanie/wyłączanie funkcji interfejsu wiersza polecenia platformy Azure i ustawianie wartości domyślnych.
Formaty danych wyjściowych Instrukcje dotyczące przechowywania identyfikatorów zasobów platformy Azure w zmiennych i ochrony wpisów tajnych zwracanych przez polecenia interfejsu wiersza polecenia platformy Azure.
Przekazywanie wartości JSON w ciągu Cytowanie przykładów wartości parametrów JSON.
Cykl życia pomocy technicznej Informacje o obsługiwanych systemach operacyjnych, językach skryptów i końcu usługi dla wersji i zależności interfejsu wiersza polecenia platformy Azure.
Interfejs API REST Alternatywne polecenie az rest do użycia, gdy określone polecenie interfejsu wiersza polecenia platformy Azure nie jest dostępne dla zasobu platformy Azure.
Grupy referencyjne interfejsu wiersza polecenia platformy Azure Lista do Z grup odwołań interfejsu wiersza polecenia platformy Azure z przechodzeniem do szczegółów do podgrup i wszystkich poleceń interfejsu wiersza polecenia platformy Azure.
Artykuły dotyczące interfejsu wiersza polecenia platformy Azure Lista do Z przewodników Szybki start, przewodników z instrukcjami i samouczków korzystających z poleceń referencyjnych interfejsu wiersza polecenia platformy Azure. Lista jest grupowana według grupy referencyjnej i podgrupy w celu łatwego wyszukiwania.
Przykłady interfejsu wiersza polecenia platformy Azure Lista przykładów do Z, w tym tych przykładów w repozytorium GitHub Azure-samples/azure-cli-samples.
Rozwiązywanie problemów Porady dotyczące przyczyny błędu i korygowania.
Co nowego Krótkie podsumowanie nowych funkcji interfejsu wiersza polecenia platformy Azure.

Przekazywanie wartości do innego polecenia

Jeśli wartość jest używana więcej niż raz, przypisz ją do zmiennej. Zmienne umożliwiają używanie wartości więcej niż raz lub tworzenie bardziej ogólnych skryptów. Ten przykład przypisuje identyfikator znaleziony przez polecenie az vm list do zmiennej.

# 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

Jeśli wartość jest używana tylko raz, rozważ potokowanie. (Potok przekazuje dane wyjściowe jednego polecenia jako dane wejściowe do drugiego polecenia).

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

W przypadku list wielowartych należy wziąć pod uwagę następujące opcje:

  1. Jeśli potrzebujesz więcej kontrolek w wyniku, użyj pętli "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. Alternatywnie użyj xargs flagi -P i rozważ użycie flagi do równoległego uruchamiania operacji w celu zwiększenia wydajności:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | xargs -I {} -P 10 az vm start --ids "{}"
  1. Na koniec interfejs wiersza polecenia platformy Azure ma wbudowaną obsługę przetwarzania poleceń z wieloma --ids równoległymi w celu osiągnięcia tego samego efektu xargs. @- służy do pobierania wartości z potoku:
az vm list --resource-group MyResourceGroup --show-details \
    --query "[?powerState=='VM stopped'].id" \
    --output tsv | az vm start --ids @-

Aby uzyskać więcej informacji na temat używania konstrukcji powłoki Bash z interfejsem wiersza polecenia platformy Azure, w tym pętli, instrukcji case, if.. wtedy.. inne i obsługa błędów, zobacz Learn to use Bash with the Azure CLI (Dowiedz się, jak używać powłoki Bash z interfejsem wiersza polecenia platformy Azure).

Typowe parametry aktualizacji

Grupy poleceń interfejsu wiersza polecenia platformy Azure często zawierają polecenie aktualizacji. Na przykład usługa Azure Virtual Machines zawiera polecenie az vm update . Większość poleceń aktualizacji oferuje trzy typowe parametry: --add, --seti --remove.

Parametry --set i --add przyjmują listę par klucz-wartość rozdzielona spacją: key1=value1 key2=value2. Aby zobaczyć, jakie właściwości można zaktualizować, użyj polecenia show, takiego jak az vm show.

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

Aby uprościć polecenie, rozważ użycie ciągu JSON. Aby na przykład dołączyć nowy dysk danych do maszyny wirtualnej, użyj następującej wartości:

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

Ogólne polecenia zasobów

Usługa, z którą chcesz pracować, może nie obsługiwać interfejsu wiersza polecenia platformy Azure. Aby pracować z tymi zasobami, możesz użyć polecenia az resource lub az rest .

Współbieżne wykonywanie

Jeśli jednocześnie uruchamiasz polecenia interfejsu wiersza polecenia platformy Azure na tym samym komputerze, konflikty zapisu mogą wystąpić, jeśli wiele poleceń interfejsu wiersza polecenia platformy Azure zapisuje w tej samej pamięci podręcznej tokenów biblioteki Microsoft Authentication Library (MSAL).

Aby uniknąć potencjalnych awarii, wyizoluj folder konfiguracji interfejsu wiersza polecenia platformy Azure dla każdego skryptu, ustawiając zmienną środowiskową AZURE_CONFIG_DIR dla każdego skryptu na oddzielny katalog. Polecenia interfejsu wiersza polecenia platformy Azure w tym skrypcie zapisują konfigurację i pamięć podręczną tokenów do skonfigurowanej lokalizacji zamiast folderu domyślnego ~/.azure .

export AZURE_CONFIG_DIR=/my/config/dir

Operacje asynchroniczne

Operacje na platformie Azure mogą zająć zauważalny czas. Na przykład konfigurowanie maszyny wirtualnej w centrum danych nie jest natychmiastowe. Interfejs wiersza polecenia platformy Azure czeka na zakończenie polecenia, aby zaakceptować inne polecenia. W związku z tym wiele poleceń oferuje --no-wait parametr, jak pokazano poniżej:

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

Usunięcie grupy zasobów spowoduje również usunięcie wszystkich zasobów, które do niej należą. Usunięcie tych zasobów może zająć dużo czasu. Po uruchomieniu polecenia z parametrem --no-wait konsola akceptuje nowe polecenia bez przerywania usuwania.

Wiele poleceń oferuje opcję oczekiwania, wstrzymując konsolę do momentu spełnienia pewnego warunku. W poniższym przykładzie użyto polecenia az vm wait , aby obsługiwać równoległe tworzenie niezależnych zasobów:

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

Po utworzeniu obu identyfikatorów można ponownie użyć konsoli.

Przykłady skryptów

Poniżej przedstawiono przykłady używania zmiennych i pętli na liście podczas pracy z usługą Azure Virtual Machines. Aby uzyskać szczegółowe przykłady dotyczące używania konstrukcji powłoki Bash z interfejsem wiersza polecenia platformy Azure, w tym pętli, instrukcji case, if.. wtedy.. inne i obsługa błędów, zobacz Learn to use Bash with the Azure CLI (Dowiedz się, jak używać powłoki Bash z interfejsem wiersza polecenia platformy Azure).

Użyj tych skryptów, aby zapisać identyfikatory w zmiennych:

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

Użyj tych skryptów, aby wykonać pętlę na liście:

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
)

Zobacz też