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.

Cómo desplegar Hyper-V en Windows Nano Server

Uno de los roles que soporta Windows Nano Server en la Technical Preview 2 es el de virtualización con Hyper-V. Esto nos permite utilizarlo como host de nuestras máquinas virtuales y si incluímos el paquete de clusterización, construir un cluster de Hyper-V. La intención de este artículo es mostrar cómo preparar un pequeño entorno de pruebas donde desplegar Nano Server con esta funcionalidad.

Un detalle importante, todas las tareas de gestión es necesario realizarlas de forma remota y el equipo que las gestione debe de estar ejecutando la misma versión de Windows Server que la que tenemos en Nano Server. Por ello, será necesario un paso previo de aprovisionar una máquina virtual con Windows Server 2016 Technical Preview. Si no lo realizamos, las versiones anteriores de Hyper-V Manager o los comandos de PowerShell no nos funcionarán.

Continue reading Cómo desplegar Hyper-V en Windows Nano Server

Automatizando la creación de la imagen de Windows Nano Server con PowerShell

En el artículo anterior comentábamos cómo crear nuestra imagen de Nano Server con la segunda Technical Preview de Windows Server 2016 de forma manual. Si preferís hacerlo de forma automática os puede interesar este script de PowerShell que simplifica el procedimiento

Cómo crear una imagen de Windows Nano Server para pruebas

Las últimas dos semanas han sido muy movidas para todos aquellos que seáis seguidores de las tecnologías de Microsoft. Tras //Build 2015, el evento enfocado a desarrolladores, y Microsoft Ingnite, el evento enfocado a profesionales de infraestructura, nos hemos quedado con una gran colección de novedades que vamos a tardar varios meses en digerir completamente.

Una de ella fue Nano Server: A Cloud Optimized Windows Server for Developers. No es un nuevo sistema operativo, es una versión de Windows Server optimizada para la siguiente generación de aplicaciones. No dispone de interfaz gráfica o de capacides de gestión local, tampoco de los servicios de terminal. Ocupa menos recursos en disco que la versión completa o Core de Windows Server, su proceso de despliegue se agiliza y su gestión se simplifica debido a una reducción al mínimo de los parches y reinicios necesarios.

A diferencia del gran número de roles que Windows Server puede ejecutar a día de hoy, Nano Server está enfocado a tres escenarios concretos únicamente en esta primera versión:

  • Como host de Hyper-V para alojar máquinas virtuales dentro de un clúster o no
  • Como servidor de ficheros con el rol de Scale-Out File Server dentro de un clúster o no
  • Como sistema operativo desplegado en contenedores o máquinas virtuales para la nueva generación de aplicaciones desarrolladas directamente con la nube en la mente

Tras la keynote de Ignite se puso para descargar Windows Server 2016 Technical Preview 2 que incluía ya Nano Server. A la hora de desplegarlo el procedimiento cambia de forma considerable respecto a lo que estábamos acostumbrados hasta la fecha. Vamos a ver cómo preparar una imagen de Nano Server paso por paso.

Continue reading Cómo crear una imagen de Windows Nano Server para pruebas

Instalando el cliente de Docker 1.6 en Windows con OneGet

En noviembre del año pasado se anunciaba el primer pull request del cliente de Docker para Windows. Para probar su funcionamiento había que realizar una compilación directa del código fuente disponible en el repositorio de Github. Sin embargo, en el anuncio realizado esta semana de la disponibilidad de la versión 1.6 de Docker venía una sorpresa: el cliente para Windows.

Para la instalación vamos a tener dos alternativas, realizarlo directamente desde el ejecutable disponible que nos permitirá tener una instalación similar a la que los usuarios de Mac venían disfrutando: Docker 1.6 + Boot2Docker + VirtualBox + msysGit. La propia página de documentación de Docker incluye una guía detallada de cómo hacerlo. O la segunda, la que vamos a ver hoy, instalar únicamente el cliente de Docker a través del paquete de Chocolatey disponible.

Continue reading Instalando el cliente de Docker 1.6 en Windows con OneGet

Una vuelta de tuerca a los contenedores de la mano de Microsoft

Las tecnologías de contenerización suponen una gran disrupción en la forma que estamos acostumbrados a trabajar tanto en el mundo del desarrollo como de la infraestructura.

Los grandes actores del panorama tecnológico están tomando posiciones; lo hemos podido ver la semana pasada con Google Ventures invirtiendo doce millones de dólares en CoreOS, una distribución minimalista de Linux enfocada a la ejecución de aplicaciones contenerizadas en los grandes datacenters. También con Microsoft y su acuerdo de colaboración con Docker, uno de los principales jugadores en el mundo actual de contenedores con más de 100 millones de contenedores de Docker descargados y más de 70.000 aplicaciones dockerizadas. Tenemos también a Red Hat colaborando activamente con Project Atomic para crear un standar de contenerización en el mundo open source o VMware facilitando la integración de sus herramientas y plataforma con estas nuevas tecnologías.

Sin embargo, de todos ellos, creo que Microsoft es el que se puede encontrar en una posición más ventajosa a día de hoy. Comparado con los anteriores, es el único que tiene su propio sistema operativo de servidor, Windows Server;  su propia plataforma de virtualización, Hyper-V; y su propia solución de cloud computing, Microsoft Azure.

Este ecosistema permite por ejemplo que todo lo que aprende desplegando y gestionando un servicio de cloud con cientos de miles de servidores pueda reinvertilo en mejorar y construir productos adecuados a las necesidades de sus usuarios. Mientras tanto, el resto de jugadores tienen que buscar en terceros esas “patas” de conocimiento que les faltan.

Gracias a lo anterior, es aquí donde pienso que una vez más Microsoft ha dado una vuelta de tuerca a una tecnología, en este caso: los contenedores.

Continue reading Una vuelta de tuerca a los contenedores de la mano de Microsoft

Desplegando nuestros hosts de Docker a Azure con Machine

A la hora de desplegar nuestro host o motor de Docker en Azure, ya estuve hablando sobre cómo se podía hacer utilizando la extensión disponible para máquinas virtuales o desde cero dentro de nuestra propia máquina virtual.

Sin embargo, estos mecanismos no proporcionan una solución rápida o fácilmente automatizable en entornos que así lo requieran. Por ello, desde Docker no están haciendo evolucionar la plataforma únicamente en el área de su motor y cliente, sino que también hay una serie de proyectos satélites que buscan completarla proporcionando las herramientas de orquestación y automatización necesarias.

A finales de febrero, liberaron la primera versión beta de tres de ellas: Swarm, Compose y Machine.

  • Machine: el objetivo de esta herramienta es facilitar el despliegue del motor de Docker a través de un solo comando en tu ordenador, en tu propio datacenter o en un proveedor de cloud como Azure.
  • Compose: facilita el despliegue de aplicaciones distribuidas construidas sobre una solución basada en múltiples contenedores.
  • Swarm: es la solución de clusterización para contenedores de Docker. Permite unificar diferentes motores de Docker como un único host virtual y desplegar en él tus soluciones. Lo mejor es que se puede gestionar desde otras herramientas de forma transparente como el propio cliente de Docker, Compose, Jenkins, etc.

El artículo de hoy está enfocado a mostrar cómo hacer uso de Machine para desplegar nuestras hosts en Azure.
Continue reading Desplegando nuestros hosts de Docker a Azure con Machine

MeetUp – Docker para Linux en Azure, los mejores aliados para el mundo DevOps

La pasada semana tuve el placer de participar en el Meetup sobre Docker de la Comunidad Mad OpenTech hablando sobre cómo es posible integrar Docker en la plataforma cloud de Azure y la estrategia de Microsoft enfocada al despliegue y gestión de aplicaciones basadas en contendedores.

Junto conmigo, también estuvo Roberto Majadas, CTO de OpenShine, haciendo una completa introducción sobre en qué consiste la contenerización de aplicaciones y cómo emepezar a trabajar con Docker en su charla sobre “Docker, la revolución de los contenedores”
Ya están disponibles en la propia página del Meetup los materiales que ambos utilizamos en nuestras sesiones. A continuación podéis ver un resumen de qué es lo que hablamos.

– Roberto Majadas (OpenShine) presenta “Docker, la revolución de los contenedores” – MAD OpenTech

– José Ángel Fernández (Microsoft) presenta “Integración de tareas de gestión y despliegue de Docker en Azure ”

Actualización del script para mantener tu módulo de PowerShell de Azure al día

Configurando un nuevo equipo me he dado cuenta de que el script que publiqué para mantener las herramientas de PowerShell para Azure al día tenía un fallo, si no tenías ya el módulo instalado no funcionaba. Así que nada, unos pequeños cambios y ahora también es posible instalarlas por primera vez con él. Para que sea más fácil está publicado en GitHub el código.