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 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 --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í uložení výstupu příkazu 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í --querylearn 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.