Escrito por picodotdev el 10/05/2019 .

planeta-codigo programacion software

Enlace permanente Comentarios

VirtualBox es una de las herramientas que permiten virtualizar un sistema operativo completo y sus aplicaciones dentro de otra máquina. Como es un sistema operativo completo requiere que el sistema que la alberga tenga RAM suficiente para sí mismo y RAM suficiente para el sistema virtualizado, se puede configurar la cantidad de RAM y almacenamiento persistente de la máquina virtual. En el proceso de virtualización se pierde algo de rendimiento por la sobrecarga que añade virtualizar un sistema operativo completo, los procesadores modernos ofrecen soporte para que el rendimiento sea lo mayor posible pero no es igual a ejecutar el sistema de forma nativa en el sistema, sobre todo en el aspecto de interfaces gráficas y aceleración 2D y 3D.

La virtualización es una buena forma de probar una distribución GNU/Linux para evaluarla o ejecutar Windows en un Linux. Hay otras herramientas de virtualización como QEMU y KVM pero la virtud de VirtualBox es que es muy sencilla y está disponible para Windows, GNU/Linux y macOS.

VirtualBox

Para tener una máquina virtual el proceso se puede hacer desde el principio desde el medio de instalación ofrecido siguiendo los de su instalador. Pero para hacer alguna prueba de desarrollo y si se necesitan virtualizar varias máquinas el proceso manual es incómodo además de repetitivo. Vagrant es una de las herramientas ofrecidas por HashiCorp que permite automatizar la creación y aprovisionamiento de máquinas virtuales en VirtualBox mediante la especificación de un archivo de configuración. Permite replicar entornos y crear un cluster de máquinas que resulta muy útil al desarrollar o probar cierto software.

En este ejemplo se configura una máquina virtual usando como sistema operativo base Ubuntu 18.04, y se aprovisiona configurando ella Docker. El aprovisionamiento se realiza mediante una serie de comandos y archivos que se añaden del host al sistema virtualizado tal como se hace en un sistema Ubuntu desde su estado de instalación inicial. Entre las opciones de configuración permitidas están el nombre de la máquina virtual, su sistema operativo, la cantidad de memoria que se le asigna, propiedades de red, asignar direcciones IP estáticas, …

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 # -*- mode : ruby -*- # vi : set ft = ruby : Vagrant . configure ( "2" ) do | config | config . vm . define "ubuntu-docker" do | instance | instance . vm . box = "ubuntu/bionic64" instance . vm . provider : virtualbox do | vb | vb . name = "Ubuntu Docker (Vagrant)" end instance . vm . network "private_network" , ip : "192.168.33.10" instance . vm . provider "virtualbox" do | vb | vb . memory = "1024" instance . vm . provision "file" , source : "docker-compose.yml" , destination : "/home/vagrant/docker-compose.yml" instance . vm . provision "shell" , inline : $docker_role_script end end $docker_role_script = <<- SCRIPT echo "Updating..." sudo apt - get update sudo apt - get upgrade echo "Installing docker..." sudo apt - get install - y apt - transport - https ca - certificates curl gnupg - agent software - properties - common curl - fsSL https : //download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt - key fingerprint 0EBFCD88 sudo add - apt - repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt - get update sudo apt - get install - y docker - ce docker - ce - cli containerd . io sudo usermod - aG docker vagrant sudo curl - L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" - o / usr / local / bin / docker - compose sudo chmod + x / usr / local / bin / docker - compose echo "Starting Docker service..." sudo systemctl daemon - reload sudo systemctl enable docker . service sudo systemctl start docker . service SCRIPT end

Se puede crear un archivo inicia con comentarios para empezar a configurar la máquina virtual.

1 2 $ vagrant init ubuntu/bionic64

Definido el archivo de configuración para Vagrant se inician las máquina virtual con un comando. Y se detienen con otro. Si hay necesidad en el mismo archivo se pueden definir varias máquinas virtuales.

1 2 $ vagrant up $ vagrant halt

VirtualBox Vagrant VM

Una vez iniciada la máquina virtual Vagrant configura SSH para tener acceso a su terminal, hay que especificar el nombre de la máquina virtual.

1 2 $ vagrant ssh ubuntu-docker

Vagrant SSH

La máquina en el ejemplo ha sido aprovisionada con Docker mediante un script con los comandos para instalarlo y un archivo de Docker Compose con un servicio del servidor web nginx. Desde la terminal de la máquina virtual se inicia el servicio con Docker que queda accesible tanto desde la pripia máquina virtual como desde el host indicando la dirección IP que se le ha asignado.

docker-compose up y curl desde la MV y desde el host

Vagrant tiene un repositorio de imágenes entre las que elegir para el sistema, están las más populares como Ubuntu, Fedora, Debian y CentOS. Es un repositorio en donde los usuarios pueden subir sus propias imágenes aunque por defecto es mejor usar las oficiales de cada sistema.

Posee varias páginas de documentación bastante completas donde conocer los todos los detalles de uso de Vagrant.