Syntax Highlighter

sábado, 31 de diciembre de 2011

Adiós 2011. Bienvenido 2012

principio_accion_reaccionVaya, vaya. No sé ni cómo pero ya ha pasado un año desde que escribí una entrada similar a esta para despedir el 2010. Después de releer la entrada me parece casi mentira que todo lo que me ha pasado en este 2011 haya sido comprimido en un sólo año. Parece que el lema de “pasar a la acción” haya sido uno de los mejores objetivos que me he puesto en mi vida, porque efectivamente, toda acción tiene repercusión, y vaya que si la tiene.

2011 ha sido un año…lleno de acción

Ha sido un año duro, de muchas horas –quizás me quede corto- de trabajo, de noches, fines de semana, festivos…pero hay un refrán que dice que “sarna con gusto no pica”. Nada mejor que hacer lo que más te gusta para que las horas se te pasen volando. Será porque de pequeño en vez de astronauta quería ser arquitecto de software. Vale, ahí me he colado, este concepto no existía aún, pero algo así le expliqué a mi madre cuando bajaba la palanca de la luz para que me desenganchara del MSX. Jugaba  con él, y también hacía con los amigos una base de datos de novi@s en BASIC Sonrisa

Después de un año 2010 en el que había perdido la ilusión, después de toda esta acción ha venido esa famosa repercusión, y la mayoría en forma de buenas noticias y recompensas. No sólo he recuperado esa ilusión perdida, sino que me ha servido para darme cuenta de que nunca es tarde para ser lo que realmente quieres ser.

“Si te sirve de algo, nunca es demasiado tarde para ser quien quieres ser. No hay límite en el tiempo. Empieza cuando quieras. Puedes cambiar o no hacerlo. No hay normas al respecto. De todo podemos sacar una lectura positiva o negativa. Espero que tú saques la positiva. Espero que veas cosas que te sorprendan. Espero que sientas cosas que nunca hayas sentido. Espero que conozcas a personas con otro punto de vista. Espero que vivas una vida de la que te sientas orgulloso. Y si ves que no es así, espero que tengas la fortaleza para empezar de nuevo.”

The Curious Case of Benjamin Button

The Curious Case of Benjamin Button

Gracias a los amigos, a los de siempre y a los nuevos, que ponen la salsa para un viaje inolvidable. Gracias a la familia, por no poder dedicarles todo el tiempo que quisiera y aún así seguir estando a mi lado con el mismo amor. Gracias de nuevo a todos por estar ahí, por compartir este año, por formar parte de mi vida.

Y de nuevo, gracias en especial a Carmen, mi esposa, mi amor y mi compañera, por andar este nuevo camino juntos, ya que sin ti, no podría haberse hecho realidad.

Para acabar y despedir este año 2011, abajo os dejo otro vídeo muy especial, lleno de emoción, realizado en uno de los sitios más bonitos de la Tierra: Tenerife, mi tierra. Os deseo un feliz y PRÓSPERO año 2012 a tod@s.

Un abrazo y hasta mañana.

David Rodríguez

The Mountain - http://www.facebook.com/TSOPhotography

miércoles, 28 de diciembre de 2011

[Tip] Un huevo de pascua llamado “dnndev.me”

dnndev.meHoy toca compartir una utilidad muy interesante de esas que se encuentran en la red y que nos facilitan la vida a los desarrolladores que trabajamos con entornos web.

¿Conocías el dominio “dnndev.me”?

El dominio dnndev.me es un dominio registrado en Internet por nuestro amigo Ian Robinson que apunta a la dirección de loopback 127.0.0.1. Y no sólo este dominio, sino que cualquier subdominio *.dnndev.me también lo hace.

Para hacer una prueba, abre una consola de comandos y haz un ping a “<loquetedelagana>.dnndev.me” y comprobarás que siempre responde tu dirección local.

pingDnnDevme

¿Y para qué sirve esto?

Pues para personas que como yo, que trabajamos en desarrollo con más de 30 sitios web en el IIS, cada uno con un binding distinto, con diferentes versiones, etc. editar el fichero de hosts (c:\windows\system32\drivers\etc\hosts) se vuelve una tarea muy tediosa.

De esta manera, puedes configurar en tu IIS un binding en el sitio web, por ejemplo, http://miproyecto.dnndev.me en vez de usar http://localhost/miproyecto o editar el fichero de hosts para introducir http://miproyecto.dev

Binding

Gracias a Ian Robinson (ver post original) y a Joe Brinkman por su aportación en esta simple y genial idea.

P.D. no es una inocentada!

Happy coding!

martes, 13 de diciembre de 2011

[WebCast] DotNetNuke 6–Framework para reducir costes

MSEventNada más y nada menos que de la mano de Toni Coll, autor y editor del único libro en español sobre desarrollo sobre la plataforma DotNetNuke, este miércoles 14 de diembre a partir de las 09:30 (GMT+1) vamos a tener el placer de poder conocer a fondo las posibilidades de DotNetNuke y entrando en detalle en la administración del CMS (atención para administradores de DNN!!).

El evento aparte de ser presencial, también se retransmitirá en directo en formato webcast, disponible para su registro en la web de eventos de Microsoft. El registro es completamente gratuito. No dejes pasar esta ocasión.

Os dejo más detalles del evento y el enlace para el registro. Un saludo y happy codding!

Registro en línea

DOTNETNUKE 6 - FRAMEWORK PARA REDUCIR COSTES
Descripción:
DotNetNuke es el proyecto Open Source desarrollado con la tecnología Microsoft .NET líder a nivel mundial. Este CMS permite la creación de potentes aplicaciones web, con miles de extensiones disponibles en su Market Snowcovered.

Agenda:

9:30 – 9:40 Bienvenida y presentación
9:40 – 11:00 Introducción y administración del CMS
11:00 – 11:15 Descanso
11:15 – 12:50 Ediciones comerciales y desarrollo
12:50 – 13:00 Preguntas y Despedida

Ponente:

Toni Coll -Autor y editor del único libro en español, cofundador de la única Comunidad en España, propietario y CEO de 2P Systems (DotNetNuke Affiliate Certified Partner).

Perfil de los participantes:
Directores de empresas TIC, responsables TIC de empresas turísticas, profesionales del sector TIC.
Estudiantes de los últimos cursos de la carrera de Informática.

miércoles, 30 de noviembre de 2011

Windows Azure Camps en Tenerife

NOTICIA IMPORTANTE DE ULTIMA HORA:

Buenas noticias. Por motivos ajenos a la organización, el evento pasa de ser presencial a formato WebCast, con lo que podrás seguirlo a través de Internet. Repito, NO acudáis físicamente al evento. Todos aquellos que me dijeron que al ser presencial no podían darse la escapada, ya no tienen excusa Sonrisa

En este enlace tenéis el NUEVO enlace de registro al WebCast.

Registro al WebCast en directo


Siguiendo con la ola de eventos de desarrollo en nuestra isla, esta vez tenemos la gran ocasión de poder contar con David Salgado en un día dedicado al desarrollo sobre la plataforma Windows Azure.

¿Y en qué consiste la jornada?

En que nos vamos de acampada. ¿Qué? Bueno, más o menos Sonrisa La acampada es en el hotel Silken (el hotel Atlántida en la avenida 3 de Mayo, en Santa Cruz de Tenerife). La idea es que Mr. Salgado haga una introducción a Windows Azure, para luego comenzar con laboratorios de desarrollo totalmente prácticos, enfangándonos de barro cantando alrededor del fuego.

AzureCamps

Se repartirán cuentas evaluación de Windows Azure a los asistentes para que puedas comenzar a hacer tus pinitos en desarrollo en la nube.

¿Qué tengo que llevar?

Pues como es totalmente práctico, tendréis que traer vuestro propio portátil con algunas cosas instaladas. Habrá algún USB con los requisitos por si alguien se le olvida, pero intentar venir preparado, porque si no, te vas a perder la mitad del laboratorio con las instalaciones.

Requisitos:

Para los laboratorios más genéricos

Windows Vista SP2, Server 2008 SP2, Server 2008 R2 o Windows 7

IIS con ASP.NET habilitado:

Para los laboratorios de federación:

Y si estás interesado en el de PHP:

 

¿Cuándo es?

¡Mañana! La fecha es el 1 de diciembre de 2011. ¿A qué estás esperando?

Regístrate aquí

jueves, 17 de noviembre de 2011

[Evento] Windows Phone Roadshow en Tenerife

WPRoadShow

¡Sí! ¡El Windows Phone Roadshow en Tenerife! ¿No te habías enterado? Seguro que sí, pero por si aún queda algún rezagado ahí va la buena noticia.

El próximo sábado 26 de noviembre en el salón de actos de la Facultad de Física (Universidad de La Laguna), el Tour del año pasa por nuestra isla, el Windows Phone Roadshow. Gracias a TenerifeDev, la ULL, Microsoft, Intelequia, SDM Programas y Plain Concepts se mostrarán las capacidades de Windows Phone 7.5 Mango y cómo explotarlas desarrollando aplicaciones y juegos.

Si eres desarrollador o estás estudiando para serlo, te interesará conocer el mundo de las plataformas móviles Microsoft de la mano de Josué Yeray, Rafael Serna y Alberto Díaz, expertos en desarrollo con esta nueva plataforma. No te lo puedes perder. Si aún no te has enterado, gran parte del futuro del desarrollo de aplicaciones se encuentra en las plataformas móviles.

¡Habrán muchas sorpresas, regalos y…algún teléfono para los más atentos!

El registro es totalmente gratuito, así que no te puedes perder esta pedazo de ocasión. No olvides circular esta información a quien pudiera interesarle.

Regístrate aquí

Agenda del evento:

09:00-09:30       Registro
09:30-10:30       Por qué Windows Phone?
10:30-12:00       Plataforma de desarrollo de aplicaciones y Juegos
12:00-12:15       Descanso
12.15-13:15       Datos, Servicios y "Live Tiles" (Ventanas Vivas)
13:15-14:00       Capacidades avanzadas de Windows Phone
14:00-15:00       Descanso
15.00-16:00       Multitarea en Windows Phone
16:00-16:15       Descanso
16:15-17:15       Desarrollo paso a paso y publicación de "Zombsquare"
17:15-17:45       Cómo comercializar tus aplicaciones y juegos en el Marketplace
17:45-18:00       Recursos, Ayudas e Iniciativas

WP

Intelequia

viernes, 4 de noviembre de 2011

DNNWorld, DNN Azure Accelerator 6.1 y Windows Azure

DNNworld11logo_long_RGBLa semana que viene comienza en Orlando la DotNetNuke World Conference 2011, la reunión anual donde se congregan los mayores expertos alrededor del CMS donde estaré personalmente.

DNN_StdAnimeAd_World11_1Este año el número total de de sesiones de la conferencia asciende a 34, bastante para dos días y para ponerlo difícil a los que nos parecen interesantes todas ellas. Los que no podáis asistir podéis registraros para ver el KeyNote en directo de Shaun Walker a través de este enlace.

Respecto a las sesiones sobre la nube y DotNetNuke, nos encontramos con estas tres sesiones específicas en la que me podréis encontrar por si tenéis alguna cuestión que resolver:

1) Leveraging Azure Cloud Services.- sesión para desarrolladores por Philipp Becker, en el que se verá como ejemplo cómo usar las colas de Azure para en procesamiento asíncrono de correos electrónicos del portal.

2) DotNetNuke on Azure Cloud Servers.- sesión de interés general (desarrolladores, administradores, etc.) donde se verá en detalle cómo desplegar instancias de DotNetNuke sobre Windows Azure usando el DNN Azure Accelerator. Bruce Chapman será el encargado de impartir la sesión en la que he estado involucrado personalmente, preparada con la última versión del Accelerator.

3) File System Abstraction and Folder Providers in DotNetNuke 6.0.- sesión dedicada a desarrolladores donde se mostrará cómo extender el sistema de ficheros de DNN con almacenamiento en la nube, como puede ser Azure Storage. Un ejemplo de esto último es el Intelequia DNNFolderProviders.

La agenda completa de la conferencia la podéis encontrar en este enlace, para que podáis decidir qué track os gusta más. Si vais a estar por allí, enviadme un twitt a @davidjrh y quedamos.

Pero esta no es la única novedad de este post.

ConnectDotNetNuke Azure Accelerator 6.1

Esta semana, aprovechando la publicación de la versión 6.1 de DotNetNuke, he publicado en CodePlex una nueva versión del Azure Accelerator que reune una serie de nuevas funcionalidades para facilitar el despliegue sobre Azure, en concreto sobre habilitar RDP y Azure Connect sin tener que descargar el código fuente de la solución sino desde dentro del mismo asistente (para más información sobre esto, podéis echar un vistazo a mis dos últimos posts sobre cómo modificar las credenciales de RDP sin Visual Studio y cómo conectar una Azure Cloud Drive a tu equipo).

La lista de nuevas características de esta versión son:

  • Incluye la distribución OFICIAL de DotNetNuke 6.1 (nótese que a partir de ahora los módulos que no forman parte del core ya no se incluyen en la descarga y que se instalan a través del mismo portal con el catálogo de extensiones en línea)
  • Añadido nuevo paso en el asistente para configurar el acceso RDP (Escritorio Remoto) a todos los roles sin la necesidad de usar Visual Studio 2010
  • Los certificados X509 para el acceso RDP se pueden generar a través del mismo asistente
  • Moificada la validación de los controles de la interfaz de usuario con un Error Provider (no más ventanas emergentes)
  • Añadida validación de contraseñas con la misma política que Azure en el asistente, para que no de problemas al acceder a la base de datos
  • Añadidas validaciones para los nombres de los containers de Storage a través de expresiones regulares
  • Añadidas cajas de texto para indicar el nombre y tamaño del VHD inicial con el que se desplegará el gestor de contenidos
  • Añadidos paquetes de servicios pre-compilados para despliegues con RDP habilitado o sin él
  • Añadido un nuevo paquete “Single and Small”, donde todas las instancias son de tamaño Small, todos son webroles y el servidor SMB es la instancia 0
  • Todos los paquetes han sido compilados usando el SDK 1.5 de Azure, con lo que se pueden usar todas las características que incluye
  • Añadido nuevo paso en el asistente para configurar la Red Virtual (Azure Connect) y permitir así la creación de redes virtuales entre Azure (tus instances de DNN en la nube) y otras máquinas on-premise como tu mismo PC, con lo que puedes acceder a ellas a través del entorno de red de Windows
  • Una vez desplegado el servicio, seguirás usando el asistente de instalación oficial de DNN para crear y configurar tu instancia durante la primera ejecución desde tu navegador
  • Recuerda que puedes crear tus propios paquetes personalizados de servicios y ponerlos dentro de la carpeta “/packages” del Accelerator para usarlos con el asistente

Os dejo con algunas capturas de los nuevos pasos del asistente y el enlace a la descarga de la nueva versión.

Nos vemos en Orlando.

http://dnnazureaccelerator.codeplex.com

Step4_RemoteDesktopStep5_VirtualNetworkStep6_PackageSelection

domingo, 16 de octubre de 2011

Evento Desarrollando WebApps en la nube: Materiales

A continuación os dejo los materiales del evento de TenerifeDev “Desarrollando WebApps en la nube”. Felicidades a todos los que se llevaron obsequio de nuestros patrocinadores PluralSight y Telerik.

Imágenes del evento

Vídeo completo de la sesión

 

Slides

viernes, 14 de octubre de 2011

Conectar una Azure Cloud Drive directamente a tu equipo

ConnectLlevo un rato dándole vueltas a la cabeza a ver qué título le ponía a esta entrada en el blog, porque el amplio abanico de posibilidades que se me están ocurriendo es muy grande. Podría simplemente haberlo titulado “Editando los contenidos de un VHD en Azure desde tu escritorio”, pero es que también “Haciendo un backup en Azure Storage con Drag and Drop” también es válido. Por supuesto, “Cómo actualizar el contenido de tu sitio DNN en Azure desde tu explorador de Windows” es de dónde ha nacido la idea.

Y es que desde mi última entrada sobre cómo editar los contenidos de un VHD en Azure y pensando que aún así debería haber un método más fácil para actualizar los contenidos de un VHD, empecé a barajar la idea de usar el actual servidor SMB del DNN Azure Accelerator mezclado con Windows Azure Connect.

¿Qué es Windows Azure Connect?

Hace tiempo que ya escribí una entrada sobre este servicio de Windows Azure –aún en CTP y gratuito de momento- pero por simplificar, resumámoslo en que es un componente para poder crear redes virtuales entre “tu mundo” y Windows Azure. Con ello consigues, por ejemplo, ver las máquinas que están en la nube como si estuvieran en tu red local: les puedes hacer un ping, puedes ver el equipo a través de la red si tiene habilitada su regla en el firewall...¿cómo? ¿qué puedes ver los equipos en Windows Azure por la red y ver sus ficheros?

Y ahí está el quid de la cuestión. Si ya en el mismo DNN Azure Accelerator los web roles acceden por la red para publicar los contenidos del worker role SMB, ¿por qué no podría conectarme desde mi equipo a esa misma unidad compartida para modificar los contenidos a través de una red virtual creada por Windows Azure Connect?

La respuesta es: ¡Y por qué no! Sí, por supuesto que se puede. Y esta entrada trata de explicar los pasos para configurarlo de forma manual.

Mapped-drive-on-Azure

¿Qué necesito?

Para poder conectar tu equipo a una unidad VHD en Azure, necesitarás lo siguiente:

  • Una suscripción activa a Azure sobre la que vas a desplegar tanto los servicios de computación (servidor de ficheros) como el almacenamiento. Puedes crearte una en http://www.windowsazure.com.
  • Un servidor worker role que monte la unidad VHD y la comparta, habilitando el tráfico SMB (puerto 445). La forma más sencilla es montar el paquete DNN Azure Single and ExtraSmall del DNN Azure Accelerator. Si quieres construirte tu propio servicio te recomiendo le eches un vistazo a este post de Dinesh Haridas.

Pasos a seguir

1) Habilitar en la suscripción el servicio Windows Azure Connect. Como ahora mismo aún está en CTP, deberás solicitar su activación a través del menú de “programas BETA” en la consola de administración de Windows Azure. La parte buena es que mientras está en CTP, este servicio es gratuito.
WindowsAzureConnectBeta

2) Usar el “Relay” de Connect más cercano a tus servicios. Para ello, pulsa sobre el botón “Relay Region” e indica la región más cercana. Supuestamente también usarás la misma región para desplegar tu servidor más adelante.

RelayRegion

3) Instalar el cliente de Connect en tu equipo local (o desde donde quieras acceder a tu unidad compartida en la nube). Para ello, accede desde la sección “Red Virtual” de la consola de administración de Azure, y selecciona la suscripción. pulsa sobre el botón “Instalar extremo local”, siguiendo las instrucciones en pantalla.

InstallLocalEndPoint

Una vez instalado, podrás ver en el área de notificación de la barra de tareas de Windows el icono correspondiente al servicio.

AzureConnectClient

ConnectDiagnostics

4) Obtener un token de activación de Azure para el servidor SMB que se desplegará en Azure. Para ello, pulsamos el botón “Obtener Token de Activación” de la misma consola de Windows Azure. Copiamos el “guid” que nos devuelve en el portapapeles porque lo vamos a usar en el paso siguiente.

GetActivationToken

5) Desplegar el servidor SMB en Azure conectado con Windows Azure Connect. Tal y como se comentó anteriormente, una forma rápida es usar el paquete DNN Azure Single and ExtraSmall del DNN Azure Accelerator. Sin embargo, el paquete que está compilado e incluido dentro de la descarga, no tiene habilitado Windows Azure Connect –sí lo estará en la próxima versión del Accelerator. Mientras tanto, puedes descargar la última versión del código fuente y abrirlo en Visual Studio 2010, modificando las propiedades de Red Virtual del paquete antes de volver a generarlo.

IntroducingActivationToken

6) Una vez que hemos desplegado el paquete en Azure (hay un excelente video al respecto, por lo que me voy a saltar esa parte), volvemos a la sección de Red Virtual de la consola de administrador de Windows Azure para habilitar la interconexión entre nuestro equipo y el rol desplegado, creando un nuevo grupo. En la imagen siguiente se muestra un ejemplo donde conecto con dos servidores SMB distintos ubicados en dos servicios distintos (realmente 2 instancias de DotNetNuke en Azure):

Management Network

7) Con esto, ya deberíamos ver el equipo remoto en la nube ejecutando un simple ping. Para ello, copiamos la dirección IPv6 del equipo remoto de la misma consola de administración, y en una consola de comandos de DOS escribimos ping <direccionIPv6>.

Ipv6

PingResponse

No os asustéis por el ping de la imagen. En el momento de la captura estaba conectado a través de una red 3G y me estaba dando más del doble de tiempo de conexión.

NOTA: en caso de que no haya respuesta de ping, puede ser que nuestro equipo local no tenga habilitada la regla en el firewall. Para ello ejecutamos el comando siguiente:

netsh advfirewall firewall add rule name="ICMPv6" dir=in action=allow enable=yes protocol=icmpv6

Para resolver más problemas de conectividad, puedes consultar el enlace siguiente: http://msdn.microsoft.com/en-us/library/gg433016.aspx

8) Mapear la unidad de red a nuestro equipo local. Para ello, abrimos en el explorador de Windows la ventana de “Conectar nueva unidad de red...”, introduciendo la ruta: \\<IPv6>.ipv6-literal.net\<carpeta>, donde <IPv6> es la dirección remota a la que hemos hecho ping en el paso anterior sustituyendo el carácter “:” por “-“ (es la nomenclatura para el comando “net use”), y <carpeta> es el nombre del recurso compartido. Las credenciales usadas son las mismas que usamos al desplegar el servicio en Azure (ver fichero de configuración del servicio desplegado).

MappingTheDrive

Credentials

Opcional: yo he usado el archivo c:\windows\system32\drivers\etc\host, añadiendo un alias para la IPv6 con un nombre más común. Así sé qué unidad es de cada servidor sin tener que recordar la IPv6. También hay que tener en cuenta que esta IPv6 puede cambiar al reiniciarse el servidor por cualquier motivo, por lo que éste último paso 8 habría que repetirlo de nuevo. Una opción podría ser crear una aplicación cliente que detectara estos cambios y que hiciera un “remap” de las unidades automáticamente.

DriveMapped

Conclusiones

El resultado es el poder modificar el contenido del VHD directamente desde nuestro equipo. Las posibilidades se me amontonan en la cabeza. Siempre hay que tener en cuenta que trabajaremos con nuestro ancho de banda a Internet –que por cierto, va impresionantemente bien con una conexión lenta-, por lo que para operaciones “grandes” de copia/pega de archivos sobre la misma unidad, compresión masiva de carpetas, etc. es recomendable conectarse al servidor SMB vía escritorio remoto. 

Respecto al DNN Azure Accelerator, comenzaré a trabajar para poner un paso en el asistente para no tener que volver a recompilar el paquete en Visual Studio, tal y como hice con el paso de configuración RDP. En breve estará disponible.

Algunas reflexiones

  • Sabiendo que la facturación del espacio consumido por los VHD (Page Blobs) es por “espacio ocupado” (las páginas vacías del VHD no se cobran), ¿te has parado a pensar que podrías tener unidades virtuales en Azure Storage de 1Tb (1.000Gb) cada una en la que Microsoft sólo te cobraría por el espacio utilizado? Si borras ficheros del disco (y lo mantienes desfragmentado), te baja la factura Sonrisa
  • ¿Qué tal funcionarán los sistemas de backups tradicionales con una unidad de red montada de este modo? Está claro que aquí el cuello de botella lo impone el ancho de banda de tu conexión a Internet, pero normalmente los programas de copias de seguridad realizan modificaciones incrementales ==> Esto tengo que probarlo Lengua fuera
  • Tal y como comentó Joe Brinkman, actualizar tu web de DotNetNuke se convierte en cosa de niños simplemente copiando y pegando archivos a través del mismo explorador de Windows:
    jbrinkman
  • ¿Qué tal funcionaría una instancia ExtraSmall si sólo es para servir ficheros a través de la red?

Ya sólo faltaría algún método de alta disponibilidad para el servidor SMB...pero eso también está a punto de llegar...

Espero que sea de utilidad. Para mí lo es...¡y mucho!

domingo, 2 de octubre de 2011

Modificar las credenciales RDP en los roles de Azure sin Visual Studio

remotedesktopUno de los principales problemas que se ha encontrado la gente al gestionar una aplicación en Azure es el no poder habilitar de una forma sencilla la conexión a escritorio remoto. ¿A qué me refiero con sencilla? Pues a no tener que descargar Visual Studio 2010 sólo para generar el paquete con las credenciales de acceso y generar el certificado X509 con el que se encriptan las mismas.

Y es que aunque Visual Studio nos automatiza mucho esta tarea, hay perfiles “no desarrolladores” (por ejemplo, nuestros compis de IT) que no suelen tener instalado Visual Studio en sus equipos, aunque posiblemente sí se tengan que encargar del depliegue y gestión de roles en Azure (¿ha llegado ese momento?).

Para ello usaremos:

  • Utilidad makecert.exe, para generar los certificados
  • Consola de comandos de PowerShell

NOTA: el paquete “cspkg” a desplegar en Azure estará “compilado” como que tiene RDP habilitado (es decir, que el fichero de definición del servicio tiene importado los espacios de nombres de RemoteAccess, etc.). Aquí lo que se trata es de poder usar otras credenciales que las que se crearon en tiempo de compilación, así como otro certificado.

Generando manualmente el certificado X509

1) Crear un certificado a través de línea de comandos con la utilidad “makecert.exe”, haciendo exportable la clave:

makecert.exe -r -pe -a sha1 -ss My -len 2048 -sky exchange -n "CN=Azure Deployment" mycertificate.cer

Habilitar RDP en Azure

Es importante indicar el parámetro “-sky exchange” ya que si no nos encontraremos con el error “The remote desktop certificate with thumbprint ‘xxx’ does not have a type of key exchange and cannot be used for decryption” al intentar usar este certificado en Azure.

2) Exportar el certificado en formato “PFX” para subirlo y asociarlo al servicio en Azure. Para ello:

  1. Abrimos el gestor de certificados desde una consolad e comandos tecleando “certmgr.msc”
  2. Localizamos el certificado que acabamos de generar y pulsamos el botón “Exportar” para abrir el asistente de exportación
    Exportar Certificado a PFX
  3. Seguimos las instrucciones del asistente, exportando la clave privada así como todas las propiedades extendidas del certificado
    Export PFX Assistant
  4. Finalmente introducimos una contraseña que usaremos en el momento de importarlo en Azure y un nombre de fichero “.pfx”

3) Importar el certificado en Windows Azure a través de la consola de administración de Azure. Importamos el certificado pulsando botón derecho sobre el servicio y agregando el fichero y su contraseña que hemos generado:
Add Certificate to the service
Upload certificate to Azure

Generar la contraseña encriptada

El siguiente paso, es generar la contraseña que deseemos para nuestras credenciales RDP. Una de las formas más sencillas, para los amantes de PowerShell, es a través de la consola usando los pasos siguientes:

1) Abrir una consola de comandos PowerShell, a través de Inicio>Accesorios>Windows PowerShell (ejecutar como “Administrador” pulsando el botón derecho sobre el icono)

2) Ejecutar los comandos siguientes pulsando Enter después de cada línea:

[Reflection.Assembly]::LoadWithPartialName("System.Security")
$pass = [Text.Encoding]::UTF8.GetBytes("<Password>")
$content = new-object Security.Cryptography.Pkcs.ContentInfo –argumentList (,$pass)
$env = new-object Security.Cryptography.Pkcs.EnvelopedCms $content
$env.Encrypt((new-object System.Security.Cryptography.Pkcs.CmsRecipient(gi cert:\CurrentUser\My\<Thumbprint>)))
[Convert]::ToBase64String($env.Encode())

Recuerda cambiar el valor "<Password>” por la contraseña que desees. También debes modificar el valor “<Thumbprint>” por la huella del certificado que generaste en la sección anterior. La forma más sencilla de encontrar este valor es en el panel de control de Windows Azure, seleccionando el certificado y viendo las propiedades en la barra lateral derecha:

Certificate Thumbprint

3) Copia esa información en el Notepad, eliminando los caracteres de nueva línea.

Introduciendo los valores en el fichero de configuración del servicio

Finalmente, con los valores anteriores, abrimos el fichero de configuración del servicio (.cscfg) y modificamos los valores solicitados:

Service configuration file

Indicar que la fecha de expiración de la cuenta debe estar en formato ISO 8601 “yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK”.

Conclusión

Como hemos visto, hemos realizado todo el proceso sin tener que tocar Visual Studio. Del mismo modo, todo este proceso puede automatizarse programáticamente a través de .NET, creando una simple utilidad para facilitar las labores a nuestros compañeros.

Un ejemplo de esta implementación, es el nuevo paso en el asistente del DNN Azure Accelerator en el que se simplifica la generación del certificado, se solicitan estas credenciales y se encriptan en un sólo paso (idéntico al que está en Visual Studio 2010!!).

Os dejo con dos capturas de pantalla como avance. Lo subiré a CodePlex en breve:

RDP Settings on the DNN Azure Accelerator

RDP enabled packages

Espero que sirva de ayuda.

Un saludo a todos.

Related Posts Plugin for WordPress, Blogger...