Creación de máquinas virtuales: CLI de Azure | Microsoft Docs
En este tutorial, aprenderá todos los pasos necesarios para crear una máquina virtual con la CLI de Azure. El tutorial también trata las consultas de salida, la reutilización de recursos de Azure y la limpieza de recursos.
Este tutorial se puede llevar a cabo con la experiencia interactiva que se ofrece a través de Azure Cloud Shell o también es posible instalar la CLI localmente.
Use ctrl-Mayús-v (cmd-Mayús-v en Mac OS) para pegar el texto del tutorial en Azure Cloud Shell.
Iniciar sesión
Si usa una instalación local de la CLI, debe iniciar sesión antes de realizar otros pasos.
az login
Complete el proceso de autenticación siguiendo los pasos que se muestran en el terminal.
Crear un grupo de recursos
En Azure, todos los recursos se asignan en un grupo de administración de recursos. Los grupos de recursos proporcionan agrupaciones lógicas de recursos para hacer más fácil trabajar con ellos como una colección. En este tutorial, todos los recursos creados se sitúan en un grupo llamado TutorialResources.
az group create --name TutorialResources --location eastus
Creación de una máquina virtual
Las máquinas virtuales en Azure tienen un gran número de dependencias. La CLI crea estos recursos en función de los argumentos de la línea de comandos que especifique.
Cree una nueva máquina virtual que ejecute Ubuntu con autenticación SSH para el inicio de sesión.
az vm create --resource-group TutorialResources \
--name TutorialVM1 \
--image UbuntuLTS \
--generate-ssh-keys \
--output json \
--verbose
Nota
Si tiene una clave SSH llamada id_rsa disponible, se usa esta clave para la autenticación en lugar de generar una nueva clave.
Al crear la máquina virtual, verá los valores locales utilizados y los recursos de Azure que se van a crear debido a la opción --verbose.
Cuando la máquina virtual esté lista, el servicio de Azure devuelve un código JSON que incluye la dirección IP pública.
{
"fqdns": "",
"id": "...",
"location": "eastus",
"macAddress": "...",
"powerState": "VM running",
"privateIpAddress": "...",
"publicIpAddress": <PUBLIC_IP_ADDRESS>,
"resourceGroup": "TutorialResources",
"zones": ""
}
Confirme que la máquina virtual se está ejecutando conectándose a través de SSH.
ssh <PUBLIC_IP_ADDRESS>
Siga adelante y cierre la sesión de la máquina virtual.
Hay otras maneras de obtener esta dirección IP una vez iniciada la máquina virtual. En la siguiente sección verá cómo obtener información detallada sobre la máquina virtual y cómo filtrar.
Obtención de información de la máquina virtual con consultas
Ahora que se ha creado una máquina virtual, se puede recuperar información detallada al respecto. El comando común para obtener información de un recurso es show.
az vm show --name TutorialVM1 --resource-group TutorialResources
Verá una gran cantidad de información, que puede ser difícil de analizar visualmente. El código JSON devuelto contiene información sobre la autenticación, las interfaces de red, el almacenamiento y mucho más. Lo más importante, contiene los identificadores de objeto de Azure de los recursos a los que está conectada la máquina virtual. Los identificadores de objeto permiten acceder a estos recursos directamente para más información acerca de la configuración y las funcionalidades de la máquina virtual.
Para extraer el identificador de objeto que desea, se usa el argumento --query. Las consultas se escriben en el lenguaje de consulta JMESPath. Comience por obtener el identificador de objeto del controlador de interfaz de red (NIC).
az vm show --name TutorialVM1 \
--resource-group TutorialResources \
--query 'networkProfile.networkInterfaces[].id' \
--output tsv
Hay muchas cosas en este caso al agregar la consulta. Cada parte hace referencia a una clave en la salida JSON o es un operador JMESPath.
networkProfilees una clave del código JSON de nivel superior, que tienenetworkInterfacescomo subclave. Si un valor JSON es un diccionario, se hace referencia a sus claves desde la clave primaria con el operador..- El valor
networkInterfaceses una matriz, por lo que se aplana con el operador[]. Este operador ejecuta el resto de la consulta en cada elemento de la matriz. En este caso, obtiene el valoridde cada elemento de la matriz.
En el formato de salida tsv (valores separados por tabulaciones) se garantiza que solo se incluyen los datos de resultados y el espacio en blanco que consta de tabulaciones y líneas nuevas.
Puesto que el valor devuelto es una sola cadena básica, resulta seguro asignarla directamente a una variable de entorno.
Continúe y asigne a continuación el identificador de objeto del NIC a una variable de entorno.
NIC_ID=$(az vm show -n TutorialVM1 -g TutorialResources \
--query 'networkProfile.networkInterfaces[].id' \
-o tsv)
En este ejemplo también se muestra el uso de argumentos cortos. Puede usar -g en lugar de --resource-group, -n en lugar de --name y -o en lugar de --output.
Establecimiento de variables de entorno desde la salida de la CLI
Ahora que tiene el identificador del elemento NIC, ejecute az network nic show para obtener su información. Tenga en cuenta que no es necesario un grupo de recursos en este caso, puesto que el nombre del grupo de recursos está incluido en el identificador de recurso de Azure.
az network nic show --ids $NIC_ID
Este comando muestra toda la información de la interfaz de red de la máquina virtual. Estos datos incluyen la configuración de DNS, la información de IP, la configuración de seguridad y la dirección MAC. Ahora el objetivo es obtener los identificadores de objeto de la dirección IP pública y la subred.
az network nic show --ids $NIC_ID \
--query '{IP:ipConfigurations[].publicIpAddress.id, Subnet:ipConfigurations[].subnet.id}' \
-o json
{
"IP": [
"/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/publicIPAddresses/TutorialVM1PublicIP"
],
"Subnet": [
"/subscriptions/.../resourceGroups/TutorialResources/providers/Microsoft.Network/virtualNetworks/TutorialVM1VNET/subnets/TutorialVM1Subnet"
]
}
Este comando muestra un objeto JSON con claves personalizadas ("IP" y "Subnet") para los valores extraídos. Aunque este estilo de salida puede no ser útil para herramientas de la línea de comandos, es legible y se puede usar con scripts personalizados.
Para utilizar herramientas de la línea de comandos, cambie el comando y elimine las claves JSON personalizadas y la salida como tsv. Este estilo de salida puede ser procesado por el comando read del shell para cargar los resultados en varias variables. Puesto que se muestran dos valores en líneas independientes, el delimitador del comando read se debe establecer en la cadena vacía en lugar de con el valor predeterminado de espacio en blanco distinto de nueva línea.
read -d '' IP_ID SUBNET_ID <<< $(az network nic show \
--ids $NIC_ID \
--query '[ipConfigurations[].publicIpAddress.id, ipConfigurations[].subnet.id]' \
-o tsv)
No debe utilizar el identificador de subred inmediatamente, sino almacenarlo ahora para evitar tener que realizar una segunda búsqueda más adelante. Por ahora, utilice el identificador del objeto dirección IP pública para buscar la dirección IP pública y almacenarla en una variable del shell.
VM1_IP_ADDR=$(az network public-ip show --ids $IP_ID \
--query ipAddress \
-o tsv)
Ahora tiene la dirección IP de la máquina virtual almacenada en una variable del shell. Continúe y compruebe que es el mismo valor que utilizó para conectarse inicialmente a la máquina virtual.
echo $VM1_IP_ADDR
Creación de una nueva máquina virtual en la subred existente
La segunda máquina virtual usa la subred existente. Puede omitir algunos pasos para almacenar la dirección IP pública de la nueva máquina virtual en una variable de entorno inmediatamente, ya que se devuelve en la información de creación de la máquina virtual. Si se necesita otra información de la máquina virtual más adelante, siempre se puede obtener con el comando az vm show.
VM2_IP_ADDR=$(az vm create -g TutorialResources \
-n TutorialVM2 \
--image UbuntuLTS \
--generate-ssh-keys \
--subnet $SUBNET_ID \
--query publicIpAddress \
-o tsv)
Utilizando la dirección IP almacenada, conéctese mediante SSH a la máquina virtual recién creada.
ssh $VM2_IP_ADDR
Siga adelante y cierre la sesión de la máquina virtual.
Limpieza
Ahora que ha finalizado el tutorial, es el momento de limpiar los recursos creados. Puede eliminar recursos individuales con el comando delete, pero la forma más segura para eliminar todos los recursos de un grupo de recursos es mediante el uso de group delete.
az group delete --name TutorialResources --no-wait
Este comando elimina los recursos creados durante el tutorial y se garantiza que cancela la asignación de los mismos en el orden correcto. El parámetro --no-wait evita que la CLI se bloquee mientras se realiza la eliminación. Si desea esperar hasta que finalice la eliminación o ver su progreso, utilice el comando group wait.
az group wait --name TutorialResources --deleted
Con la limpieza, ha finalizado el tutorial. Puede continuar con un resumen de todo lo aprendido y vínculos a recursos que le ayudarán con los pasos siguientes.
Resumen
¡Enhorabuena! Ha aprendido a crear máquinas virtuales con recursos nuevos y existentes, ha utilizado los argumentos --query y --output para capturar datos que se almacenan en variables del shell y ha examinando algunos de los recursos que se crean para las máquinas virtuales de Azure.
Dónde seguir desde aquí depende del plan de uso que tenga para la CLI. Hay una variedad de materiales que estudian en profundidad las características tratadas en este tutorial.
Ejemplos
Si desea comenzar inmediatamente con tareas específicas, examine algunos scripts de ejemplo.
- Trabajar con máquinas virtuales Linux y máquinas virtuales Windows
- Trabajar con aplicaciones web y Azure Functions
- Trabajar con bases de datos: bases de datos de Azure SQL, PostgreSQL, MySQL y CosmosDB.
Documentación detallada de la CLI
También hay temas que profundizan en las características de la CLI que se mostraron en el tutorial.
- Más información sobre los formatos de salida
- Más información sobre las consultas de salida
- Más información sobre la autorización en Azure
Otra documentación de utilidad
Puede tomarse un tiempo para explorar las características más avanzadas de la CLI, como la configuración de los valores predeterminados o las extensiones.
Comentarios
Si desea proporcionar comentarios, sugerencias o plantear preguntas sobre la CLI, hay varias maneras para ponerse en contacto.
az feedbackes un comando integrado de la CLI que permite enviar comentarios de forma libre al equipo.- Puede enviar una solicitud de característica o un informe de errores con la CLI en el repositorio de la CLI de Azure.
- Formule preguntas y obtenga aclaraciones mediante el envío de un problema en el repositorio de documentación de la CLI de Azure.
Esperamos que disfrute del uso de la CLI de Azure.
¿Tiene algún problema con esta sección? Si es así, envíenos sus comentarios para que podamos mejorarla.