Sugerencias para utilizar la CLI de Azure correctamente
La CLI de Azure es una herramienta de línea de comandos que permite configurar y administrar recursos de Azure desde muchos entornos de shell. Después de elegir el entorno de shell preferido e instalar la CLI de Azure, use este artículo para descubrir sugerencias útiles sobre cómo evitar problemas comunes y usar correctamente la CLI de Azure.
Para más información sobre los comandos específicos de la CLI de Azure, consulte la lista de referencia de la CLI de Azure.
Elección de un lenguaje de scripting
La CLI de Azure es una herramienta de código abierto que puede ejecutar en muchos lenguajes de scripting.
- Es el lenguaje de scripting que determina las reglas de comillas, caracteres de escape y continuación de línea para los comandos de la CLI de Azure.
- Puede resultar difícil copiar la sintaxis de comandos de la CLI de Azure que contiene comillas simples o dobles, caracteres de escape o caracteres de continuación de línea entre lenguajes .
- La mayoría de la documentación de Microsoft para la CLI de Azure se escribe y prueba en Bash.
- Si PowerShell es el lenguaje de scripting que prefiera, considere la posibilidad de usar la herramienta Azure PowerShell, que tiene funcionalidad nativa del lenguaje de scripting de PowerShell.
Para más información sobre las opciones del lenguaje de scripting para la CLI de Azure, consulte Elección de la herramienta de línea de comandos correcta.
Preguntas más frecuentes
Estos son algunos vínculos para ayudarle a responder a las preguntas más frecuentes sobre la CLI de Azure:
Área de asunto con vínculo al artículo | Sugerencia |
---|---|
Trabajar detrás de un proxy | Información sobre cómo trabajar en un servidor proxy. |
Administrador de cuentas web (WAM) | Información sobre WAM y cómo deshabilitarla. |
Parámetros de configuración | Lista de opciones de configuración disponibles de la CLI de Azure, cómo activar o desactivar las características de la CLI de Azure y establecer valores predeterminados. |
Formatos de salida | Instrucciones sobre cómo almacenar identificadores de recursos de Azure en variables y proteger los secretos devueltos por los comandos de la CLI de Azure. |
Pasar valores JSON en una cadena | Ejemplos de comillas para los valores de parámetro JSON. |
Ciclo de vida de soporte técnico | Información sobre los sistemas operativos admitidos, los lenguajes de scripting y el final del servicio para las versiones y dependencias de la CLI de Azure. |
REST API | Comando az rest alternativo que se usará cuando un comando específico de la CLI de Azure no está disponible para un recurso de Azure. |
Grupos de referencia de la CLI de Azure | Una lista a Z de los grupos de referencia de la CLI de Azure con la exploración en profundidad de los subgrupos y todos los comandos de la CLI de Azure. |
Artículos de la CLI de Azure | Lista a Z de inicios rápidos, guías de procedimientos y tutoriales que usan comandos de referencia de la CLI de Azure. La lista se agrupa por grupo de referencia y subgrupo para facilitar la búsqueda. |
Ejemplos de la CLI de Azure | Lista a Z de ejemplos, incluidos esos ejemplos en el repositorio de GitHub Azure-samples/azure-cli-samples. |
Solución de problemas | Causa de errores y sugerencias de corrección. |
Novedades | Resumen breve de las nuevas características de la CLI de Azure. |
Paso de valores a otro comando
Si el valor se usa más de una vez, asígnelo a una variable. Las variables permiten usar valores más de una vez o crear scripts más generales. En este ejemplo se asigna un identificador encontrado por el comando az vm list a una variable.
# assign the list of running VMs to a variable
running_vm_ids=$(az vm list --resource-group MyResourceGroup --show-details \
--query "[?powerState=='VM running'].id" --output tsv)
# verify the value of the variable
echo $running_vm_ids
Si el valor se usa una sola vez, considere la posibilidad de canalizarlo. (Piping pasa la salida de un comando como entrada a un segundo comando).
az vm list --query "[?powerState=='VM running'].name" --output tsv | grep my_vm
En el caso de las listas con varios valores, tenga en cuenta las siguientes opciones:
- Si necesita más controles en el resultado, use un bucle "for":
#!/usr/bin/env bash
for vmList in $(az vm list --resource-group MyResourceGroup --show-details --query "[?powerState=='VM running'].id" -output tsv); do
echo stopping $vmList
az vm stop --ids $vmList
if [ $? -ne 0 ]; then
echo "Failed to stop $vmList"
exit 1
fi
echo $vmList stopped
done
- Como alternativa, use
xargs
y considere la posibilidad de usar la marca-P
para ejecutar las operaciones en paralelo para mejorar el rendimiento:
az vm list --resource-group MyResourceGroup --show-details \
--query "[?powerState=='VM stopped'].id" \
--output tsv | xargs -I {} -P 10 az vm start --ids "{}"
- Por último, la CLI de Azure incluye compatibilidad integrada para procesar comandos con varios
--ids
en paralelo para lograr el mismo efecto que xargs.@-
se usa para obtener valores de la canalización:
az vm list --resource-group MyResourceGroup --show-details \
--query "[?powerState=='VM stopped'].id" \
--output tsv | az vm start --ids @-
Para más información sobre el uso de construcciones de Bash con la CLI de Azure, incluidos bucles, instrucciones case, if..then..else y control de errores, consulte Aprendizaje de Bash mediante la CLI de Azure.
Parámetros de actualización comunes
Los grupos de comandos de la CLI de Azure suelen ofrecer un comando update. Por ejemplo, Azure Virtual Machines incluye el comandoaz vm update. La mayoría de los comandos de actualización ofrecen los tres parámetros comunes: --add
, --set
y --remove
.
Los parámetros --set
y --add
toman una lista de pares clave-valor separados por espacios: key1=value1 key2=value2
. Para ver qué propiedades puede actualizar, use el comando show, por ejemplo, az vm show.
az vm show --resource-group VMResources --name virtual-machine-01
Para simplificar el comando, considere la posibilidad de usar una cadena JSON. Por ejemplo, para conectar un nuevo disco de datos a una máquina virtual, use el siguiente valor:
az vm update --resource-group VMResources --name virtual-machine-01 \
--add storageProfile.dataDisks "{\"createOption\": \"Attach\", \"managedDisk\":
{\"id\":
\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/yg/providers/Microsoft.Compute/disks/yg-disk\"},
\"lun\": 1}"
Comandos de recursos genéricos
Es posible que un servicio con el que quiera trabajar no tenga compatibilidad con la CLI de Azure. Puede usar los comandos az resource o az rest para trabajar con estos recursos.
Ejecución simultánea
Si ejecuta comandos de la CLI de Azure simultáneamente en la misma máquina, los conflictos de escritura pueden producirse si varios comandos de la CLI de Azure escriben en la misma caché de tokens de la Biblioteca de autenticación de Microsoft (MSAL).
Para evitar posibles errores, aísle la carpeta de configuración de la CLI de Azure para cada script estableciendo la variable AZURE_CONFIG_DIR
de entorno para cada script en un directorio independiente. Los comandos de la CLI de Azure en ese script guardan la configuración y la caché de tokens en la ubicación configurada en lugar de la carpeta predeterminada ~/.azure
.
export AZURE_CONFIG_DIR=/my/config/dir
Operaciones asincrónicas
Las operaciones en Azure pueden tardar un tiempo considerable. Por ejemplo, la configuración de una máquina virtual en un centro de datos no es instantánea. La CLI de Azure espera hasta que el comando termine de aceptar otros comandos. Por consiguiente, muchos comandos ofrecen un parámetro --no-wait
como se muestra aquí:
az group delete --name MyResourceGroup --no-wait
Cuando elimina un grupo de recursos, también se quitan todos los recursos que le pertenecen. La eliminación de estos recursos puede tardar mucho tiempo. Al ejecutar el comando con el parámetro --no-wait
, la consola acepta nuevos comandos sin interrumpir la eliminación.
Muchos comandos ofrecen una opción de espera, que pone en pausa la consola hasta que se cumpla alguna condición. En el ejemplo siguiente se usa el comando az vm wait para admitir la creación de recursos independientes en paralelo:
az vm create --resource-group VMResources --name virtual-machine-01 --image centos --no-wait
az vm create --resource-group VMResources --name virtual-machine-02 --image centos --no-wait
subscription=$(az account show --query "id" -o tsv)
vm1_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-01"
vm2_id="/subscriptions/$subscription/resourceGroups/VMResources/providers/Microsoft.Compute/virtualMachines/virtual-machine-02"
az vm wait --created --ids $vm1_id $vm2_id
Una vez que se crean ambos identificadores, puede volver a usar la consola.
Ejemplos de script
Estos son ejemplos para usar variables y recorrer en bucle una lista al trabajar con Azure Virtual Machines. Para ver ejemplos en profundidad sobre el uso de construcciones de Bash con la CLI de Azure, incluidos bucles, instrucciones case, if..then..else y control de errores, consulte Aprendizaje de Bash mediante la CLI de Azure.
Use estos scripts para guardar los identificadores en variables:
ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
`az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
SET "vm_ids=%%F %vm_ids%" :: construct the id list
)
az vm stop --ids %vm_ids% :: CLI stops all VMs in parallel
Use estos scripts para recorrer en bucle una lista:
ECHO OFF
SETLOCAL
FOR /F "tokens=* USEBACKQ" %%F IN (
`az vm list --resource-group VMResources --show-details --query "[?powerState=='VM running'].id" --output tsv`
) DO (
ECHO Stopping %%F
az vm stop --ids %%F
)