Wypełnianie zmiennych do użycia w skryptach

W tym kroku samouczka dowiesz się, jak pracować ze zmiennymi:

  • Wykonaj polecenie interfejsu wiersza polecenia platformy Azure i zapisz dane wyjściowe w zmiennej.
  • Odczytywanie lokalnego pliku JSON i przechowywanie wartości właściwości w zmiennej.

Oto niektóre typowe przypadki użycia zmiennych:

  • Uzyskaj informacje o istniejącym zasobie platformy Azure, takim jak identyfikator zasobu.
  • Pobierz dane wyjściowe z polecenia interfejsu wiersza polecenia platformy Azure, takiego jak hasło.
  • Pobierz obiekty JSON na potrzeby informacji o środowisku, takich jak identyfikatory programowania, etapu i produkcji.

Zmienna może być następnie używana w interfejsie wiersza polecenia platformy Azure do wykonywania zadań kompilacji i niszczenia na dużą skalę.

Wymagania wstępne

  • Masz dostęp do grupy zasobów i konta magazynu z uprawnieniami reader lub wyższymi na poziomie konta magazynu.

Pobieranie danych wyjściowych polecenia przy użyciu zapytania JMESPath

Uzyskaj informacje o istniejącym zasobie platformy Azure przy użyciu --query parametru show polecenia . Wykonywane jest zapytanie JMESPath i zwracana jest co najmniej jedna wartość właściwości zasobu platformy Azure.

Napiwek

Składnia dla --query programu jest uwzględniana w wielkości liter i specyficzna dla środowiska. Jeśli otrzymasz puste wyniki, sprawdź swoje wielkie litery. Unikaj cytowania błędów, stosując reguły poznane w temacie Learn Azure CLI syntax differences in Bash, PowerShell and Cmd (Poznaj różnice składni interfejsu wiersza polecenia platformy Azure w powłokach Bash, programie PowerShell i programie Cmd)

--output O ile parametr nie zostanie określony, te przykłady bazują na domyślnej konfiguracji wyjściowej ustawionej json w sekcji Przygotowywanie środowiska dla interfejsu wiersza polecenia platformy Azure

Pobieranie właściwości słownika JSON zasobu platformy Azure

Korzystając z konta magazynu utworzonego w artykule Learn Azure CLI syntax differences in Bash , PowerShell and Cmd (Różnice składni interfejsu wiersza polecenia platformy Azure w programie Bash, programie PowerShell i programie Cmd) uzyskaj primaryEndpoints nowe konto magazynu.

az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
                        --name <msdocssa000000000> \
                        --query primaryEndpoints

Dane wyjściowe słownika JSON konsoli:

{
  "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/"
}

Pobieranie pojedynczych obiektów JSON

Określ rozdzielaną przecinkami listę właściwości konta magazynu, aby zwrócić poszczególne właściwości w tablicy (lista).

az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
                        --name <msdocssa000000000> \
                        --query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"

Dane wyjściowe tablicy JSON konsoli:

[
  "/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"
]

Zmienianie nazwy właściwości

Zmień nazwy właściwości przy użyciu nawiasów klamrowych ({}) i listy rozdzielanej przecinkami. Nowe nazwy właściwości nie mogą zawierać spacji. Ten przykład zwraca dane wyjściowe w table formacie.

az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
                        --name <msdocssa000000000> \
                        --query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
                        --output table

Dane wyjściowe tabeli konsoli. Pierwsza litera każdej kolumny jest wielkich liter w pliku --output table:

SaName             SaKind     SaMinTLSversion
-----------------  ---------  -----------------
msdocssa000000000  StorageV2  TLS1_0

Filtrowanie wyników zapytania

Połącz zdobytą wiedzę na temat cytowania informacji o tym, czego właśnie dowiedzieliśmy się o --query. Te przykłady stosują filtr.

W powłoce Bash nie można mieć spacji przed lub po znaku równości (=). Możesz zdecydować się na użycie cudzysłowów wokół wartości zmiennej, więc msdocs-tutorial-rg-00000000 i "msdocs-tutorial-rg-00000000" są poprawne.

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

Tworzenie nowego zasobu platformy Azure przechowującego dane wyjściowe w zmiennej

Edukacja do przechowywania danych wyjściowych poleceń w zmiennej jest korzystne podczas tworzenia zasobów platformy Azure, które wyświetlają wpisy tajne, które powinny być chronione. Na przykład podczas tworzenia jednostki usługi, resetowania poświadczeń lub pobierania wpisu tajnego usługi Azure Key Vault dane wyjściowe polecenia powinny być chronione.

Utwórz nową usługę Azure Key Vault i wpis tajny zwracający dane wyjściowe polecenia do zmiennej. Nazwa usługi Azure Key Vault musi być globalnie unikatowa, więc $RANDOM identyfikator jest używany w tym przykładzie. Aby uzyskać więcej reguł nazewnictwa usługi Azure Key Vault, zobacz Typowe kody błędów dla usługi Azure Key Vault.

Te przykłady służą echo do weryfikowania wartości zmiennych, ponieważ jest to samouczek nauczania. Nie używaj echo wartości wpisów tajnych i haseł w środowiskach na poziomie produkcyjnym.

# 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

Pobieranie zawartości pliku JSON i przechowywanie go w zmiennej

Ta następna sekcja to "zadanie rozproszone" dla samouczka dołączania. Jednak aby zarządzać zasobami platformy Azure w środowiskach programistycznych, etapowych i produkcyjnych, często trzeba odczytać plik konfiguracji.

Czy możesz rozciągnąć umiejętności interfejsu wiersza polecenia platformy Azure? Utwórz plik JSON zawierający następujący kod JSON lub wybraną zawartość pliku. Zapisz plik tekstowy na dysku lokalnym. Jeśli pracujesz w usłudze Azure Cloud Shell, użyj upload/download files ikony na pasku menu, aby zapisać plik tekstowy na dysku magazynu w chmurze.

{
  "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"
    }
  }
}

Przechowywanie zawartości pliku JSON w zmiennej w celu dalszego użycia w poleceniach interfejsu wiersza polecenia platformy Azure. W tym przykładzie zmień msdocs-tutorial.json na nazwę pliku. Nie zapisuj echo polecenia w skryptach na poziomie produkcyjnym, ponieważ dane wyjściowe są zapisywane w pliku dziennika.

Ten skrypt powłoki Bash został przetestowany w usłudze Azure Cloud Shell i zależy od powłoki Bash jq , która musi być zainstalowana w danym środowisku.

# 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

Czy po prostu został wyświetlony błąd "Nie znaleziono polecenia jq"? Jest to spowodowane tym, że ten skrypt zależy od polecenia Bash jq . Zainstaluj środowisko jq w środowisku lub uruchom ten skrypt w usłudze Azure Cloud Shell.

Masz teraz nazwę wpisu tajnego usługi Azure Key Vault specyficzną dla środowiska przechowywaną w zmiennej i możesz jej użyć do łączenia się z zasobami platformy Azure. Ta sama metoda jest dobra w przypadku adresów IP maszyn wirtualnych platformy Azure i parametry połączenia programu SQL Server, gdy chcesz ponownie użyć skryptów interfejsu wiersza polecenia platformy Azure.

Uzyskaj więcej szczegółów

Czy chcesz uzyskać więcej szczegółowych informacji na temat jednego z tematów omówionych w tym kroku samouczka? Skorzystaj z linków w tej tabeli, aby dowiedzieć się więcej.

Temat Dowiedz się więcej
Zmienne Zobacz zaawansowane przykłady w temacie Używanie interfejsu wiersza polecenia platformy Azure pomyślnie — przekazywanie wartości do innego polecenia
Zapoznaj się z dobrym omówieniem zmiennych w temacie How to use variables in Azure CLI commands (Jak używać zmiennych w poleceniach interfejsu wiersza polecenia platformy Azure).
Wykonywanie zapytania Znajdź szeroką gamę przykładów w temacie How to query Azure CLI command output using a JMESPath query (Jak wykonywać zapytania dotyczące poleceń interfejsu wiersza polecenia platformy Azure przy użyciu zapytania JMESPath).
Dowiedz się więcej na temat powłoki Bash, korzystając z --queryartykułu Learn, aby użyć powłoki Bash z interfejsem wiersza polecenia platformy Azure.
Azure Key Vault Informacje o usłudze Azure Key Vault
Zapewnianie dostępu do kluczy, certyfikatów i wpisów tajnych usługi Key Vault za pomocą kontroli dostępu opartej na rolach platformy Azure.
Typowe kody błędów usługi Azure Key Vault
PowerShell Linki referencyjne: Get-content, Where-Object, Select-Object

Następny krok

Teraz, gdy już wiesz, jak używać zmiennych do przechowywania danych wyjściowych poleceń interfejsu wiersza polecenia platformy Azure i wartości właściwości JSON, przejdź do następnego kroku, aby dowiedzieć się, jak używać skryptów do usuwania zasobów platformy Azure.