¡Me han asignado mi segundo servidor en el calixto! Un cliente ligero con 2 gigas de RAM, un buen micro y un disco duro de un tera. La fuente funciona de milagro y está sujeta al chásis mediante bridas.
Le he instalado archlinux (para variar) a partir del que tengo en la laptop. Aquí pienso instalar el servidor de correo, un servidor web para una serie de aplicaciones y un pequeño servidor ftp para disponer instaladores y actualización de antivirus. No soporta virtualización (¿y con que se sienta la cucaracha si lo soportara?). Por tanto, usaremos archlinux como hypervisor de lxc.
Por suerte, en infomed; hay un excelente repo de debian
Para crear contenedores de debian en arch, necesitaremos debootstrap, que por suerte, viene en el repo de arch.
Este archlinux está instalado sobre BTRfs con el COW activado. Me imagino que crear snapshots de los contenedores sea mucho más óptimo.
Creamos entonces el contenedor, usando el repo de infomed como mirror
1 2 3 4 |
|
O sea, crea un contenedor, llamado (-n) debian, del release (-r) jessie y usa como repo (–mirror y –security) al de infomed.
Pasé toda la noche resando para que no se fuera a caer la conexión, ya que la operación create de LXC falla de nada. Por suerte todo salió de acorde al plan.
1 2 |
|
La idea es, crear un snapshot del básico y restaurarlo con un nuevo nombre.
Pero este está demasiado básico. DESNÚ más bien. Partiremos de ese contenedor como base para crear nuevos contenedores mediante snapshots. Así que a este le instalaremos una selección básica de software. Arrancamos el contenedor:
1
|
|
y enclavamos (attach) la consola, o sea, básicamente, entramos al container
1 2 3 4 5 6 7 8 |
|
Según la plantilla de archlinux, el password por defecto del container es “root”. Entramos al mismo y le cambiamos el password. Apto seguido, instalar el software.
En mi opinión un container básico, requiere al menos:
mc, tmux, vim, aptitude, iputils-ping
Pero además, puede que quizás te guste añadirle:
manpages, resolvconf, telnet, iptables
Terminada la faena, damos logout y luego presionamos la combinación “Ctrl+a q”. O sea, “control A” primero, luego suelta ambas y presiona “q”. Con eso desenclavas (detach) la consola del container (que sigue corriendo).
Bello verdad?! Linux es un sistema multitareas y multiusuario.
Empezar a aprovisionarnos es tan simple como copiar el contenedor. O sea el contenedor debian lo usaremos como plantilla para crear los contenedores mail, web y ftp.
1 2 3 4 5 6 7 8 9 |
|
Ya tenemos las tres máquinas. Ahora es tu desición si conservas o no el contenedor primario. A ese primer contenedor, que en este caso se llama “debian” yo lo llamo matriz. La matriz la mantengo actualizada y afinada. En algún momento podría necesitar hacer máquinas nuevas. Además, si te decides a hacer algún servidor desde cero; conservando las configuraciones, simplemente haces una nueva copia de la matriz (actualizada).
No vale pena tener ssh corriendo en los contenedores. Simplemente le haces ssh al servidor y attach al contenedor. Esto lo hace incluso hasta más seguro.
La mecánica de trabajo en este esquema, es prácticamente la misma que vimos ahora. Arrancar el container y enclavar la consola.
¿Notaste que puse a iptables como paquete opcional? Pues el iptables del hypervisor, o sea, del arch de afuera, controla todo el tráfico.
Otra cosa buena que puedes hacer es lincar todas las cache de apt de los debian. Por ejemplo, el directorio de la matriz sería:
/var/lib/lxc/debian/rootfs/var/cache/apt/archives
Mientras que el de “mail” sería
/var/lib/lxc/mail/rootfs/var/cache/apt/archives
Simplemente montas con bind el archive de debian en el de mail. El fstab quedaría así:
1
|
|
Nota para imbéciles: La ruta es muy larga, por eso usé ese aforismo. En el fstab debes poner ambas rutas como se ven arriba “/var/lib/lxc/rootfs/fulanito”
Como no usamos red en bridge, todos los container tiran por la misma ip. En el servido web, se usa el puerto 80 y 443, en el de correo el 25 y 110; pero todos en la misma ip. Por esta razón, no corro ssh en los contenedores; diría que el puerto 22 ya se encuentra en eso.
Aquí les dejo entonces la configuración de este container, con red del tipo “none”
1 2 3 4 5 6 7 8 |
|
Por otra parte, cosas como el mysql, que el servidor de correo necesita encuestarlo, simplemente, podrías ponerlo a escuchar por la 127.0.0.1 y así el container del servidor sql, escucha por la 127 y los demás container (incluso el hypervisor) se conectan al localhost donde está el mysql. O sea, la 127.0.0.1 sería como la red interna de todos los container. ¿Es seguro verdad?
Podemos confiarle ahora, a la frescura y robusteza de archlinux, la estabilidad de debian.