En el post anterior te conté cómo era posible crear entornos en Microsoft Azure con la ayuda de Azure Resource Manager y sus plantillas. Otro de los escenarios recurrentes es que, además de crear dicho entorno, necesites publicar el código de tu aplicación en el momento de la creación. En este post te voy a contar cómo crear y desplegar websites con Azure Resource Manager.
En primer lugar, debes tener un sitio que publicar y paquetizar. Muchas veces hemos oído el concepto Web Deploy pero creo que, al ser tan transparente para nosotros, es posible no tengas muy claro de qué se trata. Web Deploy permite paquetizar el contenido de una aplicación web, junto con su configuración y los elementos necesarios (registros, assemblies, etcétera) para ser deplesgados en un servidor IIS, Más información aquí.
Para este ejemplo he creado un proyecto web utilizando la plantilla de Visual Studio. La forma de crear un paquete válido para MSDeploy es a través de la opción Publish.

Dentro de la opciones debes elegir el modo Custom y agregar un nombre al perfil de publicación.

Dentro de las opciones disponibles está la llamada Web Deploy Package, la cual generará un archivo zip con el contenido y la configuración del sitio. Elige una ubicación para el paquete y haz clic Publish para generarlo.

Además del archivo zip, se han generado otros tres archivos:
- WebApplication.deploy: se trata de un ejecutable que te permite lanzar el despliegue e incluso simular el proceso.
- WebApplication.deploy-readme: archivo readme donde se explican los requisitos para poder lanzar el ejecutable y las posibles opciones.
- WebApplication.SetParameters: destinado a los posibles parámetros, como pueden ser el nombre del pool o las cadenas de conexión.
El único que es necesario para este escenario es el zip generado. Para que sea accesible para Azure Resource Manager la mejor opción es subirlo a una cuenta de Azure Storage.
El último paso es crear un proyecto del tipo Azure Resource Group como te mostré en el post anterior, y agregar un sitio web. Para poder utilizar MSDeploy en esta plantilla, es necesario agregar un nuevo recurso llamado Web Deploy for Web Apps, seleccionando el sitio web al que irá asociado.

Esta acción añadirá una nueva sección dentro del archivo JSON, que estará asociada directamente con el sitio web elegido en el asistente.

Como se puede ver en la imagen anterior se han agregado además tres nuevos parámetros:
- MyMSDeployPackage: debes especificar el nombre del archivo zip subido al storage.
- _artifactsLocation: URL del storage + container donde está el archivo indicado en MyMSDeployPackage. Por ejemplo: http://returngisstorage.blob.core.windows.net/web
- _artifactsLocationSasToken: token que permitirá el acceso al zip. El propio script de PowerShell generará este token, por lo que no es necesario rellenar este parámetro.
Lanza el script de Powershell haciendo clic con el botón derecho sobre el mismo y selecciona la opción Open with PowerShell ISE

Asegurate de que tienes seleccionada la suscripción donde quieres desplegar, utilizando Add-Account, introduce tus credenciales, y Select-AzureSubscription con el nombre de la suscripción. Pulsa sobre el botón de Play, indica la región donde quieres desplegar y omite, pulsando Intro, el parámetro _artifactsLocationSasToken.

Una vez finalizado el proceso podrás comprobar el resultado a través de https://portal.azure.com, accediendo al apartado Resource Groups.
Si tuvieras problemas con el despliegue a través de MSDeploy puedes revisar el log desde la consola del portal Kudu a través de esta URL: https://siteName.scm.azurewebsites.net/DebugConsole. Navega hasta LogFiles > SiteExtensions > MSDeploy > appManagerLog.xml para poder descargar el log.

¡Saludos!