autopkgsync: Actualizar equipos con puppet y pkgsync | Algo de Linux

viernes, 27 de febrero de 2015

autopkgsync: Actualizar equipos con puppet y pkgsync


En los centros educativos de Extremadura utilizamos puppet y pkgsync para mantener actualizados y configurados los equipos del centro, ya sean servidores ltsp, portátiles o workstation.

El procedimiento que utilizamos es bastante cómodo y operativo en servidores ltsp y equipos workstation, que se encuentran conectados a la red vía ethernet. 

El problema está en los ordenadores portátiles, que habitualmente se conectan a la red única y exclusivamente a través de una conexión wifi. ¿Por qué? Bueno, pues básicamente porque el acceso inalámbrico no nos proporciona tanto ancho de banda como el cable y, encima son muchos los dispositivos que se conectan por este medio a la vez; como ejemplo, podemos poner un aula con 30 portátiles de alumnos tratando de acceder al medio.

El mayor problema, en este caso, no es puppet, sino el consumo de ancho de banda por parte de pkgsync, que realiza una actualización de los paquetes de cada máquina, instalando, actualizando y desinstalando todo aquello que tenga en sus listas. ¿Y qué es lo que sucede? Que en ocasiones, los usuarios notan que no pueden navegar o la navegación se hace lenta. 

Hemos tratado de resolver este problema limitando el consumo de ancho de banda por parte de pkgsync, pero, en ocasiones, hay portátiles que llevan más tiempo que otros sin encenderse, tienen más paquetes que actualizar y no llegan a terminar el proceso de actualización antes de ser apagados.

He dado unas cuantas vueltas al problema, pero no he encontrado una solución que, con los medios que tenemos, permita mantener el software de portátiles completamente actualizado de una forma completamente automatizada, sobre todo porque, en el caso de portátiles, no tenemos una conexión permanente que nos permita forzar la actualización de paquetes.

No obstante, se me ha ocurrido una forma "semiautomática" que me facilite la tarea de actualizarlos. Y digo semiautomática porque la solución que he adoptado consiste en añadir una entrada a grub que realice la actualización del equipo mediante puppet (si se encuentra en el centro), luego realice un pkgsync para instalar/desintalar/actualizar paquetes y, por último, apague el sistema. De este modo, puedo coger cada portátil, seleccionar la entrada de grub de actualización para que se actualice y apague cuando termine.

El sistema se basa en un script que:
  • Comprueba si la interfaz ethernet eth0 está conectada, y, si lo está, realiza la actualización y apaga el equipo.
  • Si no hay una conexión de cable, comprueba si hay una conexión a la red inalámbrica establecida y, si la hay realiza la actualización y  apaga el equipo.
  • Si no hay una conexión inalámbrica establecida, trata de conectar mediante las conexiones definidas en Network Manager. Si se logra la conexión se realiza la actualización y apaga el equipo.
  • Y si no hay conexiones definidas en Network Manager, se apagará el equipo.
En principio, he preparado este sistema para portátiles, pero es perfectamente aplicable a servidores de terminales y workstations.

Para simplificar el proceso de instalación, he creado un paquete Debian. Por si a algún compañero de otro centro le interesa y lo quiere probar, aquí dejo el enlace de descarga:
https://copy.com/ElFWglfOEix91DYE

Publicado por primera vez en http://enavas.blogspot.com.es

1 comentario:

Anónimo dijo...

Tu si que vales...