"Después del juego es antes del juego"
Sepp Herberger

viernes, 24 de octubre de 2014

Sistema de clonado remoto (parte 3 de 3)

Bueno, ya tenemos nuestro sistema PXE que arranca por red SystemRescueCD y Clonezilla. Ya solo faltan dos cosas para hacerlo todo como prometí en la primera entrada.

Primero, como entrar remotamente al SystemRescue una vez arrancado. Esa es fácil:

ssh -X root@ip-de-la-maquina-arrancada-por-pxe

¿Y la contraseña?. Pues la indicada en el parámetro rootpass del append del pxelinux.cfg/default. Entramos y ya desde allí podemos abrir clonezilla, hacer fsck o utilizar remotamente cualquier utilidad de las que trae nuestro CD.

La segunda, lo mas interesante: dijimos que al arrancar el PC remotamente (por ejemplo, por wakeonlan-etherwake) se cargaría automáticamente el SystemRescueCD, sin interacción humana. Tal como está ahora montado el chiringuito debe haber alguien delante del PC para entrar en Herramientas Sysadmin -> meter la contraseña -> entrar en SystemRescueCD.

¿Cómo hacemos que dicho PC y solamente él cargue SystemRescueCD sin que haya nadie allí y podamos conectar luego a él por ssh?. Bueno, primero debemos construir un menú ad-hoc que cargue el SystemRescueCD. Dentro /var/lib/tftpboot/pxelinux.cfg/ crearemos un fichero llamado, por ejemplo, "rescue" con permisos 755 y con este contenido:

DEFAULT rescuecd
LABEL rescuecd
kernel sysrcd-clonezilla/rescue32
append initrd=sysrcd-clonezilla/initram.igz  setkmap=es netboot=nbd://<ip-del-servidor-nbd>:2000 rootpass=2tazasdelinux  keeppxe

Como vemos esto es un menú de una opción: cargar el SystemRescueCD si o si. No tiene tiempos de espera ni contraseña. En el momento en que PXE lo cargue, cojerá dicha opción y la aplicará el solito.

Ahora hay que decirle además que al PC en cuestión se cargue el menú "rescue" y no el menú "default" como estaba haciendose hasta ahora.

Si hemos observado el arranque PXE habremos visto que al principio salen un montón de números cambiantes como si se estuviese buscando algo. Luego sale el menú normal. Esos números son la MAC del equipo y está diciendo "esta es mi MAC, ¿hay algun menú especial para mí?". Imaginemos que la MAC del equipo es 00:1f:d0:06:d0:a6, lo que haremos para asociarle ese menú es, dentro de /var/lib/tftpboot/pxelinux.cfg, crear un fichero con el mismo contenido que "rescue" llamado 01-00-1f-d0-06-d0-a6. Ojo al dato: hemos cogido la MAC, hemos cambiado los ":" por "-" y hemos puesto un "01-" delante de todo. Ese fichero podemos crearlo así:

cd /var/lib/tftpboot/pxelinux.cfg
cp rescue 01-00-1f-d0-06-d0-a6

o mejor aún:

cd /var/lib/tftpboot/pxelinux.cfg
ln -sf rescue 01-00-1f-d0-06-d0-a6

Y ya está. En el arranque el equipo recibirá, según su MAC, ese menú personalizado y cargará el SystemRescueCD el solito. A los pocos minutos podremos acceder por ssh y hacer nuestras cosas remotamente.

NOTA: durante el arranque PXE aparecen ristras de números crecientes, permitiendo que pongamos un menú para varios equipos a la vez, en función de la IP que recibirá el equipo, pero eso no tiene mayor interés para nuestro caso ya que filtramos por MAC. Mas información aquí.

Of course, una vez hemos acabado hay que desasociar la MAC del equipo, para que vuelva a usar el menú "default". Eso es tan sencillo como hacer:

cd /var/lib/tftpboot/pxelinux.cfg
rm 01-00-1f-d0-06-d0-a6

Recordemos todos los equipos susceptibles de ser clonados algún dia deben quedar configurados para arrancar por PXE. ¿Qué sucede al arrancar si no hacemos nada?: pues que se van automáticamente a la primera opción y cargan el sistema contenido en el disco duro. Y, ¿qué pasaría si hay problemas en nuestro servidor TFP y no envia el menú?. Pues que falla el arranque PXE y pasa al siguiente de la lista en la BIOS, que será el disco duro del equipo.

Otra cosa de la que no hemos hablado es dónde se alojan las imágenes a cargar. Normalmente con Clonezilla en modo "presencial" podemos usar un pendrive o disco duro externo que pinchamos antes de empezar a cargar la imagen. Esto es imposible remotamente por motivos obvios. En ese caso lo mas adecuado es tener un repositorio de imágenes compartidas en la misma red local que está el equipo remoto y seleccionarlas durante la configuración de Clonezilla. Dicho repositorio será una carpeta compartida por NFS, samba o, mi favorito por su sencillez, sshfs.

Despues de clonar nuestro equipo todavía tendremos el SystemRescueCD arrancado, por tanto podremos regenerar el Grub (en la imagen ISO distribuida hay un script que lo hace), montar las particiones clonadas, redimensionarlas con Gparted, enjaularlas por chroot y hacer cambios sobre ellas antes de acabar la tarea (por ejemplo, podemos copiar un xorg.conf personalizado, instalar paquetes adicionales o configurar la red). Cuando acabemos desmontamos todo lo montado, hacemos un reboot y quitamos el enlace al menú rescue en  /var/lib/tftpboot/pxelinux.cfg.

Igualmente, antes de clonarlo podemos hacer lo mismo y montar sus particiones para hacer copias de seguridad de los datos locales a un lugar seguro via scp o rsync.

Bueno, pues con esto acaba la serie. Ya verás que desconcertados se quedan los usuarios al ver que le formateas el ordenador a distancia. Hasta la próxima, que creo que irá de hardware.

 

No hay comentarios:

Publicar un comentario