Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этом шаге руководства вы узнаете, как работать с переменными:
- Выполните команду Azure CLI и сохраните выходные данные в переменной.
- Чтение локального JSON-файла и хранение значений свойств в переменной.
Ниже приведены некоторые распространенные варианты использования переменных:
- Получение сведений о существующем ресурсе Azure, например идентификаторе ресурса.
- Получите выходные данные из команды Azure CLI, например пароля.
- Получение объектов JSON для сведений о среде, таких как разработка, этап и рабочие идентификаторы.
Переменную в Azure CLI можно использовать для выполнения операций создания и удаления в большом масштабе.
Предпосылки
- У вас есть доступ к группе ресурсов и учетной записи хранения с разрешениями уровня
readerили выше на уровне учетной записи хранения.
Получение выходных данных команды с помощью запроса JMESPath
Получение сведений о существующем ресурсе Azure с помощью --query параметра show команды. Выполняется запрос JMESPath , и возвращаются одно или несколько значений свойств ресурса Azure.
Подсказка
Синтаксис --query чувствителен к регистру и зависит от среды. Если вы получаете пустые результаты, проверьте использование заглавных букв. Избегайте ошибок в кавычках, применяя правила, которые вы узнали из учебного материала о различных синтаксических особенностях Azure CLI в средах Bash, PowerShell и Cmd.
Если --output параметр не указан, эти примеры зависят от конфигурации выходных json данных по умолчанию в разделе "Подготовка среды для Azure CLI"
Получение свойств словаря JSON ресурса Azure
Используя учетную запись хранения, созданную согласно рекомендациям из Изучите различия в синтаксисе Azure CLI для Bash, PowerShell и Cmd, получите primaryEndpoints вашей новой учетной записи хранения.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Выходные данные словаря JSON консоли:
{
"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/"
}
Получение отдельных объектов JSON
Чтобы вернуть отдельные свойства в массиве (список), укажите список свойств учетной записи хранения с разделителями-запятыми.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
Выходные данные массива JSON консоли:
[
"/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"
]
Переименование свойств
Переименуйте свойства с помощью фигурных скобок ({}) и списка с разделителями-запятыми. Новые имена свойств не могут содержать пробелы. Этот пример возвращает выходные данные в table формате.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Выходные данные таблицы консоли. Первая буква каждого столбца заглавна в --output table:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Фильтрация результатов запроса
Объедините то, что вы узнали о цитировании, с тем, что вы только что узнали о --query. В этих примерах применяется фильтр.
В Bash у вас не может быть пробела до или после знака равного (=). Вы можете использовать кавычки вокруг значения переменной, поэтому msdocs-tutorial-rg-00000000 и "msdocs-tutorial-rg-00000000" они правильные.
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
Создание нового ресурса Azure, сохраняющего выходные данные в переменной
Изучение хранения выходных данных команд в переменной полезно при создании ресурсов Azure, которые выдают секреты и должны быть защищены. Например, при создании служебного принципала, сбросе учетной записи или получении секрета из хранилища ключей Azure выходные данные команды должны быть защищены.
Создайте новый хранилище ключей Azure и секрет, сохраняемый выходные данные команды в переменную. Имя Azure Key Vault должно быть глобально уникальным, поэтому $RANDOM идентификатор используется в этом примере. Дополнительные правила именования Azure Key Vault см. в разделе "Распространенные коды ошибок" для Azure Key Vault.
Эти примеры используются echo для проверки значений переменных, так как это учебное руководство. Не используйте echo для секретов и паролей в средах промышленного уровня.
# 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
Получение содержимого JSON-файла и его хранение в переменной
Следующий раздел — это "сложная задача" для обучающего курса. Однако для управления ресурсами Azure в средах разработки, стадии и рабочей среды часто требуется прочитать файл конфигурации.
Готовы ли вы растянуть навыки Azure CLI? Создайте JSON-файл, содержащий следующий код JSON или содержимое файла. Сохраните текстовый файл на локальном диске. Если вы работаете в Azure Cloud Shell, используйте upload/download files значок в строке меню для хранения текстового файла на диске облачного хранилища.
{
"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"
}
}
}
Сохраните содержимое JSON-файла в переменной для дальнейшего использования в командах Azure CLI. В этом примере замените msdocs-tutorial.json на имя вашего файла. Не сохраняйте echo команду в производственных сценариях, поскольку данные записываются в файле журнала.
Следующий скрипт Bash был протестирован в Azure Cloud Shell и зависит от JQ Bash, который должен быть установлен в вашей среде.
# 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
Вы получили ошибку "команда jq не найдена"? Эта ошибка возникает, так как скрипт зависит от команды Bash jq . Установите jq в среде или запустите этот скрипт в Azure Cloud Shell.
Теперь у вас есть имя секрета Azure Key Vault для конкретной среды, хранящееся в переменной, и его можно использовать для подключения к ресурсам Azure. Этот же метод подходит для IP-адресов виртуальных машин Azure и строк подключения SQL Server, если требуется повторно использовать скрипты Azure CLI.
Узнать больше деталей
Хотите подробнее об одном из тем, описанных на этом шаге руководства? Чтобы узнать больше, воспользуйтесь ссылками в этой таблице.
| Тема | Подробнее |
|---|---|
| Переменные | Дополнительные примеры см. в статье "Использование Azure CLI" — передача значений в другую команду |
| Ознакомьтесь с хорошим обзором переменных в руководстве по использованию переменных в командах Azure CLI. | |
| Запрос данных | Найдите широкий спектр примеров в том, как запросить выходные данные команды Azure CLI с помощью запроса JMESPath. |
Углубитесь в изучение Bash с использованием --query в Учитесь использовать Bash с Azure CLI. |
|
| Хранилище ключей Azure | Сведения об Azure Key Vault |
| Предоставление доступа к ключам Key Vault, сертификатам и секретам с помощью управления доступом на основе ролей Azure. | |
| Распространенные коды ошибок для Azure Key Vault | |
| PowerShell | Справочные ссылки: Get-content, Where-Object, Select-Object |
Следующий шаг
Теперь, когда вы узнаете, как использовать переменные для хранения выходных данных команд Azure CLI и значений свойств JSON, перейдите к следующему шагу, чтобы узнать, как использовать скрипты для удаления ресурсов Azure.