Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se naučíte pracovat s proměnnými:
- Spusťte příkaz Azure CLI a uložte výstup do proměnné.
- Přečtěte si místní soubor JSON a uložte hodnoty vlastností do proměnné.
Mezi běžné případy použití proměnných patří:
- Získejte informace o existujícím prostředku Azure, například ID prostředku.
- Získejte výstup z příkazu Azure CLI, například hesla.
- Získejte objekty JSON pro informace o prostředí, jako jsou vývoj, fáze a produkční ID.
Proměnnou v Azure CLI můžete použít k provádění operací sestavení a zničení ve velkém měřítku.
Požadavky
- Máte přístup ke skupině prostředků a účtu úložiště s oprávněními
readernebo vyššími na úrovni účtu úložiště.
Získání výstupu příkazu pomocí dotazu JMESPath
Získejte informace o existujícím prostředku Azure pomocí --query parametru show příkazu. Spustí se dotaz JMESPath a vrátí se jedna nebo více hodnot vlastností prostředku Azure.
Návod
Syntaxe pro --query rozlišuje velká a malá písmena a je specifická pro prostředí. Pokud se zobrazí prázdné výsledky, zkontrolujte velká písmena. Vyhněte se chybám v uvozování tím, že použijete pravidla, která jste se naučili v části Naučte se rozdíly v syntaxi Azure CLI v prostředí Bash, PowerShell a Cmd.
Pokud není --output parametr zadaný, tyto příklady spoléhají na výchozí výstupní konfiguraci json, která je nastavena v Příprava prostředí pro Azure CLI.
Získání vlastností slovníku JSON prostředku Azure
Pomocí účtu úložiště vytvořeného v syntaxích Azure CLI v prostředí Bash, PowerShell a Cmd získejte primaryEndpoints vašeho nového účtu úložiště.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Výstup slovníku JSON konzoly:
{
"blob": "https://msdocssa00000000.blob.core.windows.net/",
"dfs": "https://msdocssa00000000.dfs.core.windows.net/",
"file": "https://msdocssa00000000.file.core.windows.net/",
"internetEndpoints": null,
"microsoftEndpoints": null,
"queue": "https://msdocssa00000000.queue.core.windows.net/",
"table": "https://msdocssa00000000.table.core.windows.net/",
"web": "https://msdocssa00000000.z13.web.core.windows.net/"
}
Získání jednotlivých objektů JSON
Pokud chcete vrátit jednotlivé vlastnosti v poli (seznamu), zadejte čárkami oddělený seznam vlastností účtu úložiště.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
Výstup pole JSON konzoly:
[
"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/msdocs-tutorial-rg-00000000/providers/Microsoft.Storage/storageAccounts/ msdocssa000000000",
"eastus",
"https://msdocssa000000000.blob.core.windows.net/",
"yyyy-mm-ddT19:11:56.399484+00:00"
]
Přejmenování vlastností
Přejmenujte vlastnosti pomocí složených závorek ({}) a seznamu oddělených čárkami. Názvy nových vlastností nemohou obsahovat mezery. Tento příklad vrátí výstup ve table formátu.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Výstup konzolové tabulky První písmeno každého sloupce je velkým písmenem --output tablev:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Filtrování výsledků dotazu
Zkombinujte to, co jste se naučili o citování, s tím, co jste se právě naučili ohledně --query. Tyto příklady používají filtr.
V Bashu nemůžete mít mezeru před nebo za znaménkem rovná se (=). Můžete se rozhodnout použít uvozovky kolem hodnoty proměnné, takže msdocs-tutorial-rg-00000000 a "msdocs-tutorial-rg-00000000" jsou obě správné.
rgName="<msdocs-tutorial-rg-00000000>"
# Get a list of all Azure storage accounts that allow blob public access.
# Notice the backticks and escape characters needed for boolean values.
az storage account list --resource-group $rgName \
--query "[?allowBlobPublicAccess == \`true\`].name"
# Get a list of Azure storage accounts that were created in the last 30 days. Return the results as a table.
saDate=$(date +%F -d "-30days")
az storage account list --resource-group $rgName \
--query "[?creationTime >='$saDate'].{saName:name, createdTimeStamp:creationTime}" \
--output table
# Get a list of Azure storage accounts created in this tutorial
az storage account list --resource-group $rgName \
--query "[?contains(name, 'msdocs')].{saName:name, saKind:kind, saPrimaryLocation:primaryLocation, createdTimeStamp:creationTime}" \
--output table
Vytvoření nového prostředku Azure, který ukládá výstup do proměnné
Učení se ukládat výstup příkazů do proměnné je výhodné při vytváření prostředků Azure, které mají být chráněné výstupními tajnými kódy. Například při vytváření instančního objektu, resetování přihlašovacích údajů nebo získání tajného klíče trezoru klíčů Azure by měl být výstup příkazu chráněný.
Vytvořte novou službu Azure Key Vault a tajný klíč a vraťte výstup příkazu do proměnné. Název služby Azure Key Vault musí být globálně jedinečný, takže se v tomto příkladu $RANDOM použije identifikátor. Další pravidla pojmenování služby Azure Key Vault najdete v tématu Běžné kódy chyb pro Azure Key Vault.
Tyto příklady slouží echo k ověření hodnot proměnných, protože se jedná o výukový kurz. Nepoužívejte echo pro hodnoty tajných kódů a hesel v produkčních prostředích.
# Set your variables.
let "randomIdentifier=$RANDOM*$RANDOM"
rgName="<msdocs-tutorial-rg-00000000>"
kvName="msdocs-kv-$randomIdentifier"
location="eastus"
# Set your default output to none
az config set core.output=none
# Create a new Azure Key Vault returning the Key Vault ID
myNewKeyVaultID=$(az keyvault create --name $kvName --resource-group $rgName --location $location --query id --output tsv)
echo "My new Azure Key Vault ID is $myNewKeyVaultID"
# Wait about 1 minute for your Key Vault creation to complete.
# Create a new secret returning the secret ID
kvSecretName="<myKVSecretName>"
kvSecretValue="<myKVSecretValue>"
myNewSecretID=$(az keyvault secret set --vault-name $kvName --name $kvSecretName --value $kvSecretValue --query id --output tsv)
echo "My new secret ID is $myNewSecretID"
# Reset your default output to json
az config set core.output=json
Získání obsahu souboru JSON a jeho uložení do proměnné
Tato další část je "roztažený úkol" pro kurz onboardingu. Pokud ale chcete spravovat prostředky Azure ve vývojovém, dílčím a produkčním prostředí, často potřebujete číst konfigurační soubor.
Jste připraveni roztáhnout své dovednosti v Azure CLI? Vytvořte soubor JSON obsahující následující kód JSON nebo zvolený obsah souboru. Uložte textový soubor na místní disk. Pokud pracujete v Azure Cloud Shellu, uložte textový soubor na jednotce cloudového úložiště pomocí upload/download files ikony na řádku nabídek.
{
"environments": {
"dev": [
{
"id": "1",
"kv-secretName": "dev1SecretName",
"status": "inactive",
},
{
"id": "2",
"kv-secretName": "dev2SecretName",
"status": "active"
}
],
"stg": {
"id": "3",
"kv-secretName": "dev3SecretName"
},
"prod": {
"id": "4",
"kv-secretName": "dev4SecretName"
}
}
}
Obsah souboru JSON uložte do proměnné pro další použití v příkazech Azure CLI. V tomto příkladu změňte msdocs-tutorial.json na název vašeho souboru. Neukládejte echo příkaz ve skriptech na úrovni produkčního prostředí, protože výstup se uloží do souboru protokolu.
Následující skript Bash byl testován v Azure Cloud Shellu a závisí na prostředí Bash jq, který musí být nainstalovaný ve vašem prostředí.
# Show the contents of a file in the console
fileName="msdocs-tutorial.json"
cat $fileName | jq
# Get a JSON dictionary object
stgKV=$(jq -r '.environments.stg."kv-secretName"' $fileName)
echo $stgKV
# Filter a JSON array
devKV=$(jq -r '.environments.dev[] | select(.status=="active") | ."kv-secretName"' $fileName)
echo $devKV
Zobrazila se vám chyba "příkaz jq nebyl nalezen"? K této chybě dochází, protože skript závisí na příkazu Bash jq . Nainstalujte jq ve svém prostředí nebo spusťte tento skript v Azure Cloud Shellu.
Teď máte název tajného kódu služby Azure Key Vault specifický pro prostředí uložený v proměnné a můžete ho použít k připojení k prostředkům Azure. Stejná metoda je vhodná pro IP adresy virtuálních počítačů Azure a připojovacích řetězců SQL Serveru, pokud chcete znovu použít skripty Azure CLI.
Získání dalších podrobností
Chcete podrobnější informace o jednom z témat popsaných v tomto kroku kurzu? Další informace získáte pomocí odkazů v této tabulce.
| Předmět | Další informace |
|---|---|
| Proměnné | Podívejte se na pokročilé příklady úspěšného použití Azure CLI – Předání hodnot jinému příkazu |
| Přečtěte si dobrý přehled proměnných v postupu použití proměnných v příkazech Azure CLI. | |
| Dotazování | V tématu Dotazování výstupu příkazu Azure CLI pomocí dotazu JMESPath najdete širokou škálu příkladů. |
Ponořte se hlouběji do Bashe pomocí --query v Naučte se používat Bash s Azure CLI. |
|
| Azure Key Vault | O službě Azure Key Vault |
| Poskytnutí přístupu ke klíčům, certifikátům a tajným kódům služby Key Vault pomocí řízení přístupu na základě role v Azure | |
| Běžné kódy chyb pro Azure Key Vault | |
| PowerShell | Odkazy: Get-content, Where-Object, Select-Object |
Další krok
Teď, když rozumíte tomu, jak pomocí proměnných uložit výstupní výstup příkazu Azure CLI a hodnoty vlastností JSON, přejděte k dalšímu kroku a zjistěte, jak pomocí skriptů odstranit prostředky Azure.