Desplegar aplicación web en Azure en 30 segundos

En este artículo vamos a ver cómo desplegar un web role en Azure en 30 segundos.

¿Cómo es esto posible? Muy fácil, utilizando la nueva capacidad de Visual Studio para realizar un despliegue de tus roles por medio del protocolo web deploy. Con este protocolo el despliegue del role es mucho más rápido ahorrando tiempo a la hora de realizar pruebas directamente en Windows Azure.

Para poder realizar un despliegue utilizando web deploy necesitamos:

Visual Studio. Si ya tienes VS instalado perfecto, pero por si acaso, aquí tienes el enlace de descarga de la versión gratuita express o de la Ultimate Trial
SDK de Windows Azure. Contiene las herramientas para Visual Studio y las librerías necesarias para trabajar en proyectos de Windows Azure.

¿Qué es web deploy?

Web deploy o web deployment tool es una extensión de IIS (Internet Information Service) que contiene una serie de herramientas para desplegar, administrar y migrar aplicaciones web, sitios web o incluso servidores enteros.

Gracias a esta extensión, que podremos activar en nuestro data center de Azure, podremos realizar despliegues utilizando el protocolo web deploy de una forma mas rápida.

Beneficios

El beneficio de usar este método es el ahorro de tiempo a la hora de testear nuestro web role en el entorno de Azure. Los cambios se realizan directamente sobre el IIS sin tener que subir el paquete de la solución completa y volver a reiniciar el servicio de hospedaje.

Restricciones

Web deploy sólo nos sirve para un testeo rápido de los cambios realizados en el web role. Esto es porque los cambios son temporales, ya que se realizan directamente sobre el IIS y no se guardan en nuestro storage con lo que si se reinicia el data center donde lo tenemos desplegado u ocurre algún error se volverá a cargar el paquete que se encuentre en el storage perdiendo los cambios realizados en el IIS.

Nos sirve para entorno de preproducción, nunca para el de producción ya que es sólo para testear y por la razón antes mencionada.

Otra restricción es el número de instancias en las que se puede desplegar. Con Web deploy sólo podremos realizar el despliegue en una instancia.

Cómo activar web deploy

Ahora vamos a explicar cómo activar web deploy en un proyecto ya creado y desplegado en Windows Azure. Por lo tanto tenemos que tener un servicio de hospedaje y un storage funcionando en la nube.

Abriremos el proyecto desde Visual Studio y haremos clic con el botón derecho encima del proyecto de Azure. Elegiremos la opción de Publish. Con esto abriremos la ventana para configurar la publicación desde Visual Studio.

image

Crear credenciales

Para hacer el web deploy necesitaremos crearnos unas credenciales. En esta tarea nos ayudada Visual Studio. Deberemos crear o seleccionar un certificado que posteriormente subiremos a nuestra cuenta de Azure. Copiaremos el ID de nuestra subscripción y le daremos un nombre. Los pasos son los mismos que se explica en el post Publicar en Windows Azure desde Visual Studio.

image

Después de realizar este paso, cuando volvamos a la ventana de configuración y seleccionemos la credencial que acabamos de crear, podemos elegir en qué entorno y storage vamos a publicar el proyecto. Pero todavía tenemos la opción de activar web deploy deshabilitada debido a que tenemos que configurar las conexiones remotas.

Configurar conexiones remotas

Para realizar las conexiones remotas necesitamos tener un certificado encriptado. Podemos seleccionar uno que tengamos o creamos uno nuevo. En este caso he creado uno nuevo con nombre webDeployCertificado.

image

Una vez creado presionaremos el botón View para ver las propiedades del certificado. En las propiedades iremos a la pestaña Details donde podremos copiar el certificado a un archivo por medio de un asistente. Elegiremos exportar la clave privada y el formato será Pesonal Information Exchange. El siguiente paso es introducir una contraseña para el certificado. Por último seleccionamos la ruta donde vamos a guardarlo y nos aparecerá un mensaje de que se ha exportado correctamente.

imageimageimageimageimageimage

Volveremos a la ventana de configuración de las conexiones remotas y rellenaremos los campos de usuario y contraseña y aumentaremos un poco más la fecha de finalización de la cuenta.

image

Con esto ya hemos configurado las conexiones remotas de nuestro proyecto, sólo falta activar el web deploy en la ventana de configuración de publicación.

image

Agregar el certificado al servicio

El siguiente paso antes de publicar es agregar el certificado al servicio de Azure. Accedemos al portal de administración de Windows Azure, seleccionamos nuestro servicio y presionamos en el botón agregar certificado. Después podremos elegir la ruta donde esta el certificado que acabamos de crear y añadir la contraseña.

image image

Publicando desde Visual Studio el proyecto

Ahora volveremos a Visual Studio y publicaremos el proyecto. Aparecerá un mensaje preguntando si queremos borrar los paquetes que hay en el storage, aceptaremos y empezará el proceso de publicación.

image image

Una vez terminado ya podremos utilizar web deploy para subir nuestros web roles rápidamente a la nube y testearlos al momento.

Publicando con web deployimage

Después de todo el proceso para activar la funcionalidad de web deploy en nuestro proyecto ya podremos proceder a realizar un despliegue con este protocolo. Presionaremos sobre nuestro web role con el botón derecho y elegiremos la opción de Publish. Con esto accederemos a la ventana de publicación.

Tenemos la opción de crear perfiles de publicación, guardarlos y borrarlos por si realizamos varios despliegues de distintos proyectos o en instancias distintas.

Como método de publicación tendremos por defecto web deploy pero también admite ftp, File system o FPSE.

En la URL del servicio tendremos la dirección de preproducción de nuestro proyecto. Esta deberá de finalizar en:

:8172/MsDeploy.axd

El puerto es 8172 es el que utiliza el protocolo web deploy, por ello habrá que permitir el paso de este puerto por el cortafuegos para lograr la conexión.

El parámetro Site/application se refiere a la instancia donde queremos publicar el web role. Como he mencionado antes, web deploy sólo puede publicar en una instancia. Este parámetro se crea con el nombre de la instancia donde queremos desplegar más el nombre del sitio del web role. Desplegaremos el webrole1 cuyo sitio se llama Web en la instancia WebRole1_IN_0

image

Por último tenemos el usuario y contraseña que hemos utilizado para las conexiones remotas. Cuando pongamos nuestra contraseña ya podremos desplegar el web role y veremos como el tiempo de despliegue es mínimo.

Cuando queramos que los cambios perduren podemos publicar el proyecto de Azure entero como hemos hecho en el paso Publicando desde Visual Studio.

 

Un saludo!

José Perona -- @JVPerona -- Developer Evangelist Jr.