Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym kroku samouczka dowiesz się, jak pracować ze zmiennymi:
- Wykonaj polecenie Azure CLI i zapisz wynik 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 Azure CLI, takie jak hasło.
- Pobierz obiekty JSON na potrzeby informacji o środowisku, takich jak identyfikatory programowania, etapu i produkcji.
Możesz użyć zmiennej w interfejsie wiersza polecenia platformy Azure do wykonywania operacji kompilacji i niszczenia na dużą skalę.
Wymagania wstępne
- Masz dostęp do grupy zasobów i konta magazynu z uprawnieniami
readerlub 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.
Wskazówka
Składnia dla --query jest wrażliwa na wielkość liter oraz specyficzna dla danego środowiska. Jeśli otrzymasz puste wyniki, sprawdź użycie wielkich liter. Unikaj błędów związanych z cytowaniem, stosując reguły, których nauczyłeś się w Learn Azure CLI syntax differences in Bash, PowerShell, and Cmd
Jeśli parametr --output nie jest określony, te przykłady bazują na domyślnej konfiguracji wyjściowej json ustawionej w Przygotowanie środowiska dla Azure CLI
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 i Cmd, uzyskaj primaryEndpoints dla swojego nowego konta 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
Aby zwrócić poszczególne właściwości w tablicy, określ rozdzielaną przecinkami listę właściwości konta magazynowego.
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"
]
Zmień nazwę 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 zawsze pisana wielką literą w --output table.
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Filtrowanie wyników zapytania
Połącz to, czego nauczyłeś się o cytowaniu, z tym, czego właśnie dowiedziałeś 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
Nauka przechowywania danych wyjściowych poleceń w zmiennej jest przydatna podczas tworzenia zasobów platformy Azure, które generują sekrety, które powinny być chronione. Na przykład podczas tworzenia głównej usługi, resetowania poświadczeń lub pobierania tajemnicy z usługi Azure Key Vault dane wyjściowe polecenia powinny być chronione.
Utwórz nowy magazyn kluczy Azure i tajemnicę, zwracając 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 używają echo do weryfikacji wartości zmiennych, ponieważ jest to samouczek szkoleniowy. Nie używaj echo dla wartości tajnych i haseł w środowiskach produkcyjnych.
# 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
Pobieranie zawartości pliku JSON i przechowywanie go w zmiennej
Ta następna sekcja to "wyzwanie rozwojowe" dla samouczka wprowadzającego. Jednak aby zarządzać zasobami platformy Azure w środowiskach programistycznych, etapowych i produkcyjnych, często trzeba odczytać plik konfiguracji.
Czy jesteś gotowy, aby poszerzyć swoje umiejętności w Azure CLI? 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 ikony upload/download files na pasku menu, aby zapisać plik tekstowy na swoim dysku 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"
}
}
}
Przechowaj zawartość swojego pliku JSON w zmiennej do dalszego wykorzystania w poleceniach Azure CLI. 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.
Poniższy 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 został wyświetlony błąd "Nie znaleziono polecenia jq"? Ten błąd występuje, ponieważ skrypt zależy od polecenia Bash jq . Zainstaluj środowisko jq w środowisku lub uruchom ten skrypt w usłudze Azure Cloud Shell.
Teraz masz przechowywaną w zmiennej tajną nazwę klucza Azure Key Vault specyficzną dla środowiska i możesz ją użyć do łączenia z zasobami Azure. Ta sama metoda jest odpowiednia w przypadku adresów IP maszyn wirtualnych platformy Azure i parametrów 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ółów na temat jednego z zagadnień omówionych w tym kroku samouczka? Skorzystaj z linków w tej tabeli, aby dowiedzieć się więcej.
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.