Tipy pro úspěšné použití Azure CLI

Dokončeno

V tomto modulu jste se naučili zvolit prostředí, nainstalovat Azure CLI, interaktivně spouštět příkazy Azure CLI a vytvořit skript Bash. Pojďme se ještě o krok dál naučit a zaměřit se na to, jak úspěšně používat Azure CLI. V této lekci se naučíte, jak Azure CLI funguje za příkazovým řádkem, a poskytne vám tipy pro řešení potíží.

Návod

Tento modul je pokročilý kurz a tato lekce vás podrobně seznámí s Azure CLI. Pokud s programováním na příkazovém řádku začínáte, zaměřte se na koncepty. Podrobnosti budou při získávání zkušeností srozumitelnější. Nevzdávejte se!

Pochopit volání rozhraní API Azure CLI

Provádění za grafickým uživatelským rozhraním Azure Portal a příkazovým řádkem Azure CLI probíhá prostřednictvím volání rozhraní API. Volání rozhraní API Azure CLI můžete zveřejnit pomocí parametru --debug . Co se stane, když vytvoříte novou skupinu prostředků:

az group create --location westus1 --name myResourceGroupName --debug

Tady je výstup terminálu z Azure Cloud Shellu s některými řádky vynechanými pro stručnost. Všimněte si tohoto důležitého výstupu:

  • Argumenty příkazů: Jedná se o skriptovací jazyk, nikoli Azure CLI, který parsuje argumenty příkazů (parametry). Tato výstupní vlastnost je tím prvním místem, na které se podívat, když příkaz způsobí chybu.
  • azlogging: Tato cesta je místo, kde je uložen soubor protokolu.
  • Hlavičky požadavku: Tyto hlavičky jsou hodnoty parametrů předávané příkazem PUT.
  • Obsah odpovědi: Tento výstup se vrátí do konzoly bez úplného --debug výstupu.
cli.knack.cli: Command arguments: ['group', 'create', '--location', 'westus2', '--name', 'myResourceGroupName', '--debug']
cli.knack.cli: __init__ debug log:
...
cli.knack.cli: Event: CommandInvoker.OnPreCommandTableCreate []
cli.azure.cli.core: Modules found from index for 'group': ['azure.cli.command_modules.resource']
cli.azure.cli.core: Loading command modules:
...
cli.azure.cli.core: Loaded 53 groups, 233 commands.
cli.azure.cli.core: Found a match in the command table.
cli.azure.cli.core: Raw command  : group create
...
cli.azure.cli.core.azlogging: metadata file logging enabled - writing logs to '/home/myName/.azure/commands/2025-02-17.21-47-27.group_create.5217.log'.
...
cli.azure.cli.core.sdk.policies: Request URL: 'https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myResourceGroupName?api-version=2022-09-01'
cli.azure.cli.core.sdk.policies: Request method: 'PUT'
cli.azure.cli.core.sdk.policies: Request headers:
cli.azure.cli.core.sdk.policies:     'Content-Type': 'application/json'
cli.azure.cli.core.sdk.policies:     'Content-Length': '23'
cli.azure.cli.core.sdk.policies:     'Accept': 'application/json'
cli.azure.cli.core.sdk.policies:     'x-ms-client-request-id': 'c79caddc-ed78-11ef-8a83-00155dbc433c'
cli.azure.cli.core.sdk.policies:     'CommandName': 'group create'
cli.azure.cli.core.sdk.policies:     'ParameterSetName': '--location --name --debug'
...
cli.azure.cli.core.sdk.policies: Response content:
...
{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupName",
  "location": "westus2",
  "managedBy": null,
  "name": "myResourceGroupName",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}
cli.knack.cli: Event: Cli.SuccessfulExecute []
cli.knack.cli: Event: Cli.PostExecute [<function AzCliLogging.deinit_cmd_metadata_logging at 0x7f98a6bc7820>]
az_command_data_logger: exit code: 0
...

Některé příkazy Azure CLI provádějí několik akcí. Umožňuje --debug zobrazit jednotlivé příkazy, které Azure CLI spouští. Ještě užitečnější je použít --debug k řešení potíží s tím, proč skript Azure CLI vytváří neočekávané výsledky.

Řešení problémů

Kolikrát jste si mysleli, že tento úkol by měl být tak jednoduchý! Proč můj skript nefunguje?" Když dostanete neočekávané výsledky z příkazů Azure CLI, je parametr --debug vaším přítelem! Pojďme si projít příklad společnosti s 100 účty úložiště Azure. Musíte najít účty, ve kterých je povolený veřejný přístup k objektům blob.

# Bash script
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == `true`].id"

Pokud hodnota parametru není správně naformátovaná pro skriptovací jazyk, který parsuje hodnotu, zobrazí se invalid jmespath_type value chyba.

cli.knack.cli: Command arguments: ['storage', 'account', 'list', '--resource-group', 'msdocs-tutorial-rg-69794242', '--query', '[?allowBlobPublicAccess == ].id', '--debug']
...
cli.azure.cli.core.azclierror: argument --query: invalid jmespath_type value: '[?allowBlobPublicAccess == ].id'
az_command_data_logger: argument --query: invalid jmespath_type value: '[?allowBlobPublicAccess == ].id'

Podívejte se na hodnotu proměnné, kterou Bash předává pro allowBlobPublicAccess. Kde je vlastně hodnota? Proč chybí?

Nezapomeňte, že se jedná o prostředí označované také jako skriptovací jazyk, který analyzuje hodnoty proměnných Azure CLI. Každý skriptovací jazyk a dokonce i verze stejného skriptovacího jazyka můžou vést k různým výsledkům. Tady je správný způsob předání logické hodnoty parametru v Bash:

# Bash script
resourceGroup="msdocs-rg-00000000"
az storage account list --resource-group $resourceGroup --query "[?allowBlobPublicAccess == \`true\`].id" --debug
cli.knack.cli: Command arguments: ['storage', 'account', 'list', '--resource-group', 'msdocs-rg-00000000', '--query', '[?allowBlobPublicAccess == `true`].id', '--debug']
...
[
  "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-rg-00000000/providers/Microsoft.Storage/storageAccounts/msdocssa00000000"
]

Seznamte se s důležitým konceptem --debug a vy jste na cestě k úspěšnému používání Azure CLI ve zvoleném prostředí.

Rozdíly v syntaxi skriptovacího jazyka

Jak jsme právě dokončili diskuzi o --debug, dalším krokem je zjistit, co způsobuje většinu chyb skriptování. Skript napsaný v Bash bude třeba upravit, aby se úspěšně spustil v PowerShellu nebo cmd.exe, pokud váš skript obsahuje některou z těchto konstrukcí:

  • Znaky pokračování řádku
  • Proměnné
  • Náhodné identifikátory
  • Nabídky
  • Konstrukty programovacího jazyka

Tady je několik příkladů:

Syntaxe Udeřit PowerShell cmd.exe
Znaky pokračování řádku Zpětné lomítko (\) Backtick (`) Mrkev (^)
Pojmenování proměnných variableName=varValue $variableName="varValue" set variableName=varValue
Číslo jako řetězec \'50\' ''50'' 50
Logická hodnota jako řetězec \`pravda\` ''false'' pravda
Náhodné ID let "randomIdentifier=$RANDOM*$RANDOM" $randomIdentifier = (New-Guid). ToString(). Podřetězec(0,8) set randomIdentifier=%RANDOM%
Smyčka until, while nebo for for, Foreach, while, , do-whiledo-until for-[...]
Zápis do konzoly ozvěna write-host (preferovaný) nebo echo ozvěna

Tato ukázková tabulka není all-inclusive. Co je důležité pochopit při zobrazení chyby Azure CLI, nejprve zvažte, že ve vašem prostředí může dojít k problému se syntaxí. Tuto možnost otestujte zkopírováním a vložením skriptu do jiného skriptovacího jazyka, jako je Azure Cloud Shell. Používá se --debug v obou prostředích a všimněte si rozdílů ve command arguments vlastnosti výstupu.

Důležité

Při kopírování bloků kódu z článků Microsoftu mějte na paměti, že většina dokumentace k Azure CLI v Microsoftu je napsaná pro Bash a testovaná v Azure Cloud Shellu.

Další způsoby získání nápovědy

Příkaz az find

Pomocí následujících příkladů si projděte příkazy Azure CLI:

  • Vyhledejte nejoblíbenější příkazy související s objektem blob slova:

    az find blob
    
  • Zobrazit nejoblíbenější příkazy pro skupinu příkazů Azure CLI, například az storage:

    az find "az storage"
    
  • Zobrazení nejoblíbenějších parametrů a dílčích příkazů pro příkaz Azure CLI:

    az find "az storage account create"
    

--help parametr

Pokud už znáte název požadovaného příkazu, --help získáte podrobnější informace o příkazu a seznam dostupných dílčích příkazů pro skupinu příkazů. Pokračujte v našich příkladech úložiště Azure. Tady je postup, jak získat seznam podskupin a příkazů pro správu služby blob účtu úložiště:

az account blob-service-properties --help

Indexy A až Z

Pokud chcete najít příklady pro referenční příkazy Azure CLI, použijte jeden z několika indexů A až Z.

Kopilot

Azure Portal i Microsoft Edge nabízejí prostředí Copilot, která vrací informace o referenčních příkazech Azure CLI, ukázkách a publikovaných článcích. Copilot také poskytuje odkazy na související otázky týkající se Stack Overflow. Pokud máte obtížnou úlohu k provedení s několika kroky skriptování, Copilot je užitečný při sestavování více zdrojů informací k zodpovězení otázky.