Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este paso del tutorial, aprenderá a trabajar con variables:
- Ejecute un comando de la CLI de Azure y almacene la salida en una variable.
- Lea un archivo JSON local y almacene los valores de propiedad en una variable.
Algunos casos de uso comunes para las variables son:
- Obtenga información sobre un recurso de Azure existente, como un identificador de recurso.
- Obtenga la salida de un comando de la CLI de Azure, como una contraseña.
- Obtenga objetos JSON para obtener información del entorno, como los identificadores de desarrollo, fase y producción.
Puede usar la variable en la CLI de Azure para realizar operaciones de compilación y destrucción a escala.
Prerrequisitos
- Tiene acceso a un grupo de recursos y una cuenta de almacenamiento con
reader
o permisos superiores a nivel de cuenta de almacenamiento.
Obtención de la salida del comando mediante la consulta JMESPath
Obtenga información sobre un recurso de Azure existente mediante el --query
parámetro del show
comando . Se ejecuta una consulta JMESPath y se devuelven uno o varios valores de propiedad de un recurso de Azure.
Sugerencia
La sintaxis de --query
distingue mayúsculas de minúsculas y es específica del entorno. Si obtiene resultados vacíos, revise el uso de mayúsculas. Evite los errores de comillas aplicando las reglas que aprendió en Aprenda las diferencias de sintaxis de la CLI de Azure en Bash, PowerShell y Cmd.
A menos que se especifique el parámetro --output
, estos ejemplos dependen de una configuración de salida predeterminada establecida en json
del .
Obtención de propiedades de diccionario JSON de un recurso de Azure
Con la cuenta de almacenamiento creada en Aprender las diferencias de sintaxis de la CLI de Azure en Bash, PowerShell y Cmd, obtenga los detalles de su nueva cuenta de almacenamiento.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query primaryEndpoints
Salida del diccionario JSON de la consola:
{
"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/"
}
Obtención de objetos JSON individuales
Para devolver propiedades individuales en una matriz (lista), especifique una lista delimitada por comas de las propiedades de la cuenta de almacenamiento.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "[id, primaryLocation, primaryEndpoints.blob, encryption.services.blob.lastEnabledTime]"
Salida de la matriz JSON de la consola:
[
"/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"
]
Cambiar el nombre de las propiedades
Cambie el nombre de las propiedades mediante corchetes () y una lista delimitada por comas{}
. Los nuevos nombres de propiedad no pueden contener espacios. En este ejemplo se devuelve la salida en table
formato.
az storage account show --resource-group <msdocs-tutorial-rg-00000000> \
--name <msdocssa000000000> \
--query "{saName:name, saKind:kind, saMinTLSVersion:minimumTlsVersion}" \
--output table
Salida de la tabla de consola. La primera letra de cada columna se escribe en mayúsculas en --output table
:
SaName SaKind SaMinTLSversion
----------------- --------- -----------------
msdocssa000000000 StorageV2 TLS1_0
Filtrar los resultados de la consulta
Combine lo que ha aprendido sobre las citas con lo que acaba de aprender sobre --query
. Estos ejemplos aplican un filtro.
En Bash, no puede tener un espacio antes o después del signo igual (=
). Puede optar por usar comillas alrededor del valor de la variable, por lo que msdocs-tutorial-rg-00000000
y "msdocs-tutorial-rg-00000000"
son correctas.
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
Creación de un nuevo recurso de Azure que almacena la salida en una variable
El aprendizaje para almacenar la salida de comandos en una variable es beneficioso al crear recursos de Azure que generen secretos que se deben proteger. Por ejemplo, al crear una entidad de servicio, restablecer una credencial u obtener un secreto de Azure Key Vault, la salida del comando debería estar protegida.
Cree un nuevo almacén de claves de Azure y un secreto y devuelva la salida del comando a una variable. El nombre de Azure Key Vault debe ser único globalmente, por lo que el $RANDOM
identificador se usa en este ejemplo. Para más reglas de nomenclatura de Azure Key Vault, consulte Códigos de error comunes para Azure Key Vault.
Estos ejemplos usan echo
para comprobar los valores de variable porque se trata de un tutorial de enseñanza. No use echo
para los valores de secreto y contraseña en entornos de nivel de producción.
# 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
Obtener el contenido de un archivo JSON y almacenarlo en una variable
La siguiente sección es una "tarea desafiante" para un tutorial de introducción. Sin embargo, para administrar los recursos de Azure en entornos de desarrollo, fase y producción, a menudo es necesario leer un archivo de configuración.
¿Está listo para ampliar las aptitudes de la CLI de Azure? Cree un archivo JSON que contenga el siguiente JSON o el contenido del archivo que prefiera. Guarde el archivo de texto en la unidad local. Si trabaja en Azure Cloud Shell, use el upload/download files
icono de la barra de menú para almacenar el archivo de texto en su unidad de almacenamiento en la nube.
{
"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"
}
}
}
Almacene el contenido del archivo JSON en una variable para su uso adicional en los comandos de la CLI de Azure. En este ejemplo, cambie msdocs-tutorial.json
por el nombre del archivo. No guarde el echo
comando en scripts de nivel de producción, ya que la salida se guarda en el archivo de registro.
El siguiente script de Bash se probó en Azure Cloud Shell y depende de Bash jq, que debe instalarse en su entorno.
# 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
¿Recibió un error de "comando jq no encontrado"? Este error se produce porque el script depende del comando jq de Bash. Instale jq en su entorno o ejecute este script en Azure Cloud Shell.
Ahora tiene un nombre secreto de Azure Key Vault específico del entorno almacenado en una variable y puede usarlo para conectarse a los recursos de Azure. Este mismo método es adecuado para las direcciones IP de las máquinas virtuales de Azure y las cadenas de conexión de SQL Server cuando desea reutilizar los scripts de la CLI de Azure.
Obtenga más detalles
¿Desea obtener más detalles sobre uno de los temas tratados en este paso del tutorial? Use los vínculos de esta tabla para obtener más información.
Asunto | Aprende más |
---|---|
variables | Consulte ejemplos avanzados en Uso correcto de la CLI de Azure: Paso de valores a otro comando |
Lea una buena introducción a las variables en Uso de variables en los comandos de la CLI de Azure. | |
Consultas | Busque una amplia gama de ejemplos en Cómo consultar la salida del comando de la CLI de Azure mediante una consulta JMESPath. |
Profundice en Bash mediante --query en Learn to use Bash with the Azure CLI (Aprender a usar Bash con la CLI de Azure). |
|
Bóveda de claves de Azure | Acerca de Azure Key Vault |
Proporcione acceso a claves, certificados y secretos de Key Vault con un control de acceso basado en rol de Azure. | |
Códigos de error comunes para Azure Key Vault | |
PowerShell | Vínculos de referencia: Get-content, Where-Object, Select-Object |
Paso siguiente
Ahora que comprende cómo usar variables para almacenar la salida del comando de la CLI de Azure y los valores de propiedad JSON, continúe con el paso siguiente para aprender a usar scripts para eliminar recursos de Azure.