Header Ads

Administrando VMs

Update Jun 06/2016
La virtualización hoy por hoy se ha convertido en la herramienta más usada por las organizaciones y usuarios comunes, ya que los ahorros en costes son bastante significativos, sin mencionar que es más fácil hacerle un respaldo, sincronización o clonación a una VM que a un servidor o equipo físico.
Ahora ya podemos virtualizar prácticamente todo; desde un servidor o PC, hasta un smarthphone o una red de datos, sin embargo manejar un pool de VMs incrustadas en un servidor o en puntos remotos no es tan sencillo y su administración puede causar bastantes dolores de cabeza. Y si le sumamos a esto que nuestro equipo no tiene entorno gráfico, o sí lo tiene pero los recursos son escasos, se puede crecer el enano. Es por eso que algunos administradores IT prefieren solucionar estas limitaciones "a la antigua", echando mano de la vieja consola.
Así las cosas, podremos instalar nuestras máquinas virtuales directamente desde el terminal, y arrancarlas con el inicio del sistema, lo cual en ocaciones nos proporciona ciertas libertades, ya que podemos modificar el funcionamiento de las VMs a nuestro antojo. Es por eso que daremos algunos tips para poder sortear estas dificultades, utilizando VirtualBox de Oracle, por tener calificación BBB (Bueno, Bonito y Barato)
Instalación
El primer paso es instalar Virtualbox 4x y crear la VM. Por consola, lea el excelente tutorial Integración Contínua: Instalar y configurar nuestra máquina virtual con VirtualBox, por consola.
No olviden que después de instalado y creadas las VMs, instalar Guest Additions y adicionar el usuario al grupo vboxusers.
sudo adduser usuario vboxusers
Donde "usuario" es el nombre de tu usuario. Para verificarlo ejecuta en el terminal echo $USER
Si ya la tiene instalada y su VM creada, aquí algunos parámetros que debe considerar. En el siguiente ejemplo, vamos a asumir que tenemos dos VM; una llamada 7 (Windows 7) y otra Kali (Kali Linux). Para conocer los detalles de nuestras VMs ejecutamos en el terminal:
VBoxManage list vms
"7" {a14763d0-8135-4ed8-a794-4555aa307b8d}
"kali" {0cc560a6-c41c-43f7-aa8a-b9d264432e4c}
Pero si quiere conocer los parámetros específicos de las VMs
VBoxManage list vms -l
Comandos más usados 
VBoxManage startvm VM (iniciar)
user@user:~$ VBoxManage startvm 7
Waiting for VM "7" to power on...
VM "7" has been successfully started.
o
user@user:~$ VBoxManage startvm a14763d0-8135-4ed8-a794-4555aa307b8d
Waiting for VM "a14763d0-8135-4ed8-a794-4555aa307b8d" to power on...
VM "a14763d0-8135-4ed8-a794-4555aa307b8d" has been successfully started
El comando controlvm tiene varios estados (pause|resume|reset|poweroff|savestate); por ejemplo:
VBoxManage controlvm 7 reset (reinicio)
VBoxManage controlvm 7 poweroff (apagado)
user@user:~$ VBoxManage controlvm 7 poweroff
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
VBoxManage controlvm 7 pause (pausar VM)
VBoxManage controlvm 7 resume (Reiniciar VM de la pausa)
VBoxManage controlvm 7 savestate (guardar el estado actual de la VM)
user@user:~$ VBoxManage controlvm 7 savestate
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Y para restablecerla nuevamente
VBoxManage startvm 7
Waiting for VM "7" to power on...
VM "7" has been successfully started
VBoxManage modifyvm 7 parametro (para modificar la VM)
VBoxManage createvm –name “7” –register (Crear VM)
Por terminal se puede hacer prácticamente todo. Crear la VM, clonarla, arrancarla, apagarla, reiniciarla, suspenderla, configurarla, etc, etc. Para profundizar en este tema, visite la guía de VirtualBox.
Administración
El siguiente paso es administrar nuestras VMs sin utilizar el entorno gráfico y una de las mejores alternativas es phpvirtualbox.
Pasos
Instalamos los paquetes necesarios
sudo apt-get install php5 php5-common php5-cli libapache2-mod-php5 php5-mcrypt mysql-server php5-mysql apache2 php-soap php5-gd
Asegúrese de tener instalado las cabeceras del kernel y dependencias
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get autoremove
sudo apt-get install build-essential module-assistant dkms
Ahora adicionamos nuestro usuario...
sudo nano /etc/default/virtualbox
... y añadimos la linea (donde 'user' es nuestro usuario. Cámbielo por el suyo)
VBOXWEB_USER=user
Y reiniciamos los servicios
update-rc.d vboxweb-service defaults
/etc/init.d/vboxweb-service start
Luego verifique el estado
sudo /etc/init.d/vboxdrv status
VirtualBox kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) are loaded.
Y si hay problemas, ejecute
sudo /etc/init.d/vboxdrv setup
Verifique el funcionamiento de su apache y base de datos. Para este paso debe haber configurado antes Apache + PHP + MySql.
http://localhost/info.php
o
http://ipdelservidor/info.php
Ahora descargamos phpvirtualbox, descomprimimos y creamos la carpeta (verifique en el portal oficial si la versión ha sido actualizada. En ese caso cambie 4.3-3 por la más reciente)
sudo mkdir /var/www/html/phpvirtualbox
cd /tmp/
sudo wget -c --retry-connrefused -t 0 http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-4.3-3.zip
sudo unzip phpvirtualbox-4.3-3.zip sudo cp -R phpvirtualbox-4.3-3/* /var/www/html/phpvirtualbox/ sudo rm -R phpvirtualbox-4.3-3* cd
Copiamos y modificamos el archivo de configuración
sudo cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php
sudo nano /var/www/html/phpvirtualbox/config.php
Y cambiamos usuario y contraseña
/* Username / Password for system user that runs VirtualBox */
var $username = 'vbox';
var $password = 'pass';
Nota: Si no quiere crear un usuario nuevo llamado 'vbox', puede cambiarlo por el nombre de su usuario y password actual del sistema con tan solo sustituir 'vbox' y 'pass'.
PHPVirtualBox
Finalmente accedemos a PHPVirtualBox por el navegador (podemos utilizar localhost, si estamos en el mismo equipo o la ip del servidor, si accedemos desde una ubicación diferente)...
http://ipdelservidor/phpvirtualbox/
http://localhost/phpvirtualbox/
Para cambiar el usuario y pass por default de phpvirtualbox (admin/admin), una vez ingresado a PhpVirtualBox, pulsamos File y Change Password. Ahí colocamos la contraseña anterior (admin) y la nueva.
Extra
Verificar el soporte 3D (para Unity y otros entornos), ya que la VM puede ralentizarse.
sudo /usr/lib/nux/unity_support_test -p
Para solucionarlo instale Guest Additions. También puede modificar la resolución, verificando primero si la deseada esta soportada
sudo xrandr
Y para las ediciones sin entorno gráfico, cambiar la resolución por defecto (800x600) con:
sudo apt-get install virtualbox-guest-dkms
VBoxManage setextradata global GUI/MaxGuestResolution any
Para conocer los errores más frecuentes, visite  Sourceforge 
No olviden fortificar el servidor apache para evitar contratiempos

Actualización Ago 31/2015
PHPVirtualbox ha actualizado su version a 5x al igual que VirtualBox. Es importante señalar que las versiones 4x de PHPVirtualbox no son compatibles con Virtualbox 5x. Debe actualizar su version:
echo "Pasos para instalar PHPVirtualbox 5x"
echo "acceda por http://ipdelservidor/phpvirtualbox/ o http://localhost/phpvirtualbox/"
sudo mkdir /var/www/html/phpvirtualbox
cd /tmp/
wget -c --retry-connrefused -t 0 http://downloads.sourceforge.net/project/phpvirtualbox/phpvirtualbox-5.0-2.zip'
unzip phpvirtualbox-*.zip
sudo cp -R phpvirtualbox-* /var/www/html/virtualbox
sudo rm -R phpvirtualbox-*
cd
sudo cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php
Ahora cree y edite el archivo de configuración virtualbox y le ingresa los siguientes datos (donde "usuario" es la cuenta donde está instalando PHPVirtualbox):
sudo nano /etc/default/virtualbox
VBOXWEB_USER=usuario
VBOXWEB_HOST=127.0.0.1
Y modifique el archivo config.php con la siguiente informacion:
sudo nano /var/www/html/phpvirtualbox/config.php
var $username = 'usuario'; # el mismo usuario de /etc/default/virtualbox
var $password = 'su_password'; # su password de usuario
var $location = 'http://127.0.0.1:18083/';
Y reinicie:
sudo update-rc.d vboxweb-service defaults
sudo /etc/init.d/vboxweb-service start
Importante

Puede presentarse el caso de que vboxweb-service no inicie (mensaje Fail o Could not connect to host (http://127.0.0.1:18083/)). En este caso, el culpable es vboxwebsrv
1. Verifique que SELinux no esté bloqueando el acceso a vboxwebsrv 
2. Haga un ps ax | grep vboxwebsrv para verificar si esta corriendo. Si no lo está, ejecute sudo vboxwebsrv >nul &
o puede correrlo en background
/usr/lib/virtualbox/vboxwebsrv --background
3. Si recibe un error (/var/log/apache2/error.log) similar a:
[evasive20:error] [pid 4697] [client 127.0.0.1:37310] client denied by server configuration: /var/www/html/phpvirtualbox/endpoints/api.php etc etc
Es posible que el módulo mod_evasive de apache y está bloqueando phpvirtualbox. Siga los siguientes pasos:
1. Verifique si mod_evasive está activo. Abra el terminal y ejecute el siguiente comando:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
si el módulo evasive esta inactivo muestra:
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
HTTP/1.1 200 OK
si esta activo muestra:
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
Si no está activo, vaya al paso 2. Si está activo, desactivelo y luego vaya al paso 2.
sudo a2dismod evasive
2. Edite los archivos:
/etc/apache2/mods-available/evasive.conf
/etc/apache2/mods-enabled/evasive.conf
Y asegúrese de se encuentren las líneas:
   DOSLogDir "/var/log/apache2/mod_evasive.log" # registro de eventos
   DOSWhitelist 127.0.0.1 # excluir localhost (Puede agregar mas ips)
3. Guarde los cambios, active el módulo y reinicie apache:
sudo a2enmod evasive
sudo /etc/init.d/apache2 force-reload

Actualización Sep 11/2015
Ha sido liberada la versión phpvirtualbox-5.0-3. Por el momento no se recomienda su utilización por su inestabilidad (el servicio vboxwebsrv se cae muy seguido)

Actualización May 16/2016
A partir de la versión 15.04 se solucionó el bug Kernel Service is not Running, por tanto ya no es necesario iniciar /etc/init.d/vboxdrv

Actualización Jun 03/2016
Se libera la versión de phpvirtualbox 5.0.5 y solucionan la mayoría de las incompatibilidades. Vea la segunda parte de este post: 
Administrando VMs II (Para Ubuntu 16.04 LTS x64, PHP7, Apache2, Virtualbox 5x)
Con la tecnología de Blogger.