Como obtener una template de DevTest Lab y customizarla

Debido al post de ayer algunos compañeros me han expresado la dificultad para encontrar una template de un devtest lab o bien, no saben que parámetros pueden ser usados para cumplimentar el JSON. A continuación os mostraré el procedimiento que utilizo para obtener los templates y editarlos a mi gusto.

En primer lugar la base la extraigo de github, donde tenemos unas templates bastante completas (También podríamos obtenerla extrayendo el template de un devtest lab que hayamos creado previamente en nuestra suscripción). En caso de querer añadir algún parámetro más y no encontrar su definición por ningún sitio, como por ejemplo los tamaños de VM disponibles, podemos usar a las Dev Tools (tecla F12) de nuestro navegador mientras estamos en el portal de azure:

devteslab

Como podéis observar en la imagen, al modificar cualquier apartado se genera un Put que manda un JSON. En mi ejemplo, al editar los tamaños que vamos a permitir en nuestro devtest lab y pulsar guardar.

Si analizamos el body de esta petición observamos los posibles valores que pueden ser ser añadidos al JSON. En este caso se deberían añadir en la sección que se muestra a continuación:

 "allowedVmSizes": {
 "type": "string",
 "defaultValue": "\"Standard_DS1_v2\", \"Standard_DS3_v2\", \"Standard_DS11_v2\"",
 "minLength": 3,
 "metadata": {
 "description": "Set 'allowed VM sizes' policy: A comma-separated list of VM sizes that are allowed in the lab."
 }

Despliegue de DevTest Labs en Azure

Para realizar el despliegue de un DevTest Lab en Azure, actualmente no existe ningún cmdlet que realice esta tarea, por lo que la deberemos realizar mediante el comando New-AzureRmResourceGroupDeployment del modo que se muestra a continuación, definiendo previamente la plantilla del DevTest Lab en un JSON.

New-AzureRmResourceGroupDeployment -Name deployNameDemoLab -ResourceGroupName $RG -Templateuri $TemplateuriX -TemplateParameterObject $Params -Verbose

Donde las variables son:

  • $RG: Nombre del Resource Group (String).
  • $TemplateuriX: variable que contiene la URI del JSON donde hemos definido los parámetros del DevTest Lab (String).
  • $Params: objeto previamente definido que inyecto al JSON (Objeto).
$params = @{}
$params.add("maxAllowedVmsPerUser",$NumVMUser)
$params.add("maxAllowedVmsPerLab",$NumVMLab)
$params.add("newLabName",$newLabName)

Es importante destacar porque realizo la inyección de un objeto $params en lugar de una URI hacia un JSON donde están definidos los parámetros que seria lo más común. El motivo es porque prefiero añadir los parámetros mediante un Asset definido en mi Automation Account, o bien, por código de Azure powershell/Azure automation.