Uwaga
Dostęp do tej strony wymaga autoryzacji. Może 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.
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.
Wskazówka
Składnia dla --query
jest rozróżniana ze względu na wielkość liter i specyficzna dla środowiska. Jeśli otrzymasz puste wyniki, sprawdź użycie wielkich liter. 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)
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 and Cmd, uzyskaj primaryEndpoints
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
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"
]
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 nową instancję Azure Key Vault i tajemnicę, która zwraca 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 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 "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.
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.
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.