Tipy pro úspěšné použití Azure CLI
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-while do-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.
Referenční index pro Azure CLI poskytuje seznam A až Z všech referenčních skupin. Rozbalte levý navigační panel pro podskupiny.
Koncepční seznam článků Azure CLI poskytuje seznam rychlých startů A až Z, návody, kurzy a výukové moduly, které vysvětlují, jak používat referenční příkazy Azure CLI ve scénářích reálného světa. Seznam článků seskupuje články podle skupiny příkazů Azure CLI, jako je
az account
například , a takaz acr
dále. Pomocí kombinace kláves CTRL+F ve Windows (Command+F v macOS) můžete rychle přejít na skupinu příkazů podle vlastního výběru.Index ukázkových skriptů Azure CLI má tři karty:
- Seznam podle oblasti tématu: Na této kartě najdete ukázky pro službu Azure.
- Seznam podle referenční skupiny: Na této kartě najdete ukázky pro referenční skupinu příkazů.
- Úložiště ukázek Azure CLI na GitHubu: Použijte tuto kartu k vyhledání ukázek v úložišti Azure CLI na GitHubu.
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.