Exportando el servidor X a contenedores LXD

Mahjong

Supongamos la siguiente situación:
Estamos en nuestro equipo de desarrollo ejecutando Ubuntu desktop (esta solución la he validado con Ubuntu 16.04 y Ubuntu 18.04), tenemos el servicio de LXD operativo y queremos ejecutar una aplicación gráfica (como por ejemplo un IDE) dentro de un contenedor.

La solución pasa por utilizar el concepto de device passthrough que se muestra en traspaso de dispositivos en lxc para aplicarlo a lxd y traspasar los dispositivos relacionados al servidor X dentro del contenedor.
Continuar leyendo «Exportando el servidor X a contenedores LXD»

Traspaso de dispositivos en lxc

World Map Suitcase

Al igual que acontece con otras opciones de virtualización, en lxc podemos realizar una oeración de device passthrough. Esto es, trasladar un dispositivo a un contenedor de manera uqe sea gestionado en forma transparente por este, en lugar de por el anfitrión.

Como ejemplo de cómo realizar una configuración de este tipo tenemos un contenedor de nombre legacy al que se desea traspasar el dispositivo /dev/ttyS1.
Continuar leyendo «Traspaso de dispositivos en lxc»

LXC, LXD y ZFS

Lincoln Type L

Introducción

Un contenedor es una opción de virtualización que permite ejecutar un conjunto de procesos de forma que se encuentren completamente aislados del resto de procesos que puedan estar ejecutándose en un sistema.

Esto implica que, aunque los procesos del contenedor estén utilizando el sistema operativo del anfitrión, están utilizando un root file system virtual propio del contenedor; con sus propias versiones de librerías, datos y dispositivos, independientes a los existentes en el sistema anfitrión u otros contenedores del sistema.
Continuar leyendo «LXC, LXD y ZFS»

Creando entornos de desarrollo python con virtualenv

Red Corvette

Cualquier desarrollo en Python requerirá con seguridad del uso de un conjunto de módulos y, dado que, generalmente no tendremos control sobre cómo ni cuándo evolucionará cada uno de estos módulos, nuestro desarrollo quedará restringido para operar sólo con versiones específicas de los módulos de los cuales dependa. Si seguimos las normas especificadas para el empaquetado, estas dependencias estarán claramente determinadas en los paquetes generados. Y, si hemos respetado las versiones por defecto existentes en nuestro entorno de producción, estas dependencias no deberían suponer mayores inconvenientes a la hora de instalar o actualizar nuestros desarrollos.
Continuar leyendo «Creando entornos de desarrollo python con virtualenv»

Encender huéspedes virtualbox desde anfitriones sin capacidades gráficas

Chateau Dauzac

Si al iniciar una máquina virtual desde consola con el comando VBoxManage startvm machine name aparece el mensaje de error siguiente:

Waiting for VM "machine_name" to power on...
VBoxManage: error: The virtual machine 'machine_name' has terminated unexpectedly during startup with exit code 1 (0x1)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component Machine, interface IMachine

Esto se debe a que, al no disponer el anfitrión de capacidades gráficas, es imposible para VirtualBox asignar recursos para mostrar la consola de la máquina huésped.
Continuar leyendo «Encender huéspedes virtualbox desde anfitriones sin capacidades gráficas»