Crear una Vm con un SKU preseleccionado con PowerShell

Introducción

Cuando queremos crear una «virtual machine» desde el portal de Azure tenemos a nuestra disposición un abanico de diferentes imágenes que, dependiendo de la región en la que esté el grupo de recursos, será más o menos amplia.

Desde al portal cremos un grupo de recursos y vamos a simular que queremos crear una VM.

Dentro del desplegable en «Image» podemos seleccionar entre las siguientes.

Si queremos repetir la tarea desde la consola de PowerShell emplearíamos el siguiente cmdlet: New-AzVM que nos permite crear una VM.

En la ayuda de los parámetros, en contreto en «image«, no nos termina de quedar claro cómo podemos indicar una imagen diferente a la que nos aparece. Nos explica que el valor por defecto es un «Win2016Datacenter«, otras opciones de imagen como «Debian» o «CentOS» pero echamos en falta otras opciones que sí nos aparecían en el portal: «Windows Server 2019 Datacenter» o «Windows 10 Pro«, por ejemplo.

En el post vamos vamos a emplear diferentes cmdlets que nos van a ayudar a seleccionar entre todo ese abanico de imágenes justo el que nos interesa. En esta ocasión vamos a ver cómo seleccionar un Windows Server 2019 como S.O.

Vamos con ello.

Paso 1: Get-AzVMImagePublisher

El primer paso sería localizar todos los «Publisher» que tenemos. Nos ayudaremos del cmdlets: Get-AzVMImagePublisher. El cual nos va a mostrar todos los «Publisher» que en el momento de escribir este post pasan de 1200.

Ejecutamos

$Location = 'eastus2'
Get-AzVMImagePublisher  -location $location

Y vamos a seleccionar el de: «MicrosoftWindowsServer» que es el que nos interesa ahora mismo.

Paso 2: Get-AzVMImageOffer

Una vez que sabemos el «Publisher» vamos a continuar seleccionando la imagen que nos interesa. En esta ocasión usaremos:  Get-AzVMImageOffer. El cual nos ayudará a seleccionar el «Offer» deseado. Actualmente nos presenta 19 «Offers» diferentes.

Ejecutamos

$pubName="MicrosoftWindowsServer"
Get-AzVMImageOffer -Location $Location -PublisherName $pubName | Select Offer

Nos quedamos con: «WindowsServer«.

Paso 3:  Get-AzVMImageSku

Ya tenemos nuestro «Publisher» y nuestro «Offer«. El siguiente paso es seleccionar el «Sku«. En esta ocasión emplearemos el cmdlet:  Get-AzVMImageSku. Actualmente disponemos de 59 Skus.

Ejecutamos

$offerName="WindowsServer"
Get-AzVMImageSku -Location $Location -PublisherName $pubName -Offer $offerName | Select Skus

Paso 4: Get-AzVMImage

Estamos en el último paso, la versión. Este paso puede ser omitido si queremos emplear la última versión ya que símplemente indicaríamos «latest» al final de la imagen.

No obstante, vamos a verlo por si en el futuro necesitamos preparar una VM con una versión en concreto. Usaremos el comando: Get-AzVMImage.

En esta ocasión tenemos 21 versiones diferentes.

Ejecutamos

$skuName="2019-Datacenter"
Get-AzVMImage -Location $Location -PublisherName $pubName -Offer $offerName -Sku $skuName | Select Version

Ya tenemos todos los valores que necesitamos. Los debemos de separar por « : «. Que es el formato que nos va a reconocer el parámetro «-image«.

PUBLISHER : OFFER : SKU : VERSION

En nuestro caso: «-Image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest«

Ya podemos crear nuestra VM Windows Server 2019.

Ejecutamos

$VMname = "VM-1"
$Location = 'eastus2'
New-AzVM -Name $VMname -ResourceGroupName $RG -Image MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest -Location $location  -credential $Cred 

Una vez que se nos ha creado la VM nos conectamos a ella y en Server Manager vemos que el sistema operativo es el esperado.

Esperamos que este post os ayude a seleccionar las imágenes que os interesen y podais crear máquinas virtuales desde powershell en unas pocas líneas.