Microsoft IaaS: Uso de Custom script extension durante la creación de VMs

Durante el pasado Build se presentaron varias características con el objetivo de mejorar la automatización de procesos. Una de ellas es la llamada Custom script extension, con la que seremos capaces de proporcionar un script en Powershell, durante el asistente de creación de máquinas virtuales, para que este sea lanzado justo después de que concluya la creación.

En este post voy a aprovechar el contexto de uno de los últimos, donde hablaba del servicio Azure Files, para mostrar cómo es posible mapear un recurso compartido a través de esta característica.

En primer lugar, he creado un script con el siguiente código:

$Account = "azurefilesdemogis"
$Key = "YOUR_KEY"
$ShareFolder = "azurefilesfolder"

$cmd = "net use z: \$Account.file.core.windows.net$ShareFolder /u:$Account $Key"
$cmd | Set-Content "c:ProgramDataMicrosoftWindowsStart MenuProgramsStartUpmapping.cmd" 

Restart-Computer -Force

El mismo debe tener extensión ps1 y tenemos la opción tanto de recuperarlo desde local o bien desde una cuenta de Storage:

Custom script VM

Si lo que queremos es reutilizar el script con diferentes argumentos, también podemos hacer que el mismo acepte un conjunto de parámetros:

Param(
    [string]$Account,
    [string]$Key,
    [string]$ShareFolder)

$cmd = "net use z: \$Account.file.core.windows.net$ShareFolder /u:$Account $Key"
$cmd | Set-Content "c:ProgramDataMicrosoftWindowsStart MenuProgramsStartUpmapping.cmd" 

Restart-Computer -Force

De esta otra manera, podremos asociar los valores requeridos a través del asistente de la creación de la VM:

-Account "azurefilesdemogis" -Key "YOUR_KEY" -ShareFolder "azurefilesfolder"

Custom Script configuration with arguments

En este ejemplo debemos recordar que la VM y el servicio de Azure Files deben estar alojados en la misma región.

Una vez que el proceso de creación e inicio de la máquina haya finalizado, podemos acceder de manera remota para comprobar el resultado:

Network locations

El directorio donde se almacena el script asociado durante el asistente se encuentra en C:PackagesPluginsMicrosoft.Compute.CustomScriptExtension1.0.3Downloads.

Espero que sea de utilidad.

¡Saludos!