Naplnění proměnných pro použití ve skriptech
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 pak můžete použít v Azure CLI k provádění úloh 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 nebo vyššími oprávněními
reader
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.
Tip
Syntaxe pro --query
malá a velká písmena a 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 rozdílech syntaxe Azure CLI v prostředí Bash, PowerShellu a Cmd.
--output
Pokud není zadaný parametr, tyto příklady spoléhají na výchozí výstupní konfiguraci json
sady v přípravě prostředí pro Azure CLI.
Získání vlastností slovníku JSON prostředku Azure
Získání nového účtu úložiště pomocí účtu úložiště vytvořeného v syntaxi Azure CLI v prostředí Bash, PowerShellu a CmdprimaryEndpoints
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
Zadejte čárkami oddělený seznam vlastností účtu úložiště, které vrátí jednotlivé vlastnosti v poli (seznamu).
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 tabulky konzoly První písmeno každého sloupce je velkým písmenem --output table
v:
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 --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
obě "msdocs-tutorial-rg-00000000"
jsou 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 nový azure Key Vault a tajný kód vracející 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 Kev 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ých, fázích a produkčních prostředích, č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
název souboru. Neukládejte echo
příkaz ve skriptech na úrovni produkčního prostředí, protože výstup se uloží do souboru protokolu.
Tento skript Bash byl testován v Azure Cloud Shellu a závisí na prostředí prostředí Bash jq .
# 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"? Důvodem je to, že tento 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 sql Serveru připojovací řetězec, když 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ů. |
Projděte si podrobnější informace o Bashu pomocí --query learn k použití bashe s Azure CLI. |
|
Azure Key Vault | O 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.