A la hora de gestionar nuestras máquinas virtuales (VM) tenemos diversas opciones, una de ellas es Azure CLI, una interfaz de línea de comandos multiplataforma para gestionar los recursos en Azure. Vamos a ver toda una serie de ejemplos con comandos a través de Azure CLI que nos servirán para gestionar nuestras VM.

azure virtual machines

 

En Azure CLI encontramos una alternativa a Powershell a la hora de gestionar a través de scripts nuestros recursos en Azure, más sencilla y menos potente que Powershell a la hora de crear scripts avanzados, pero a la vez muy útil dada su disponibilidad multiplataforma tanto para ser usada a través del propio portal de Azure como para instalar en macOS, Linux o Windows.Vamos a ver toda una serie de ejemplos de su uso básico con máquinas virtuales.

 

Crear VM

Vamos a empezar creando una VM con el comando az vm create. Este comando requiere algunos parámetros como son --resource-group para indicar el grupo de recursos donde la queremos crear, --name que es el nombre de nuestra VM y por último --image donde especificamos la imagen a utilizar (en caso que no indiquemos un disco ya creado).

Alternativamente también hemos indicado en el ejemplo los parámetros --admin-username donde definimos el nombre de usuario administrador, --generate-ssh-keys para la generación de clave pública y privada SSH, --size para indicar un tamaño predefinido de VM y finalmente --location para definir la localización de la VM, en caso de no indicar este último cogerá por defecto la localización del grupo de recursos.

az vm create --resource-group nombregrupoderecursos --name nombrevm --image RedHat --admin-username nombredeusuario --generate-ssh-keys --size “standard_DS3_v2” --location westeurope

Una vez creada la VM, Azure CLI mostrará en pantalla las IPs públicas (en caso de existir) y privada para poder conectar a la máquina por SSH con el siguiente comando

ssh IP -l nombredeusuario

 

Gestionar estado de las VM

Seguimos con tareas básicas, para parar una VM usaremos az vm stop

az vm stop -n nombrevm -g nombregrupoderecursos

Para arrancar una VM, cuando esta se encuentre parada, usaremos az vm start

az vm start -n nombrevm -g nombregrupoderecursos

Finalmente para reiniciarla usaremos az vm restart, facil.

az vm restart -n nombrevm -g nombregrupoderecursos

Obviamente para estas acciones nos será útil conocer de antemano el estado de una VM pero para ello ya tendremos que echar mano del comando de información de las VM que vemos a continuación

 

Información de las VM

La información de las VM en Azure CLI se proporciona en formato JSON, afortunadamente tenemos disponibles el parámetro --query para ejecutar consultas JMESPATH sobre estos datos. Esto lo veremos claramente en los ejemplos siguientes
Podemos listar todas nuestras VM por grupo de recursos (opcional) con el siguiente comando

az vm list --resource-group

Esto nos devuelve como decimos un montón de información en formato JSON. Si nos fijamos toda la información está jerarquizada y es en base a esta estructura, como podremos consultar cualquiera de los datos. En los siguientes ejemplos utilizaremos el comando az vm show para obtener información de una de nuestras VM. El siguiente comando sin filtrado muestra toda una serie de información de nuestra VM.

az vm show --resource-group nombregrupoderecursos --name nombrevm

Para obtener el nombre de administrador de la VM lanzaremos el comando ya usando el parámetro query

az vm show --resource-group nombregrupoderecursos --name nombrevm --query “osprofile.adminusername”

Para obtener el tamaño ejecutamos

az vm show --resource-group nombregrupoderecursos --name nombrevm --query “hardware.Profile.vmSize”

Para obtener el SKU

az vm show --resource-group nombregrupoderecursos --name nombrevm --query “storage.Profile.imageReference.sku”

Pero aquí no se acaba la cosa porque el comando az vm show no muestra por defecto toda la información, para ello tenemos que especificar el parámetro --show-details. Sin este, si lanzamos por ejemplo una consulta para obtener el estado de la VM no obtendremos respuesta aunque exista la propiedad en sí...

Para obtener el estado de una VM ejecutaremos

az vm show --resource-group nombregrupoderecursos --name nombrevm --show-details --query “powerState”

Para obtener la(s) IP privadas de una VM

az vm show --resource-group nombregrupoderecursos --name nombrevm --show-details --query “privateIps”

Para obtener la(s) IP públicas de una VM

az vm show --resource-group nombregrupoderecursos --name nombrevm --show-details --query “publicIps”

Estos últimos datos también los podemos recoger y de manera conjunta con

az vm list-ip-addresses --name nombrevm --output table

 

Imágenes disponibles

A la hora de crear una VM en el primer ejemplo, seleccionabamos una imagen RedHat pero en Azure tenemos un amplio abanico de opciones. Para ver las opciones disponibles ejecutaremos el comando

az vm image list --output table

Podemos a la vez filtrar por sku, región, fabricante...

Listar imágenes disponibles de Wordpress

az vm image list --sku wordpress --output table -all

Listar imágenes de Microsoft

az vm image list --publisher microsoft --output table -all

Listar imágenes disponibles en una determinada región

az vm image list --location westeurope --output table -all

 

Tamaños disponibles

Podemos configurar nuestra VM totalmente pero por lo general nos servirá con alguno de los tamaños predefinidos, para listarlos ejecutaremos el siguiente comando

az vm list-sizes --location westeurope --output table

 

Cambiar tamaño de vm

Una vez creada, una VM puede cambiarse de tamaño en cualquier momento. Mientras sigue funcionando en caso que el nuevo tamaño se encuentre disponible en el mismo cluster o apagando la VM para cualquier otro tamaño. Obviamente y sobretodo si está en producción, lo ideal será cambiar el tamaño “al vuelo” sin que nuestra vm o servicios caigan, para ello podemos consultar que tamaños hay disponibles en el cluster con el siguiente comando

az vm list-vm-resize-options --resource-group nombredegrupoderecursos --name nombrevm --output table

Con los resultados en mente, podemos lanzar una orden de cambio de tamaño con

az vm resize --resource-group nombredegrupoderecursos --name nombrevm --size “standard_DS5_v2”

 

Espero que estos ejemplos os sean útiles para comenzar a trabajar con Azure CLI.