Tabla de Contenidos

Cómo crear en Proxmox un contenedor de OpenVZ por consola

Proxmox es una plataforma de virtualización muy útil. Aunque tiene una interfaz de gestión vía web, puede que en alguna ocasión sea necesario trabajar por consola, bien desde el propio Proxmox o desde otro equipo vía SSH. Este mini-tutorial muestra cómo hacerlo.

En este tutorial se asumen ciertas cosas:

Preparativos

Primeramente, descargaremos la plantilla del contenedor de Debian:

wget http://download.proxmox.com/appliances/system/debian-7.0-standard_7.0-1_i386.tar.gz

Una vez descargada la plantilla, vamos a copiarla hacia Proxmox:

scp debian-7.0-standard_7.0-1_i386.tar.gz root@192.168.100.1:/var/lib/vz/templates/cache/

Creación y configuración del contenedor

Para crear el contenedor, accederemos a Proxmox vía SSH:

ssh root@192.168.100.1

Una vez en la consola de proxmox, primeramente prepararemos el contenedor:

vzctl set 101 --name "sv1" --description "Mi primer servidor" --cpus 1 --cpulimit 100% \
--diskspace 1G:4G --ram 512M --swap 768M --diskinodes 90000:200000 --quotatime 600 \
--ipadd 192.168.100.101 --hostname "sv1" --searchdomain midominio.cu \
--nameserver 127.0.0.1 --nameserver 200.55.128.3 --nameserver 200.55.128.4 \
--nameserver 169.158.128.136 --nameserver 169.158.128.88 \
--netif_add eth0 --save

En este caso, hemos establecido los parámetros de creación para un contenedor, asignando una IP de la subred de administración, y adicionalmente habilitando la interfaz eth0 mediante un puente, con el objetivo de configurarla luego para la salida hacia otra subred o el exterior.

Procedemos entonces a crear propiamente el contenedor, utilizando la plantilla de Debian 7 descargada, adicionalmente estableciendo la contraseña “secreto” para el usuario root, y habilitando módulos de iptables.

vzctl create 101 --ostemplate debian-7.0-standard_7.0-1_i386
vzctl set 101 --userpasswd root:secreto --onboot yes --save
vzctl set 101 --iptables ipt_TCPMSS --iptables ipt_LOG --iptables ipt_TOS \
--iptables iptable_nat --iptables ipt_multiport --iptables ipt_state  \
--iptables ipt_limit --iptables ipt_recent --iptables ipt_owner \
--iptables ipt_REDIRECT --iptables ipt_length --iptables ipt_tcpmss \
--iptables iptable_mangle --iptables ipt_tos --iptables iptable_filter \
--iptables ipt_ttl --iptables ipt_REJECT --setmode restart --save

Una vez creado el contenedor, nos cercioramos de hacerlo funcionar, y entramos en el:

vzctl start 101
vzctl enter 101

Esta vez debería aparecernos la consola del equipo sv1. Podríamos entonces realizar otras tareas, como por ejemplo establecer ciertos parámetros de red:

ip address add 192.168.0.101/24 dev eth0
ifconfig eth0 up
route add default gw 192.168.0.1
exit

Realizar salvas y restauras

Supongamos que deseamos realizar una salva en cierto directorio del contenedor que acabamos de crear, para restaurarlo o clonarlo cuando sea necesario: 1)

mkdir -p /var/salvas
vzdump 101 --compress gzip --dumpdir /var/salvas --mode stop --tmpdir /var/tmp

Esto debería producir en /var/salvas/ un archivo con un nombre como vzdump-openvz-101-2013_06_22-14_54_56.tar.gz que contendrá la salva de nuestro contenedor.

Podríamos entonces, por ejemplo, utilizar esta salva para hacer un clon del contenedor a fin de instalar en el otros servicios:

vzrestore /var/salvas/vzdump-openvz-101-2013_06_22-14_54_56.tar.gz 102 -force

Naturalmente, puede que este comando produzca ciertos errores porque ahora habría una duplicación de datos, como las mismas direcciones y nombres de equipos, etc. Pero esto podemos modificarlo:

vzctl stop 102
vzctl set 102 --name "sv2" --description "Mi segundo servidor" \
--hostname "sv2" --save
vzctl set 101 --ipdel all --save
vzctl set 101 --ipadd 192.168.100.102 --onboot yes --save

De todas maneras, si deseamos confirmar si todo ha quedado como pretendemos, podemos revisar el contenido del archivo de configuración /etc/vz/conf/102.conf y del directorio /var/lib/vz/private/102/ (con el contenedor detenido para mayor seguridad).

Otros comandos útiles

Desde la consola pueden hacerse muchas cosas, sin necesidad de entrar en la interfaz web de Proxmox.

Por ejemplo, si deseamos listar los contenedores que tenemos (detenidos o en ejecución), podemos utilizar el siguiente comando:

vzlist -a

También podemos ejecutar comandos directamente en un contenedor, sin necesidad de entrar en el. Por ejemplo:

vzctl exec 101 df -h

Para eliminar con seguridad un contenedor, podemos ejecutar los siguientes comandos:

vzctl stop 102
vzctl umount 102
vzctl destroy 102

Atribuciones

1)
El comando vzdump puede utilizarse para realizar salvas tanto de contenedores de OpenVZ como máquinas virtuales de QEMU/KVM. La diferencia es que para restaurar, deben utilizarse los comandos vzrestore o qmrestore, respectivamente.