Formatos de salida para los comandos de la CLI de Azure

La CLI de Azure usa JSON como formato de salida predeterminado, pero ofrece otros formatos. Use el parámetro --output (--out o -o) para dar formato a la salida de la CLI. Los valores de argumento y los tipos de salida son:

--output Descripción
json Cadena JSON. Esta es la configuración predeterminada.
jsonc JSON con colores.
table Tabla ASCII con claves como encabezados de columna.
tsv Valores separados por tabulaciones, sin claves
yaml YAML, una alternativa legible a JSON
yamlc YAML con colores
none No hay resultados que no sean errores y advertencias

Advertencia

Use un formato de salida de none o almacene la salida del comando en una variable para evitar exponer secretos como claves y credenciales de la API. Nota: Determinados entornos de CI/CD pueden almacenar la salida de los comandos ejecutados en los registros. Se recomienda confirmar lo que se escribe en esos archivos de registro y quién tiene acceso a los registros. Para obtener más información, consulte Formulario de salida None.

Formato de salida JSON (valor predeterminado)

En el ejemplo siguiente se muestra la lista de máquinas virtuales de sus suscripciones en el formato JSON predeterminado.

az vm list --output json

La salida siguiente tiene algunos campos que se omiten para mayor brevedad y se ha reemplazado la información de identificación.

[
  {
    "availabilitySet": null,
    "diagnosticsProfile": null,
    "hardwareProfile": {
      "vmSize": "Standard_DS1"
    },
    "id": "/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010",
    "instanceView": null,
    "licenseType": null,
    "location": "westus",
    "name": "DemoVM010",
    "networkProfile": {
      "networkInterfaces": [
        {
          "id": "/subscriptions/.../resourceGroups/demorg1/providers/Microsoft.Network/networkInterfaces/DemoVM010VMNic",
          "primary": null,
          "resourceGroup": "demorg1"
        }
      ]
    },
          ...
          ...
          ...
]

Formato de salida YAML

El formato yaml imprime la salida como YAML, un formato de serialización de datos de texto sin formato. YAML suele ser más fácil de leer que JSON y se corresponde fácilmente con ese formato. Algunas aplicaciones y los comandos de la CLI aceptan YAML como entrada de configuración, en lugar de JSON.

az vm list --output yaml

La salida siguiente tiene algunos campos que se omiten para mayor brevedad y se ha reemplazado la información de identificación.

- availabilitySet: null
  diagnosticsProfile: null
  hardwareProfile:
    vmSize: Standard_DS1_v2
  id: /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010
  identity: null
  instanceView: null
  licenseType: null
  location: westus
  name: ExampleVM1
  networkProfile:
    networkInterfaces:
    - id: /subscriptions/.../resourceGroups/DemoRG1/providers/Microsoft.Network/networkInterfaces/DemoVM010Nic
      primary: null
      resourceGroup: DemoRG1
  ...
...

Formato de salida de tabla

El formato table imprime la salida como una tabla ASCII, lo que facilita la lectura y la búsqueda. Los objetos anidados no se incluyen en la tabla de salida, pero se pueden filtrar como parte de una consulta. Algunos campos no se incluyen en la tabla, por lo que este formato es adecuado cuando se desea una revisión rápida de los datos con posibilidad de que el usuario realice búsquedas.

az vm list --output table
Name         ResourceGroup    Location
-----------  ---------------  ----------
DemoVM010    DEMORG1          westus
demovm212    DEMORG1          westus
demovm213    DEMORG1          westus
KBDemo001VM  RGDEMO001        westus
KBDemo020    RGDEMO001        westus

Puede usar el parámetro --query para personalizar las propiedades y las columnas que desea mostrar en la salida de la lista. En el ejemplo siguiente se muestra cómo seleccionar el nombre de máquina virtual y el nombre del grupo de recursos en el comando list.

az vm list --query "[].{resource:resourceGroup, name:name}" --output table
Resource    Name
----------  -----------
DEMORG1     DemoVM010
DEMORG1     demovm212
DEMORG1     demovm213
RGDEMO001   KBDemo001VM
RGDEMO001   KBDemo020

Nota

Algunas claves no se imprimen en la vista de tabla de forma predeterminada. Se trata de id, type y etag. Si necesita ver estos datos en la salida, puede usar la característica de reentrada de claves de JMESPath para cambiar el nombre de la clave y evitar el filtrado.

az vm list --query "[].{objectID:id}" --output table

Para más información sobre el uso de consultas para filtrar los datos, consulte Uso de consultas JMESPath con la CLI de Azure.

Formato de salida TSV

El formato de salida tsv devuelve valores separados por tabulaciones y nueva línea sin formato adicional, claves ni otros símbolos. Este formato facilita el consumo de la salida en otros comandos y herramientas que necesitan procesar el texto de alguna forma. Al igual que el formato table, tsv no imprime objetos anidados.

Mediante el ejemplo anterior con la opción tsv se genera un resultado separado por tabulaciones.

az vm list --output tsv
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    None    None    westus    DemoVM010            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    cbd56d9b-9340-44bc-a722-25f15b578444
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    None    None    westus    demovm212            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    4bdac85d-c2f7-410f-9907-ca7921d930b4
None    None        /subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    None    None    westus    demovm213            None    Succeeded    DEMORG1    None            Microsoft.Compute/virtualMachines    2131c664-221a-4b7f-9653-f6d542fbfa34
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM    None    None    westus    KBDemo001VM            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    14e74761-c17e-4530-a7be-9e4ff06ea74b
None    None        /subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020   None    None    westus    KBDemo020            None    Succeeded    RGDEMO001    None            Microsoft.Compute/virtualMachines    36baa9-9b80-48a8-b4a9-854c7a858ece

Una restricción del formato de salida TSV es que no hay ninguna garantía del orden de salida. La CLI hace todo lo posible para conservar el orden; para ello, ordena alfabéticamente las claves en la respuesta JSON y, después, imprime sus valores en orden para la salida de TSV. No hay ninguna garantía de que la orden siempre sea idéntico, ya que el formato de respuesta del servicio de Azure puede cambiar.

Para aplicar un orden coherente, deberá usar el parámetro --query y el formato de lista de selección múltiple. Si un comando de la CLI devuelve un solo diccionario JSON, use el formato general [key1, key2, ..., keyN] para forzar el orden de las claves. Para los comandos de la CLI que devuelven una matriz, use el formato general [].[key1, key2, ..., keyN] para ordenar los valores de columna.

Por ejemplo, para ordenar la información mostrada anteriormente por identificador, ubicación, grupo de recursos y nombre de máquina virtual:

az vm list --output tsv --query '[].[id, location, resourceGroup, name]'
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/DemoVM010    westus    DEMORG1    DemoVM010
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm212    westus    DEMORG1    demovm212
/subscriptions/.../resourceGroups/DEMORG1/providers/Microsoft.Compute/virtualMachines/demovm213    westus    DEMORG1    demovm213
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo001VM     westus  RGDEMO001       KBDemo001VM
/subscriptions/.../resourceGroups/RGDEMO001/providers/Microsoft.Compute/virtualMachines/KBDemo020       westus  RGDEMO001       KBDemo020

El ejemplo siguiente muestra cómo se puede canalizar la salida tsv a otros comandos en Bash. Se utiliza la consulta para filtrar la salida y forzar el orden, grep selecciona los elementos que tienen el texto "RGD" y el comando cut selecciona el cuarto campo para mostrar el nombre de la máquina virtual en la salida.

az vm list --output tsv --query '[].[id, location, resourceGroup, name]' | grep RGD | cut -f4
KBDemo001VM
KBDemo020

El formato de salida tsv se usa a menudo al asignar valores a variables. En este ejemplo se obtiene el identificador de suscripción activo y se almacena en una variable para su uso en un script.

# Bash Script
subscriptionID=$(az account show --query id --output tsv)
echo "Using subscription ID $subscriptionID"

Para obtener más --query ejemplos de parámetros, consulte Cómo consultar la salida del comando de la CLI de Azure.

Ninguno de los formatos de salida

Algunos comandos de la CLI de Azure proporcionan información de salida que debe proteger. Estos son cuatro ejemplos:

  • contraseñas
  • Cadenas de conexión
  • secrets
  • keys

Para proteger los secretos y las claves al usar comandos de la CLI de Azure, elija una de estas opciones:

Opción Ventajas Caso de uso
--output none formato de salida Impide que la información confidencial se muestre en la consola. Si se produce un error en el comando, seguirá recibiendo mensajes de error. 1. Use cuando la salida del comando se pueda recuperar más adelante.
2. Úselo cuando no sea necesario para la salida.
3. Una opción habitual cuando se utiliza una identidad administrada o una entidad de servicio para administrar recursos de Azure.
Parámetro --query Almacena la salida en una variable. 1. Se utiliza cuando la salida del comando no puede recuperar posteriormente.
2. Use cuando necesite usar un valor de salida de comando en un script.

Usar none y recuperar la información de seguridad en un momento posterior

Algunos secretos de Azure se pueden recuperar más adelante. Un buen ejemplo es los secretos almacenados en Azure Key Vault. En este ejemplo, cree un secreto de Azure Key Vault mediante conjunto de secretos az keyvaul con la opción--output none. Puede recuperar el secreto después mediante el comando mostrar secreto az keyvault.

az keyvault secret set --name MySecretName \
                       --vault-name MyKeyVaultName \
                       --value MySecretValue\
                       --output none

Use --query y devuelva la información de seguridad a una variable

El uso de --query para almacenar la salida en una variable no es técnicamente un formato de salida. Es una solución para proteger los secretos y es una alternativa al uso de --output none. Por ejemplo, al restablecer una credencial de entidad de servicio, la contraseña no se puede recuperar de nuevo.

Restablezca una credencial de entidad de servicio que devuelva la salida en el formato json predeterminado:

# reset service principal credentials using default output format (json).
az ad sp credential reset --id myServicePrincipalID --output json

Salida de la consola que muestra la nueva contraseña en la consola.

{
  "appId": "myServicePrincipalID",
  "password": "myServicePrincipalNewPassword",
  "tenant": "myTenantID"
}

Una mejor solución es devolver información de seguridad a una variable.

# Bash Script
# reset service principal credentials returning results to a variable
myNewPassword=$(az ad sp credential reset --id myServicePrincipalID --query password --output tsv)

# Display the new password (remove this line in production for security)
echo "New password: $myNewPassword"

Para obtener más ejemplos sobre cómo almacenar la salida en una variable, consulte Uso correcto de la CLI de Azure: pasar valores a otro comando. Para más información sobre la --query sintaxis de parámetros, consulte Cómo consultar la salida del comando de la CLI de Azure.

Establecimiento del formato de salida predeterminado

Los comandos de la CLI de Azure proporcionan una salida que se puede controlar de dos maneras:

Control de salida Ventajas Instrucciones
Configuración global Seleccione un valor de salida predeterminado que utilice con más frecuencia para no tener que proporcionar continuamente un parámetro --output para cada comando de referencia. Especifique un formato de salida predeterminado mediante conjunto de configuración az.
Command, parámetro Especifique la salida en el nivel de comando y proporcione la máxima flexibilidad a los scripts. Puede controlar la salida de la consola, el registro y la entrada de variables para cada comando de referencia. Invalide la configuración predeterminada mediante el parámetro de un comando de referencia --output.

La salida predeterminada de la CLI de Azure es json. Establezca la salida predeterminada en none cuando la salida de la consola y el registro no sean necesarios.

az config set core.output=none

Puede sobrescribir la salida predeterminada de cualquier comando de referencia de la CLI de Azure mediante el parámetro--output. Este es un script de comandos que modifican y prueban la salida del comando:

# set your default output to table
az config set core.output=table

# show your active subscription in table format
# notice how only a subset of properties are returned in the table
az account show

# override your table default and show your active subscription in jsonc format
az account show --output jsonc

# reset your default output to json
az config set core.output=json

Consulte también