Desplegando Oracle Linux 5.x en Azure

A la hora de trabajar con cualquier plataforma es muy importante revisar las tecnologías y las versiones soportadas para poder estar cubiertos por los acuerdos de nivel de servicio y el soporte. Sin embargo, en algunas ocasiones es posible que necesitemos instalar una versión no soportada para realizar alguna prueba que en local no podemos realizar. En el caso de Azure, podéis encontrar el listado de distribuciones Linux y sus versiones soportadas directamente en la documentación.

En este caso en particular, el interés estaba en desplegar una versión antigua de Oracle Linux de la rama 5.x la cual se encuentra totalmente fuera de soporte. Dado que era para un escenario de desarrollo y pruebas como comentaba anteriormente, era aceptable asumir ese riesgo para ver si era posible hacer lo que buscábamos con Azure o no.

Si os encontráis en una situación similar, a continuación tenéis los pasos para configurar vuestra máquina Oracle Linux y poder arrancar máquinas virtuales en Azure.

Continue reading Desplegando Oracle Linux 5.x en Azure

Docker for Windows, una vista rápida del panorama actual

El pásado día 5 de mayo tuvo lugar en nuestras oficinas una nueva edición del Meetup de Docker Madrid. Gracias al equipo de DX de Microsoft España ya tenemos las sesiones disponibles en Channel 9.

En primer lugar, contamos con la participación de Ignacio Sánchez y Ramón Román de atSistemas donde me quedo sin duda con su clúster de Raspberry Pi integrado con los nuevos pipelines de Jenkins 2.0. Media hora de sesión donde ver cómo emplear Docker Swarm para la gestión de clústeres basados en Docker y la instanciación de aplicaciones basadas en microservicios. Muy útil las nuevas capacidades incorporadas en Swarm para reinstanciar los contenedores en otro nodo si el host se cae.

Tras ellos, por mi parte hice una breve introducción a cómo se encuentra el ecosistema de Docker en entornos basados en Windows. Desde los avances en Docker for Windows con Kitematic para permitirte trabajar con Docker directamente en Windows 10 con Hyper-V de forma sencilla, hasta los cambios que están llegando en la parte de Windows Server con la implementación a nivel del núcleo del soporte a contenedores.

Tenéis disponible el vídeo y la presentación

The Lord of the Keys, tus secretos a salvo con Azure Key Vault

El pásado día 16 de abril tuvo lugar en Madrid la cuarta edición del Global Azure Bootcamp. Se celebró por primera vez en 2014 con cerca de 140 asistentes, en 2015 subimos de los 200 y este año contamos con 390 personas en las oficinas de Microsoft Ibérica con tres tracks en paralelo.

En esta edición, repetí junto con Iria como speakers dejando a un lado los contenedores y las herramientas de gestión de la configuración y hablando sobre uno de los nuevos servicios de Azure: Key Vault.

Si no pudisteis asistir, aquí tenéis la descripción de la sesión junto con los materiales y el vídeo para este fin de semana:

Una de las principales preocupaciones al usar cualquier servicio que se encuentre fuera de nuestro paraguas de control es la seguridad, ¿qué sucede con la información que estoy alojando allí?. Pero no solo eso, también información más sensible como contraseñas, claves criptográficas u otros secretos que nuestras aplicaciones necesitan para funcionar correctamente. Azure Key Vault proporciona una solución rápida para gestionar estar información sensible de forma segura gracias al soprote de hardware security modules.

  • Presentación y scripts en GitHub
  • Vídeo en Channel 9

Creando una distribución de Linux desde cero como imagen base de Docker

A principios del pasado mes de diciembre tuve una sesión en Tajamar hablando sobre contenedores, Docker y la plataforma de Microsoft. Tuvimos una muy buena conversación sobre el tema y una de las preguntas que hizo @alber86 me dio que pensar. Su duda iba enfocada a cómo un contenedor de Docker puede ejecutar un “sistema operativo” en él, cómo se construye y cuáles son las diferencias respecto a la ejecución del mismo dentro de una máquina virtual.

A partir de ahí el reto estaba claro, entender cómo se puede generar una distribución de Linux desde cero y una vez construida, comprender cómo ejecutar mis propios contenedores de Docker basados en esa distribución como imagen base. El artículo es un breve resumen del proceso por si estás interesado en replicarlo.

Continue reading Creando una distribución de Linux desde cero como imagen base de Docker

Gestión de recursos en Azure Resource Manager con políticas personalizadas

Una de las gran ventajas de Azure Resource Manager (ARM) frente al modelo de Azure Service Manager (ASM) es la capacidad de permitir una gestión mucho más detallada de los permisos de acceso a nuestros recursos por diferentes usuarios gracias al modelo Role Based Access Control (RBAC). RBAC se centra únicamente en las acciones que un usuario puede realizar dentro de una suscripción; es decir: acceder a un grupo de recursos concreto, poder gestionar únicamente máquinas virtuales, visualizar en modo lectura la información visible en el portal, etc. Sin embargo, hay ciertos escenarios que no es posible cubrir con RBAC en exclusiva.

¿Qué podemos hacer si queremos restringir en qué regiones se pueden desplegar recursos por temas legales? ¿O qué servicios son los que se puede usar o no? ¿Qué pasa si queremos seguir una nomenclatura estándar en todos nuestros recursos para facilitar la gestión? Si alguna vez os habéis preguntado algo similar, las políticas personalizadas son vuestra solución.

Continue reading Gestión de recursos en Azure Resource Manager con políticas personalizadas

Azure Load Balancer en Azure Resource Manager

Uno de los elementos claves a la hora de desplegar nuestra solución dentro de máquinas virtuales en Azure es el balanceador de carga. Esto se debe a que para estar cubiertos por el acuerdo de nivel de servicio es necesario tener nuestra aplicación ejecutándose en al menos dos máquinas virtuales dentro de un conjunto de disponibilidad. Aunque ahí de forma directa no se menciona al balanceador, es la pieza clave que hace que nuestros clientes sigan recibiendo servicio si una de nuestras máquinas falla es él.

Trabajando con el modelo de Azure Service Manager, ASM o clásico, cada vez que aprovisionábamos una nueva máquina virtual automáticamente se generaba un nuevo balanceador asociado a la misma. En el caso de Azure Resource Manager, ARM o “el nuevo”, es necesario que de forma activa nosotros creemos el balanceador y hagamos las conexiones necesarias con nuestras máquinas virtuales. Esto se debe a que un balanceador es un recurso más que se encuentra bajo el provedor de recursos de Microsoft.Network. Si queréis más detalles sobre las diferencias entre ASM y ARM podéis encontrarlo en la documentación bajo el artículo “Resource Manager Deployment Model”.

¿Cuál es el problema entonces? A día hoy no existe opción en el portal de gestión de Azure para crear un nuevo balanceador de carga. Esto nos obliga a utilizar PowerShell o las nuevas plantillas de despliegues en JSON para realizarlo. Este artículo entrará en más detalle en conocer cómo crear nuestro balanceador desde dichas plantillas y las opciones de configuración que nos ofrece este tipo de recurso.

Continue reading Azure Load Balancer en Azure Resource Manager

Configuración de Windows Containers paso a paso sobre Hyper-V

En la última Technical Preview de Windows Server, la TP3, una de las novedades incluídas más esperadas era la primera versión de la implementación de contenedores por parte de Microsoft en el sistema operativo. Si queréis conocer más detalles de todo lo relacionado con ello os recomiendo que consultéis la documentación que han hecho pública en MSDN.

Para facilitarnos todo el proceso de evaluación han creado una serie de scripts de PowerShell que automatizan todo el proceso. Desde cómo crear una máquina virtual en nuestro host para evaluarlo, cómo instalar un host en una máquina virtual existente o cómo actualizar uno configurado previamente. Todos los scripts están disponibles en el repositorio de GitHub de Microsoft, otra muestra más de cómo las cosas están cambiando dentro de la compañía.

Dado que me gusta conocer en detalle cómo funcionan las cosas, me he puesto a analizar los scripts para entender mejor los requisitos y la configuración necesaria. En este artículo revisaré el script New-ContainerHost.ps1
Continue reading Configuración de Windows Containers paso a paso sobre Hyper-V

Cómo preparar una máquina virtual para trabajar con Docker en Azure

Las máquinas virtuales a la hora de probar cosas nuevas son muy prácticas, más si están desplegadas directamente en la nube. Gracias a ello tu equipo se mantiene limpio y no se ocupa espacio ni recursos. Preparando una sesión de introducción a los contenedores y en especial a Docker he estado preparando el entorno para hacer todas las demos en Azure. La idea es tener todas las herramientas relacionadas con Docker y su integración con Azure en un mismo lugar permitiendo de esta manera facilitar el trabajo.

La idea es instalar la versión experimental de Docker y así disfrutar de las últimas novedades de la DockerCon. Junto con ello, disponer de Machine, Compose, Swarm y también de las herramientas de línea de comandos de Azure para linux. Un pack básico para sacar todo el provecho de Docker en Azure. ¡Empecemos!

Continue reading Cómo preparar una máquina virtual para trabajar con Docker en Azure

Cómo utilizar el servicio de Azure DNS para nuestros dominios

A la hora de trabajar con Azure como plataforma de cloud una de las cosas que seguro que necesitaremos gestionar son nuestros propios dominios. En el evento Microsoft Ignite del pasado mes de mayo se presentó en vista previa el nuevo servicio de Azure DNS que permite alojar nuestros dominios directamente en Azure. Es importante destacar que Azure no hace de agente registrador de los dominios, únicamente los aloja dentro de la red mundial de servidores de Microsoft .

El servicio está construido sobre Azure Resource Manager y a día de hoy no cuenta todavía con soporte directo a través del portal de gestión de Azure. Por lo tanto, tendremos que trabajar directamente a través de las APIs REST o con la línea de comandos de PowerShell. Como buen IT Pro tiraremos por la línea de comandos por lo que si no la tienes configurada es ahora el momento de hacerlo.

Continue reading Cómo utilizar el servicio de Azure DNS para nuestros dominios

Cómo documentar nuestros scripts de PowerShell

A la hora de documentar nuestros scripts o nuestras funciones de PowerShell es necesario que conozcamos la estructura esperada para que el comando Get-Help o el propio Host pueda extraer la información.

La estructura es bastante sencilla, se basa en una palabra clave de ayuda, SYNOPSIS, DESCRIPTION o EXAMPLE, precedida de un punto. Tras ello, un comentario asociado a dicha palabra clave que empezará en la siguiente línea. Dicha estructura debe de ir dentro de un comentario de bloque o precedida por el símbolo # en cada línea. A continuación se muestra cómo sería en ambos casos

# .[palabra clave de ayuda]
# [contenido de la ayuda relacionado con la palabra clave]
 
<#
 .[palabra clave de ayuda]
 [contenido de la ayuda relacionado con la palabra clave]
#>

El bloque de documentación puede aparecer al principio del cuerpo de la función, al final de la función o anteriormente a la palabra clave reservada function. En el caso de los scripts, ésta puede situarse al principio del fichero precedida únicamente por otros comentarios o líneas en blanco o al final del mismo salvo si es un script firmado. Un detalle importante, si el primer miembro del script es una función será necesario dejar dos líneas en blanco para evitar que sea interpretada como la documentación de la función.

Documentación autogenerada por PowerShell

Por defecto, existe un conjunto de datos que por defecto PowerShell muestra y genera de forma automática cuando llamamos al comando Get-Help. Lo más importantes son los siguientes:

  • Name : Obtenido a partir del nombre del fichero de nuestro script o del nombre de la función.
  • Syntax : Extraído de la firma de nuestro script o función.
  • Parameter List : En esta ocasión, si incluímos detalles sobre los parámetros con lo que explicaremos a continuación, la información se extraerá de ahí. Si no, a partir de la firma de nuestro script o función.

Palabras clave que podemos utilizar

Junto con lo anterior, tenemos una colección de otros parámetros que podemos añadir a nuestra documentación para hacerla más completa.

  • SYNOPSIS : una pequea descripción de la función o el script. Esta palabra sólo se puede incluir una vez.
  • DESCRIPTION : Una extensión del parámetro anterior para describir de forma detallada qué realiza la función o el script. Esta palabra sólo se puede incluir una vez.
  • PARAMETER : La descripción de cada uno de los parámetros que nuestra función o script. Es necesario incluir esta palabra clave por cada parámetro que utilicemos. El orden que utilicemos para ponerlos será el orden en el que aparezcan en la ayuda de PowerShell.
  • EXAMPLE : Diferentes ejemmplos para para ayudar al usuario a utilizar nuestra función o script. Podemos añadir tantos ejemplos como deseemos./li>
  • INPUTS : Si vamos a usar este comando en una tubería, con esta palabra clave definiremos el tipo de objeto del .Net Framework que acepta en su entrada.
  • OUTPUTS : Similar al caso anterior pero sobre el tipo de objeto de .Net Framework que devolverá al finalizar su ejecucción.
  • NOTES : Información adicional que queramos añadir sobre nuestro script o función.

No son los únicos pero sí los que probablemente utilicemos más a menudo. Si tenemos curiosidad sobre qué otros parámetros podemos utilizar podemos consultar el artículo de la documentación asociado a este tema. Para ello, desde una consola lanzaremos lo siguiente:

Get-Help about_Comment_Based_Help

O directamente en la referencia de TechNet de forma online.

Un ejemplo de ello lo podéis ver en el script que publiqué para aprovisionar nuestras imágenes de Windows Nano Server.