Error: We don´t have a valid access token. Please run "azure login" again

martes, 15 de diciembre de 2015


Recientemente me he encontrado con el error que titula este post en, el mensaje lo hemos obtenido durante el proceso de autenticación de la herramienta Azure CLI, justo después de ingresar a la URL https://aka.ms/devicelogin. A continuación la pantalla con el error.


Intentamos varias opciones, entre ellas eliminar la caché del navegador, cookies y cualquier otra cosa, sin embargo, el error persistía.

Gracias a la ayuda de Process Monitor pude identificar que había un ejecutable escribiendo información, se trata de creds.exe, al revisar lo que hace este ejecutable evidencié que en efecto es quien se encarga de manejar el tema de las credenciales de Xpat CLI.


Al notar lo anterior, abrí el Administrador de Credenciales y en efecto allí estaban las credenciales que habían sido creadas por creds.exe


Como se puede apreciar, en la parte superior derecha aparece la fecha de modificación, eliminé todas las entradas recientes creadas por creds.exe

Después de hacer lo anterior, intente de nuevo con azure login y en esta ocasión si fue posible establecer la conexión tal como se muestra en la siguiente imagen:



Espero la información sea de utilidad para alguien, ya que a nosotros nos tomó un buen rato llegar a esta solución.

Crear VM a partir de una imagen en Azure

lunes, 7 de diciembre de 2015



Microsoft Azure incluye un grupo de plantillas muy variado el cual podemos aprovechar para crear nuestras máquinas virtuales, la creación de máquinas a partir de plantillas nos ahorra tiempo y nos facilita la vida, el portal de Azure no solamente incorpora plantillas para tecnologías Microsoft, sino plantillas basadas en tecnologías de terceros. En la siguiente imagen podemos apreciar las plantillas existentes para Oracle por ejemplo, pero también encontraremos varias plantillas para el sistema operativo Linux.


Lo anterior es genial, pero qué sucede si queremos tener nuestras propias plantillas? que tal una plantilla con un desarrollo propio incorporado o con alguna configuración de línea base establecida?. Pues de eso precisamente es lo que voy escribir en este artículo, vamos a crear nuestra propia plantilla para ser usada desde el portal de Azure y que aparezca en la galería tal como vimos en la imagen anterior.

Para nuestro ejemplo, haremos algo bien sencillo, simplemente vamos a instalar un servidor web IIS, así que nuestra plantilla será el sistema operativo Windows que tiene el rol de servidor web.

Lo primero es crear una máquina virtual común y corriente a través del portal, en mi caso VM1


Una vez creada, iniciamos sesión en la misma y empezamos a configurar el rol, aplicación o lo que deseemos incluya la plantilla, para este ejemplo solamente el rol de servidor web IIS


Cuando terminemos de configurar la línea base para nuestra plantilla, debemos hacer una preparación del sistema o sysprep que elimina identificadores, y configuraciones que hacen que la máquina sea única esto permite llevar un sistema a hardware diferente, después de hacer el sysprep, el sistema debe arrancar como si fuera la primera vez que prendemos la máquina, a esto se le conoce como OOBE (Out Of Box Experience) lo que en español es como "experiencia fuera de la caja", es decir como cuando recién desempacamos un producto, en esta caso el sistema operativo Windows

Para ejecutar el sysprep, debemos ir a la siguiente ruta:

%windir%\system32\sysprep allí encontramos un ejecutable llamado Sysprep


Al hacer doble clic sobre el ejecutable sysprep, se abrirá un cuadro de diálogo el cual debemos dejar con las misma configuración que se muestra en la siguiente imagen:


Nótese que encierro la opción Generalize la cual no viene marcada por defecto y es la que permite generar un identificador diferente a la máquina, el proceso tardará un par de segundos y luego se apagará de manera automática la máquina, ya que hemos marcado la opción shutdown

Desde el portal de Azure esperamos hasta que la máquina se muestre en estado Detenido


Nota importante: Antes de crear la imagen es importante aclarar que la máquina virtual que usamos para la creación se eliminará, y no podrá usarse más a menos de que creemos una nueva máquina a partir de la imagen personalizada. Debe tener esto muy en cuenta en especial si de pronto la máquina se encuentra en producción.

Estando seleccionada la máquina hacemos clic en la opción Capturar que se encuentra en las herramientas de la parte inferior del portal.


A continuación, debemos poner un nombre a la imagen, una descripción opcional, y por último debemos marcar la casilla de selección indicando que ya hemos realizado el sysprep

 En la imagen anterior podemos ver el mensaje de advertencia donde nos indica que la máquina será eliminada.

Al finalizar, podemos observar que nos encontramos en el menú imágenes donde encontraremos nuestra nueva imagen con estado Disponible

Si regresamos al menú de Instancias veremos que en efecto la máquinas virtual VM1 ha sido eliminada, en este ejemplo solo se encuentra VM2

Y listo, con esto hemos terminado de crear la imagen, ahora vamos a crear una máquina virtual a partir de la imagen recién creada. Para ello vamos común y corriente a crearla a partir de la galería.

La diferencia, es que en lugar de elegir cualquiera de las categorías ya existentes, seleccionaremos Mis imágenes

Y allí encontramos la imagen o imágenes que hayamos creado, para este ejemplo veremos la plantilla IIS-WEB-SERVER



De aquí en adelante, es lo que ya conocemos con respecto a la creación de máquinas virtuales, nombre, tamaño, etc.


Esperamos hasta que termine la creación de la nueva máquina virtual, que para este ejemplo volví a llamar VM1

Al ingresar a la máquina, veremos que efectivamente tiene el rol de servidor web instalado.




Bien amigos, y esto es todo, como siempre espero sea de utilidad esta información, cualquier cosa no duden en comentar.

Error al ejecutar el cmdlet Get-AzureSubscription

lunes, 30 de noviembre de 2015


Es común ingresar a la consola de PowerShell para realizar tareas en Microsoft Azure, y lo primero que generalmente hacemos es conectarnos a la suscripción, luego de ello, si de pronto tenemos más de una suscripción y queremos cambiar la predeterminada, debemos hacer uso del cmdlet Get-AzureSubscription, en un mundo ideal el resultado es la lista de suscripciones, pero si las cosas no salen bien, probablemente nos encontremos con un error como el siguiente:

Get-AzureSubscription: Failed to refresh token. AADSTS90002: No service namespace named 'xxxxxxxx' was found in the data store.


Para solucionarlo, debemos realizar lo que se explica a continuación:

Debemos ingresar a la siguiente ruta:

%userprofile%\AppData\Roaming\Windows Azure Powershell
Ahora, borramos todo el contenido que allí se encuentre, como se puede ver en la siguiente imagen, tenemos dos archivos: AzureProfile.json y TokenCache.dat



Una vez eliminados, abrimos nuevamente Powershell y nos conectamos a la suscripción, normalmente con el cmdlet Add-AzureAccount e intentamos nuevamente obtener la lista de suscripciones con el cmdlet Get-AzureSubscription y listo! de este modo no saldrá el error mencionado y obtendremos nuestra lista de suscripciones.




Bien, esto es todo y espero que en algún momento los saque de apuros.

Eliminar usuarios huérfanos en Azure AD sincronizados desde Active Directory local

viernes, 20 de noviembre de 2015

En esta ocasión vamos a ver cómo hacer para eliminar usuarios que se encuentran huérfanos en un directorio en Azure AD y los cuales fueron sincronizados desde un Active Directory local también conocido como on-premise.

Hay varias razones para que esto ocurra, por ejemplo puede ser que nuestro Active Directory local no esté disponible, que el dominio ya no exista o cualquier otra cosa que impida que volvamos a tener conexión entre nuestro entorno local y Azure. En casos menos comunes puede ocurrir que se elimine el usuario de manera local  y el cambio por alguna extraña razón no sea sincronizado en Azure.

Si lo anterior ocurre, veremos que desde el portal todos los usuarios que tienen como origen Active Directory local no puede ser eliminados, es más ni siquiera aparece la opción, si se intenta desde PowerShell tampoco es posible. Para lograr eliminarlos debemos hacer lo siguiente:

1. Conectarse a la suscripción desde el módulo de Azure Active Directory para PowerShell, si no sabes cómo hacerlo puedes consultar el artículo aquí

2. Una vez conectados a la suscripción desde PowerShell, se debe des habilitar la sincronización de directorios usando el siguiente comando:

Set-MsolDirSyncEnabled –EnableDirSync $false 



3. Debemos verificar que efectivamente la sincronización no esté habilitada utilizando el siguiente comando:

(Get-MSOLCompanyInformation).DirectorySynchronizationEnabled


El resultado debe ser False si aparece True es que aún no termina y debemos seguir ejecutando el comando hasta que el resultado sea False tal como se muestra en la imagen anterior.

4. Después de que la sincronización no se encuentre habilitada, ingresamos al portal y notaremos que todos los usuarios que tenían como origen Active Directory local, ahora tienen como origen Microsoft Azure Active Directory.


Y al tratarse de usuarios con origen en la nube, claramente nos mostrará la opción que permite eliminar.


Y de la misma manera, podemos realizar la operación desde PowerShell haciendo uso del cmdlet Remove-MsolUser


Y por último, para volver a reactivar la sincronización basta con ejecutar lo siguiente:


Set-MsolDirSyncEnabled -EnableDirSync $true

Si al intentar lo anterior te arroja un mensaje como el que se muestra a continuación:

Set-MsolDiorSyncEnabled: You cannot turn off Active Directory synchronization



Es porque la des activación de la sincronización aún está en proceso, Microsoft indica que puede tardar hasta 72 horas dependiendo la cantidad de objetos, esto mismo lo podemos verificar si ingresamos al portal de Office 365 y en la parte de usuarios activos podemos ver un mensaje que claramente lo indica.


E incluso, desde el portal de Azure podemos ver que la opción para habilitar la sincronización de directorio aparece inactiva.


Esto es todo, espero esta información les sea de utilidad. Hasta la próxima

Gran evento: 10 años comunidad ITPros-DC

martes, 17 de noviembre de 2015


Este sábado 21 de Noviembre, se celebrará el cumpleaños número 10 de la comunidad ITPros-DC, comunidad que conozco desde que nació (año 2005) y de la cual hago parte desde hace 5 años, debo mucho a este comunidad, gracias a que allí crecí como profesional y conocí muchas personas en el camino que me motivaron a compartir el conocimiento, la celebración se hará precisamente como nos gusta, compartiendo el conocimiento, tendremos 3 tracks de sesiones, que van desde las 8 am hasta las 6 pm. Al final tendremos un cierre espectacular que incluye la rifa de una consola Xbox One.

Por supuesto, tendré mi charla donde les hablaré sobre Microsoft Azure

El registro se debe hacer desde la siguiente URL: https://aka.ms/itprosdc

A continuación les dejo la agenda del evento:

Clic para ampliar

MVP Summit 2015


Del 2 al 5 de Noviembre se llevó a cabo el MVP Summit 2015, un evento que reúne a todos los MVPs del mundo y se realizan sesiones técnicas sobre tecnologías Microsoft, las sesiones son directamente impartidas  por ingenieros de Microsoft pertenecientes a los propios grupos de producto en el campus ubicado en Redmond Washington, fue una experiencia sin igual y espero poder asistir a los próximos summit que se realicen, es grato compartir con un grupo tan amplio de expertos, a continuación unas fotos de algunos de mis colegas colombianos que asistieron al evento.


Diana Torres - MVP Datacenter Management
César Herrada - MVP Enterprise Mobility
John Barreto - MVP Datacenter Management



José Redondo - MVP Data Platform
César Herrada - MVP Enterprise Mobility

Probar velocidad de conexión y transferencia de archivos hacia Azure


Una de las cosas que sin lugar a dudas siempre requerimos a la hora de trabajar con Microsoft Azure, es conocer la latencia de red hacia los centros de datos, ya que es importante saber cuál nos ofrece la menor latencia con el fin de ubicar nuestros servicios allí, otra pregunta muy frecuente es cuánto puede tardar la transferencia de información (carga) hacia Azure y también la descarga, cuál centro de datos nos ofrece más velocidad, lo anterior es algo que siempre queremos medir antes de cualquier implementación o trabajo en Azure.

Por lo anterior, decidí escribir hoy sobre AzureSpeed, un proyecto que podemos encontrar en GitHub: https://github.com/blrchen/AzureSpeed

Podemos hacer uso del servicio en la siguiente dirección: http://azurespeed.com/

Lo realmente encantador de este proyecto, es la gran cantidad de cosas que podemos probar.

Prueba de latencia, prueba CDN, velocidad en carga y descarga de archivos, velocidad en carga de archivos grandes. Entre otras.

Al ingresar al sitio lo primero que podemos observar es los centros de datos más cercanos debido a su menor latencia, tal como podemos apreciar en la siguiente imagen:


Incluso tenemos un gráfico dinámico


En el menú de la izquierda encontraremos todo el conjunto de pruebas que podemos hacer, algunas las comenté anteriormente.


Hice una prueba de carga al centro de datos del Este de los Estados Unidos (East US) de un archivo de 20.39 MB y miren los resultados:


Genial verdad? sin duda una herramienta que siempre debemos tener a la mano.



Cómo crear una aplicación web en Azure sin tarjeta de crédito

martes, 27 de octubre de 2015


Siempre que nos hablan de Azure, inmediatamente asociamos el tema a una suscripción por la cual debemos pagar haciendo uso de una tarjeta de crédito, pues bien, en este post veremos cómo crear una aplicación web gratuita sin necesidad de usar la tarjeta de crédito, esta opción nos sirve para probar el servicio por un período corto de tiempo, sin necesidad de tener una suscripción en Azure, veamos cómo hacerlo en 5 sencillos pasos.

Paso  1

Ingresar a la URL: https://tryappservice.azure.com/ y seleccionar el tipo de aplicación que se desea ejecutar





Seleccionamos Aplicación web y hacemos clic en Siguiente

Paso 2

Podemos elegir un lenguaje de programación o seleccionar algunas de las plantillas que nos muestra por defecto, también podemos optar por empezar a construir la aplicación desde cero.


Para esta prueba seleccionaré la plantilla PHP Starter Site y luego hacer clic en Crear

Paso 3

Solicitará iniciar sesión con una cuenta de Microsoft, Google o Facebook

Paso 4

Se creará la aplicación la cuál estará disponible durante una hora, nos indicará la URL y varias herramientas para el desarrollador incluyendo edición con Visual Studio Online



Paso 5

Probar la aplicación! basta con ingresar a la URL creada y listo.



Ahora veamos la edición del sitio en PHP directamente sobre Visual Studio Online


Bien, y esto es todo lo que necesitamos para en unos sencillos pasos poder probar una aplicación web en Azure sin necesidad de suscripciones ni tarjeta de crédito, y si te gusta lo que has probado no dudes en adquirir la suscripción!

Hasta la próxima.

Cómo balancear la carga de máquinas virtuales en Azure

domingo, 11 de octubre de 2015


En esta ocasión vamos a utilizar otra de las poderosas características de Azure y es el balanceo de carga nativo que incorpora, lo utilizaremos para balancear un sitio web que se encuentran en dos instancias de máquina virtual en Azure (IaaS).

En esencia lo que tendremos es un sitio web publicado hacia Internet, el cual será atendido por dos máquinas virtuales en Azure, una imagen vale más que mil palabras, a continuación muestro el diagrama de lo que vamos a implementar en este artículo.

Como se puede apreciar en la imagen, Azure incluye un balanceador de carga nativo, el cual podemos usar y no genera costo adicional alguno, todo el tráfico que reciba de los clientes web a través del puerto 80 (http) será distribuido entre las dos máquinas virtuales (VM1 VM2) al puerto 80 de cada una de ellas. Claramente puedo tener las instancias de máquina virtual que quiera, para esta demostración utilizaré dos instancias. Ahora veamos el proceso.

Lo primero es crear las máquinas virtuales a través del portal de Azure, crearé dos máquinas.


Algo muy importante a tener en cuenta, es que las máquinas virtuales que deseemos balancear deben estar en el mismo Cloud Service, para esta demostración las máquinas VM1 y VM2 las he puesto en el mismo servicio en la nube: mvpconf


La siguiente imagen muestra las dos máquinas creadas.


Bien, ahora que han sido creadas, voy a instalar el rol de servidor web (IIS) en cada una de ellas. Entiendo que esto es algo que sabemos hacer y no detallaré el proceso en este artículo,


Una vez listo el rol de servidor web en cada máquina, desde el portal de Azure seleccionamos la primer máquina (VM1) y hacemos clic en Extremos en la parte superior.

Un extremo (Endpoint en inglés) es básicamente lo que conocemos como un puerto, si observamos en la siguiente imagen, ya vienen por defecto dos "extremos" (puertos), para RDP y PowerShell, así que simplemente lo que haremos es agregar el "extremo" (puerto) para el servicio web http, es decir el puerto 80

En las opciones de la parte inferior seleccionamos Agregar



En Agregar Extremo estará seleccionada la opción Agregar un extremo independiente hacemos clic en el símbolo de flecha en la parte inferior.


De la lista desplegable Nombre seleccionamos el protocolo, en este caso HTTP, automáticamente nos traerá el protocolo TCP y el puerto 80, tanto de manera privada como pública (recordemos que tenemos una IP pública mediante la cual publicaremos el servicio y una IP privada para cada máquina virtual), activamos la casilla Crear un conjunto de carga equlibrada y continuamos.


Ponemos un nombre al conjunto de carga equilibrada y dejamos las demás opciones por defecto, estas pueden ser cambiadas según sus propias necesidades.




Al final veremos el extremo con un conjunto de carga asociado.



Ahora nos pasamos a la VM2 y llevamos a cabo las mismas acciones


Agregamos un nuevo extremo


En esta ocasión en lugar de crear un nuevo extremo, seleccionamos Agregar un extremo a un conjunto de carga equilibrada y elegimos de la lista de desplegable el que recién creamos (LB-HTTP)


Elegimos un nombre, debí haber elegido HTTP para guardar uniformidad con el anterior, dejamos el resto de opciones como aparecen



Bien, de este modo ya tenemos listo nuestro balanceador de carga, ahora lo que voy hacer es realizar una modificación en cada sitio web para saber a cuál máquina me estoy conectando, para ello vamos al directorio wwwroot y editamos el archivo de imagen  iis-85


Voy simplemente a poner un cuadro de texto con el nombre de cada máquina virtual, empecemos con VM1



Ahora editemos el mismo archivo en VM2


Guardamos los cambios, y simplemente para probar nos abrimos la URL con la cual publicamos el servicio, a continuación la prueba desde el navegador.


Como podemos apreciar, nos ha respondido VM1, si recargamos la página varias veces (F5), podemos notar que de repente nos pasará a VM2, pero si queremos ser más agresivos podemos detener el servicio web en VM1 para obligar al balanceador a dirigirnos a VM2, para ello abrimos el administrador de tareas y finalizamos el proceso IIS Worker Process



Volvemos al navegador, presionamos F5, y veremos como se cambiará de forma transparente a VM2


Y bien, esto ha sido todo. Espero les sea de utilidad esta información.

 

Temas por fecha

Lo más visto

Comunidad

Comunidad
Comunidad Técnica

Visitas