wiki:OpenSysClone-Imagenes

1 - Introducción

Una vez realizado el estudio preliminar sobre la tecnología a estudiar, hemos de implantarla mediante una CLI que sea capaz de realizar las funciones necesarias y que luego se integrarán dentro de una GUI que haga mas accesible la aplicación al usuario final.


2 – Fase de Requisitos

Partimos del siguiente escenario, donde un server posee la capacidad de permitir el arranque PXE y además esta aplicación ha de poder ser invocada desde una maquina remota. Con este punto de partida, necesitamos añadir las opciones que nos brindan NFS y UDP, que estan incluidos en los paquetes siguientes que deberemos de instalar sin no los tenemos actualmente:

udpcast

nfs-kernel-server


Por otro lado debemos de tener el sistema auxiliar de Clonezilla Live accesible, ya que nuestra aplicación se basa en los recursos que Clonezilla Live nos permite, los ficheros han de poder servirse por apache para que el menu PXE arranque sin problemas, en nuestra situación actual comprobamos que existe un enlace que apunta:

ls -la /var/www

Enlace que debemos tener:

ipxeboot----------------/usr/share/lmd-server/www-boot


ls -la /usr/share/lmd-server/www-boot

Enlace que debemos tener:

pxe------------/var/lib/tftboot/ltsp

y que enruta pxe con nuestra ruta por defecto que serviremos.

Comprobada cual es la ruta que sirve PXE, creamos una carpeta dentro (tendremos en cuenta que esto es valido con otras rutas siempre que estas se sirvan por apache y se enlacen correctamente en las plantillas del menu PXE):

mkdir /var/lib/tftpboot/ltsp/OpenSysClone

Y dentro de esta ruta dejaremos caer los siguientes ficheros incluidos en el Clonezilla live(Antes descargaremos la ISO de clonezilla live y extraeremos los ficheros necesarios):

vmlinuz

initrd.img

filesystem.squashfs

O bien crearemos un enlace de donde esten nuestra carpeta con nuestros ficheros aquí, algo de manera similar a esto:

ln -s /ruta_original/OpenSysClone /var/lib/tftpboot/ltsp

Llegado este punto, el fichero filesystem.squashfs puede ser servido de dos maneras, bien por TFTP o bien por APACHE, según las pruebas realizadas en máquinas virtuales parece ser que el servicio de APACHE es mucho mas rápido, aunque esto ha de comprobarse en un centro, sea como fuere detallamos como ha de configurarse en ambos casos:

TFTP: Para que este servicio sirva nuestro fichero comprobaremos que:

/etc/dnsmasq.d/ltsp-server.conf

Ha de tener una entrada que indique que es lo que queremos servir por TFTP, será similar a esto, siempre que los ficheros se encuentren aquí dentro:

enable-tftp

tftp-root=/var/lib/tftpboot/ltsp

Así pues luego la llamada desde el menu PXE será similar a esto:

fetch=tftp://SERVER_IP/OpenSysClone/filesystem.squashfs

APACHE: Si hemos de servir el fichero de esta manera,tendremos que editar la plantilla y cambiar la entrada del menú PXE de la siguiente manera, ya que por defecto en la plantilla tomamos que se sirve por TFTP:

fetch=http://SERVER_IP/ipxeboot/pxe/OpenSysClone/filesystem.squashfs

Teniendo en cuenta estos requisitos ya podemos pasar a la siguiente fase.



3 - Fase de diseño

Para poder llevar a cabo nuestras premisas iniciales vamos a utilizar la tecnologia n4d junto a python para luego poder ser invocada desde una GUI amigable al usuario.

Lo primero que hemos realizado es la automatizacion del menu PXE, el cual se encargará de introducir las plantillas que dejemos caer en la ruta:

/usr/share/lmd-server/www-boot/pxemenu.d

Este fichero hemos decidido que lleve el nombre:

70-OpenSysClone.php

De esta manera lo tendremos controlado y seremos capaces de eliminarlo cuando se desee, borrando así la entrada del menú cuando esta no ha de estar disponible. A su vez el fichero es un PHP lo que implica las etiquetas de este junto con las entradas de menú necesarias para el arranque, pero con una salvedad y es que estas estarán dentro de unos echo”...........” que harán de lanzadera, para que se entienda mejor he aqui un ejemplo:

<?php

echo "MENU LABEL OpenSysClone? Grabar Imagen \n";

echo "KERNEL pxe/OpenSysClone/vmlinuz\n";

?>


Una vez tenido en cuenta este formato definimos las plantillas que vamos a usar para el diseño de las entradas de menú y que han de realizar lo que deseemos en cada caso de manera automática, es decir hablamos de plantillas que PYTHON es capaz de adecuar según los parámetros necesarios en cada situación, y estas las situamos en:

/usr/share/n4d/templates/OpenSysClone

Debido a las necesidades indicadas por el cliente hemos creado tres plantillas para los tres casos supuestos:

SaveImage.tpl --------------- Realizara la copia inicial del disco.

RestoreImageUnicast.tpl ------Realizara el clonado de manera unitaria.

RestoreImageMulticast.tpl--- Realizara el clonado con una solución Multicast

. Con las plantillas creadas pasamos al desarrollo de la clase que contendra toda la tecnologia capaz de interactuar entre la GUI de usuario, las plantillas y adecuar el server para cada ocasión, por lo que creamos el fichero que la contiene:

/usr/share/n4d/python-plugins/OpenSysClone.py

Dentro hemos definido los metodos que hemos entendido como esenciales, con una parametrizacion que pasamos a explicar a continuación:

write_menu_pxe: Es el metodo encargado de escribir las plantillas con los datos necesarios en cada caso añadiendo asi la entrada anuestro menu PXE, los parametros que han de pasarse en orden son:

SAVE_IMAGE_TPL: Nombre del fichero que contiene la plantilla que deseemos usar en ese caso.

PATH_FILE: Ruta en donde se escribiran o desde donde se leeran las imagenes.

NAME_FILE: Nombre de la imagen a salvar o restaurar.

HDD_DISK: Disco del cual se trabajara.

FINAL_ACTION: Acción final que realizaremos, las mas habituales reboot o poweroff.

del_menu_pxe: Es el método que realizara el borrado de la entrada PXE, con lo que el unico parametro que utiliza:

AUX_PXE_DESTINATION: Fichero que el menú PXE va a leer, que tenemos definido en la clase por defecto.

nfs_export_start: Método encargado de exportarnos por NFS el recurso necesario, que en nuestro caso incluye permisos de lectura y escritura en la carpeta en cuestión, junto con el montaje sin autenticación y sin la opción de navegar en las carpetas superiores, así el parámetro que espera pues es:

PATH_FILE: Ruta de la carpeta a exportar.

nfs_export_stop: Método usado para devolver el servicio NFS a su estado original, en esta ocasión no se necesitan de parámetros adicionales.


uchmod: Metodo que nos realizara el cambio de atributos en el fichero que le solicitemos ya que hemos notado que los recursos de PYTHON no realizaban las modificaciones que nuestra aplicación necesitaba, así que los parámetros a usar son:

FILE: Nombre del fichero

MODE: Permisos que ha de tener.


send_multicast_file: Método necesario para que nuestro servidor sirva la imagen deseada en modo multicast y además en segundo plano, por su parte este método se encarga de obtener la tarjeta de red que se utiliza, y ha de ser invocado con unos parámetros esenciales:

PATH_FILE: Ruta donde se encuentra la imagen.

NAME_FILE: Nombre del fichero a compartir en multicast.

MIN_CLIENTS: Numero mínimo de clientes a esperar antes de lanzar el archivo por multicast.

MAX_WAIT: Tiempo máximo de espera antes de lanzar el fichero por multicast.


4 – Instalación y prueba

Para la instalación y prueba del diseño realizado hemos de partir de un SERVER de Lliurex que ya provee de todos los servicios esenciales a falta de los particulares en este caso OpenSysclone?, NFS y UDP, para ello realizamos:

sudo apt-get install open-sysclone-server udpcast nfs-kernel-server

Ahora deberiamos de realizar un reinicio del servicio n4d puesto que acabamos de añadir una nueva clase con sus metodos y estos han de cargarse en memoria:

sudo service n4d restart

Realizada esta instalación podemos ya realizar las pruebas necesarias para comprobar el uso de la aplicación, eso si antes debemos de tener en cuenta la configuración inical de clonezilla que se necesita y detallada anteriormente en la fase de requisitos.

.

4.1 REALIZAR IMAGEN DEL CLIENTE EN EL SERVER

Teniendo esto en cuenta vamos a realizar la imagen de nuestro cliente inicial, para ello haremos lo siguiente:

Iniciaremos el servicio NFS para poder montar la unidad donde vamos a tener nuestras imagenes, utiliza una ruta por defecto /net/OpenSysClone, con lo que podemos dejar la llamada asi, siempre que exista esta ruta o la creemos con permisos 777:

n4d-client -u user_admin -p user_passwd -c OpenSysClone -m nfs_export_start

Podemos comprobar que nuestro recurso esta siendo compartido si consultamos el fichero con los recursos servidos y sus permisos:

cat /var/lib/nfs/etab

Ahora escribiremos la entrada del menú PXE con los valores necesarios para salvar la imagen del cliente en nuestro SERVER, los parámetros que introducimos ya fueron antes comentados:

n4d-client -u user_adminr -p user_passwd -c OpenSysClone -m write_json_pxe -a SaveImage.tpl /net/OpenSysClone/ Nombre_Imagen sda poweroff

Hecho esto ahora arrancamos nuestro cliente por red, y la entrada ha de aparecer en el menú del PXE como:

OpenSysClone Grabar Imagen Nombre_Imagen

Seleccionada esta entrada, el cliente comenzara a dejar la imagen de su disco duro en nuestro SERVER, y al finalizar se apagara automáticamente.


4.2 RESTAURAR IMAGEN EN UNICAST MODE

Ahora vamos a proceder al volcado de la imagen en un cliente, partiendo del estado inicial donde el recurso NFS ya esta compartido:

Necesitamos que la entrada del menu PXE este disponible, ejecutamos:

n4d-client -u user_admin -p user_passwd -c OpenSysClone -m write_json_pxe -a RestoreImageUnicast.tpl /net/OpenSysClone/ Nombre_Imagen sda poweroff

Una vez mas arrancamos por red el cliente donde queremos restaurar nuestra imagen inicial, obteniendo una nueva entrada en el menu:

OpenSysClone Restaurar Imagen Nombre_Imagen

Seleccionando esta entrada y de manera automática se realizara el proceso con un apagado final de la máquina.


4.3 RESTAURAR IMAGEN EN MULTICAST MODE

Si lo que queremos es restaurar la imagen en un cliente pero mediante el método multicast, suponemos que partimos del estado inicial donde el recurso NFS ya esta compartido, asi que realizamos:

Necesitamos que la entrada del menu PXE este disponible, ejecutamos:

n4d-client -u user_admin -p user_passwd -c OpenSysClone -m write_json_pxe -a RestoreImageMulticast.tpl /net/OpenSysClone/ Nombre_Imagen sda poweroff

Con la entrada del menú preparada y antes de arrancar los clientes por red, hemos de preparar nuestro server para que sirva la imagen en Multicast-Mode, asi que ejecutamos:

n4d-client -u user_admin -p user_passwd -c OpenSysClone -m send_multicast_file -a /net/OpenSysClone Nombre_Imagen 2 50

Una vez mas arrancamos por red, en este caso los clientes donde queremos restaurar nuestra imagen inicial, obteniendo una nueva entrada en el menú:

OpenSysClone: Restaurar Imagen Multicast Nombre_Imagen

Seleccionando esta entrada y de manera automática se realizara el proceso con un apagado final de las máquinas.


5 – Desarrollo posterior

Llegado este punto y si se superan todas las pruebas tan solo falta la integración con la GUI.

Last modified 3 years ago Last modified on Nov 19, 2014, 6:27:34 PM