Desplegando FreeBSD en Azure

Conseguir una imagen de FreeBSD

Para este artículo nos vamos a centrar en la preparación de una imagen x86_64 de FreeBSD 10 para Microsoft Azure. Para empezar, primero tenemos que instalar FreeBSD de forma local en Hyper-V (En Windows Server 2012 R2 si fuera posible). Para hacer nuestra vida más fácil, la comunidad FreeBSD ha proporcionado imágenes pre-creadas del sistema FreeBSD en formato VHD. 1. Ver el enlace de exploraciónftp://ftp.freebsd.org/pub/FreeBSD/snapshots/VM-IMAGES/10.0-RELEASE/amd64/Latest/ Luego descarga la última. Un archivo vhd.xz, por ejemplo: ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/VM-IMAGES/10.0-RELEASE/amd64/Latest/FreeBSD-10.0-RELEASE-amd64-20140116-r260789.vhd.xz 2. Ahora, descomprime el archivo xz. Para extraer el archivo vhd FreeBSD-10.0-RELEASE-amd64-*. Hay muchas herramientas que pueden ayudarte con eso. Yo suelo usar 7-zip . 3. Crea una nueva máquina virtual en Hyper-V, y adjunta el archivo VHD extraído como un disco IDE: 

Cambiar el tamaño del FreeBSD VHD (Si es necesario)

Si haz optado por instalar FreeBSD tú mismo en Hyper-V VM a través de la imagen ISO de instalación entonces puedes saltarte esta parte. Sin embargo, si se utiliza el disco duro virtual pre-generado a partir de ftp.freebsd.org entonces es posible que tengas que cambiar el tamaño del disco duro virtual para que sea compatible con Azure. Cuando se crea un disco duro virtual en Azure el tamaño del disco duro virtual debe ser un número entero en megabytes (MB), de lo contrario, te va arrojar un error similar al siguiente cuando intentes crear su nueva imagen FreeBSD en Azure:

“The VHD http://.blob.core.windows.net/vhds/FreeBSD-10.0-RELEASE-amd64-20140116-r260789.vhd has an unsupported virtual size of 21475270656 bytes. The size must be a whole number (in MBs).”

En la imagen FreeBSD que descargamos, 21475270656 bytes es en realidad 20480.4140625 MB. Entonces, para solucionar esto, simplemente cambiamos el tamaño del disco duro virtual para asegurarnos de que no exceda los 21.000 MB. Si tú eres de los que les gustan las consolas puedes hacer esto fácilmente usando Powershell o la consola de administración de Hyper-V. En el servidor de Hyper-V, abres el símbolo del sistema PowerShell y ejecutas el comando el Resize-VHD para ajustar el tamaño del disco duro virtual (VHD):  O, si eres de los que no se quiere complicar la vida con tantas sentencias raras, también puedes cambiar el tamaño del disco de la consola de administración de Hyper-V. En el menú de ajustes de tu máquina virtual, en este caso FreeBSD, haz clic en la unidad IDE virtuales y luego en "Editar" para abrir el asistente de edición VHD: Luego, inicia el sistema FreeBSD e inicia sesión como root. No hay contraseña de root por defecto en los discos duros generados previamente por la comunidad, por lo que no te pedirá una contraseña. Después de iniciar sesión, ejecuta gpart y mira las particiones de disco. Puedes ver que el disco, da0, se marca como CORRUPTO es porque cambiamos el tamaño del disco duro virtual:  

No te preocupes, para solucionar eso, solo ejecuta el siguiente comando para arreglar el disco da0: 

Opcionalmente, puedes tratar de redimensionar la partición root de FreeBSD para recuperar ese espacio libre, esto si tú quieres no?. Esto trae un poco más de problemas, sin embargo, tal vez puedes necesitar arrancar desde un Live CD de FreeBSD para redimensionar el sistema de archivos de root. Pero si realmente quieres el espacio libre de nuevo, así es cómo se expande el sistema de archivos de root:

¡Bravo! El disco duro virtual está exquisito, como diría mi amigo Jesús Angulo, ahora estamos listos para preparar nuestro sistema FreeBSD para montarlo Azure.

Preparar el sistema FreeBSD para Azure

Ahora la parte fácil (sí, en serio). Sólo tenemos que instalar algunos componentes adicionales y configurar algunas cosas para que FreeBSD 10 funcione en Azure.

• Habilitar las redes de FreeBSD

Para configurar la interfaz hn0, puedes usar /etc/rc.d/ netif para detener e iniciar las redes: 

• Habilitar la credencial SSH

Para esto debes habilitar un daemon (o demonio como le dicen) SSH en /etc/rc.conf y crear nuevas claves de host:  

Ten en cuenta que si ahora deseas esta credencial SSH dentro otro FreeBSD invitado, tú puedes continuar con esta configuración, solo tienes que crear un nuevo usuario sin privilegios, o establecer una contraseña para el usuario "root" y asignar "PermitRootLogin yes" en /etc/ssh/sshd_config (no recomendado).

• Instalar Python 2.7 y los módulos necesarios:

También puede ser necesario crear un enlace simbólico de los nuevos binarios de python 2.7 con /usr /bin /python. Esto es de la siguiente manera: 

• Instalar sudo

Esto porque normalmente desactivan la cuenta root en Azure y utilizamos sudo desde un usuario sin privilegios para ejecutar comandos con privilegios elevados: 

• Instalar el Azure Linux Agent

La última versión de Azure Linux Agent siempre la puedes encontrar en Github -https://github.com/Azure/WALinuxAgent/releases . La versión 2.0.5 o posterior se recomienda para FreeBSD. Sin embargo, la rama 2.0 suele ser muy estable, según lo que he leído, así que por ahora sólo haremos un pull directamente a esa rama. Esto nos dará el último agente con soporte para FreeBSD:    

El agente Azure ya está instalado y funcionando!

• (Opcional) Desabastecimiento del sistema antes de cargar el disco duro virtual (VHD) en Azure

Esta característica intentará generalizar la imagen. Esta operación eliminará los certificados SSH, desactivará el usuario root y eliminará la contraseña, eliminará entradas de la caché en el DHCP, etc. Esto es una buena práctica, pero si no estás planeando compartir este VHD ampliamente, puedes omitir este paso : 

Nota: Después de ejecutar este comando es posible que aparezca un mensaje de advertencia porque el archivo OVF-env.xml no existe. Este mensaje lo puedes dejar en “visto”, osea, ignorado XD.

• Apagar la máquina virtual de FreeBSD

Todo listo! Wow, eso fue fácil, no?

• Subir el VHD FreeBSD a Azure

Hay algunas formas de subir un VHD a Azure. En este artículo vamos a utilizar las herramientas de Azure PowerShell para subir el VHD a nuestra cuenta de almacenamiento:

• Primero, asegúrate de apagar la máquina virtual de FreeBSD en tu servidor Hyper-V. • A continuación, utiliza el comando Add-AzureVhd para cargar el VHD: 

 

 • Después de la que carga este completa puedes usar ese VHD para crear una imagen , donde se puede proveer cualquier número de máquinas virtuales de FreeBSD en Azure:

  Ten en cuenta que aquí hay que utilizar el tipo de sistema operativo de "Linux". Lamentable, las herramientas de Powershell aún no admiten el parámetro "-SO FreeBSD"

Crear una máquina virtual de FreeBSD en Azure

Finalmente, estamos en las condiciones para crear nuevas máquinas virtuales de FreeBSD en Azure. Puedes utilizar las herramientas de PowerShell o hacerlo desde el portal de la manera típica: • Iniciar sesión en el portal de administración de Azure (https://manage.windowsazure.com/ ) y hacer clic en "NEW-> COMPUTE->VIRTUAL MACHINE->FROM GALLERY” 

• Hacer clic en "Mis imágenes"• En el menú "Seleccione una imagen" seleccione "Mis imágenes" 

• Selecciona tu imagen de FreeBSD y seguir con las instrucciones para configurar una clave de contraseña/nombre de host, SSH, etc Una vez que haya completado este proceso deberías tener una nueva y brillante máquina virtual FreeBSD 10 que se ejecuta en Azure.