Es justo y necesario (según David Villa) realizar pruebas automatizadas de cada feature del sistema. Así que, ahora que ya hay una versión mínimamente funcional, me pongo a realizar un tester automático.
Ya hay prototipo mínimamente funcional, que arranca desde cero y se le instala una debian. Hay algunas cosas a tener en cuenta a la hora de preparar la imagen para su distribución.
Para poder utilizar las imágenes de VirtualBox, es necesario utilizar la versión 1.6.6-dfsg-3 o anteriores, ya que después de dicha versión se desapareció la herramienta vditool que proporciona información sobre las cabeceras de las imágenes .vdi. Sin dicha información es imposible montar los ficheros .vdi como si fueran .iso normales.
A ver cómo explico esto. Estoy barajando 2 enfoques para la aplicación.
Enfoque con installers
Se utiliza un programa c++ para lanzar un icepatch2server que sirva la imagen a distribuir, y los clientes tendrán un servidor Ice que para recibirla e instalarla.
Enfoque Ice-oriented
Hasta ahora, lo que tengo básicamente son pruebas de concepto. Puedo desplegar una iso de un SO, o un FS entero "tal cual" con IcePatch2, pero de manera bastante... cruda. Tengo dos servidores distintos, dependiendo de lo que vaya a desplegar (ISO/FS):
Ayer me topé con un problema en la implementación del prototipo. Los ordenadores "terminales" (por darles un nombre), arancan por PXE, montando por NFS el sistema para arrancar, que se encuentra en un directorio del servidor. La idea es enviarle a los terminales las imágenes y que ellos las instalen.
Estoy a punto de finalizar la primera fase. Ya he conseguido que un ordenador vacío arranque, inicie un icegridnode y se conecte al registry. Puedo ver su configuración y particionar su(s) disco(s) duro(s). El siguiente paso es desplegarle una imagen de un SO y que lo arranque.
El módulo Jano será el que se encargue en el Manager de decidir si un nodo está actualizado, tiene que particionarse, tiene que actualizar o instalar alguna imagen nueva, etc. También se encargará de hacer que el servidor DHCP del Manager responda o no a su petición de arranque por PXE, dependiendo de si está actualizado o no.
El módulo Partitioner es el encargado de particionar los discos duros de los ordenadores. Al igual que con HostInfo, los nodos ejecutarán la parte servidor del módulo, que estará a la escucha, y será el que realmente maneje la tabla de particiones. El Manager ejecutará la parte cliente, desde la que se envía la nueva tabla de particiones que tiene que crearse en un nodo determinado.