Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 159

Tareas para actualizar masivamente la configuracion de las BIOS de los clientes ligeros

Ver diferencias:

tareas_puppet/servidores_aula/actualiza_bios_terminales/manifests/init.pp
class actualiza_bios_terminales {
file {"/opt/ltsp/i386/root/cmospwd":
owner=>root, group=>root, mode=>755,
source=>"puppet:///actualiza_bios_terminales/cmospwd",
notify => Exec["regenera-imagen-para-bios"],
}
file {"/opt/ltsp/i386/root/cmosbackup":
owner=>root, group=>root, mode=>644,
source=>"puppet:///actualiza_bios_terminales/cmosbackup",
notify => Exec["regenera-imagen-para-bios"],
}
file {"/opt/ltsp/i386/etc/rc2.d/S99updcmos.sh":
owner=>root, group=>root, mode=>755,
source=>"puppet:///actualiza_bios_terminales/S99updcmos.sh",
notify => Exec["regenera-imagen-para-bios"],
}
exec {"regenera-imagen-para-bios":
command => "/usr/sbin/ltsp-update-image --arch i386",
subscribe => File["/opt/ltsp/i386/etc/rc2.d/S99updcmos.sh"],
refreshonly => true
}
}
tareas_puppet/servidores_aula/actualiza_bios_terminales/files/despierta_alumnos.sh
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Uso: $0 aula(AXX)"
exit
fi
for alumno in $(ldapsearch -xLLL -h ldap -b cn=group1,cn=THINCLIENTS,cn=DHCP\ Config,dc=instituto,dc=extremadura,dc=es "cn" | grep "cn: $1-O" | cut -f2 -d" ") ; do
mac=$(ldapsearch -xLLL -h ldap -b cn=$alumno,cn=group1,cn=THINCLIENTS,cn=DHCP\ Config,dc=instituto,dc=extremadura,dc=es "dhcpHWAddress" | grep ethernet | grep -v '00:00:00:00:00:00' | cut -f3 -d " ")
echo "Despertando $alumno con mac $mac"
wakeonlan $mac
etherwake $mac
done
tareas_puppet/servidores_aula/actualiza_bios_terminales/files/S99updcmos.sh
#!/bin/bash
#Script actualizar la configuración CMOS de los terminales desde una copia de seguridad nuestra.
echo 2 | /root/cmospwd /d /r /root/cmosbackup
tareas_puppet/servidores_aula/actualiza_bios_terminales/leeme.txt
ACTUALIZACION BIOS
==================
Tarea puppet que actualiza la configuración de la BIOS de los ordenadores de los alumnos (ojo, no
actualiza la version de la BIOS, sino su configuracion). Util para poner la misma configuracon de
BIOS (orden de arranque, contraseña, configuracion USB/LPT1, etc) en todos los equipos sin tener
que ir entrando uno a uno y cambiarla a mano.
AVISOS:
=======
-Este paquete está preparado con la BIOS de los Fujitsu P300 y no deberia funcionar en equipos
distintos. Para prepararla otros equipos, leer bien este documento HASTA EL FINAL, especialmente
n el apartado de como generar una copia de seguridad de una BIOS para nuestro caso particular,
antes de hacer nada.
-Este paquete está formado por 2 tareas puppet:
actualiza_bios_terminales: que hace modificaciones en la imagen para actualizar la bios en
el arranque de los terminales.
quita_actualizacion_bios_terminales: quita las modificaciones y deja la imagen como estaba,
despues de haber actualizado la BIOS.
Hay dos tareas por un motivo: si se pone solo la primera el script de actualizacion de la BIOS
queda en la imagen de los clientes de aula y se ejecutará cada vez que se arranquen estos. En
principio esto no es malo, pero tampoco queda bien actualizar la BIOS en cada arranque, simplemente
es suficiente con actualizarla una vez. Por ese motivo existe la tarea contraria, que desactiva esta
actualización.
No hemos encontrado la manera de poder hacerlo todo en una sola tarea puppet.
USO:
====
1) Descomprimir el fichero en /etc/puppet/modules del servidor principal, creará dos carpetas, una
para cada terea.
2) Es conveniente ir actualizando aula a aula. Supongamos que queremos actualizar la BIOS en el aula "a02".
-Añadimos a /etc/puppet/manifests/classes/clase-especifica.pp y añades lo siguiente dentro del fichero:
node "a02-pro" inherits default {
include "actualiza_bios_terminales"
# include "quita_actualizacion_bios_terminales"
}
-Nos vamos fisicamente al aula y forzamos con puppetd -t a que aplique la regla, sin esperar a que
lo haga automaticamente.
-Cuando haya acabado, abrimos controlaula/aulalinex y encendemos todos los terminales. Es muy
importante que se enciendan todos por completo hasta la pantalla de login, ya que si alguno no
arranca su BIOS no se actualizará.
-Cuando veamos que todos los terminales tienen la pantalla de login de Lenny, los apagamos.
-Nos conectamos al servidor del centro y de nuevo editamos clase-especifica, descomentando el segundo
include y comentando el primero:
node "a02-pro" inherits default {
# include "actualiza_bios_terminales"
include "quita_actualizacion_bios_terminales"
}
-Ahora forzamos de nuevo un puppetd -t en el servidor de aula para asegurarnos en el momento
de que se quita la actualización de la BIOS de la imagen de los clientes. Tampoco es necesario
hacerlo en ese momento, podemos dejar que puppet lo haga cuando toque, pero yo prefiero hacerlo
cuanto antes y ya no me preocupo mas.
-Por último, cuando se haya ejecutado la regla correctamente, editamos de nuevo clase-especifica
y la quedamos (tambien podemos borrar los include):
node "a02-pro" inherits default {
# include "actualiza_bios_terminales"
# include "quita_actualizacion_bios_terminales"
}
-Y ya está. Si encendemos un terminal cualquiera y entramos en su BIOS con F2 (o la tecla que
corresponda) veremos que ya tiene la BIOS tal como hicimos la copia.
3) Repetir estos pasos para todas las aulas cuando vayan quedando libres.
4) Tampoco es necesario estar fisicamente en las aulas si todo va bien. Podemos conectarnos con ssh -X
al servidor de aula, hacer las actualización por puppet, abrir el aulalinex remotamente, encender
los equipos y si se encienden todos podemos estar seguros de que se les ha actualizado la BIOS.
Solo tendriamos que ir al aula fisicamente si no se ha llegado a encender algún equipo concreto,
para ver que le pasa y encenderlo tu a mano.
IMPORTANTE: COMO GENERAR UNA COPIA DE LA BIOS A NUESTRA MEDIDA.
===============================================================
Leer esto si queremos tener una versión personalizada de la BIOS, hecha a nuestro gusto, o bien los
equipos de nuestro centro no son Fujitsu P300 y por tanto la copia que se adjunta a la tarea no debería
funcionar. Los ficheros clave son dos (están en /etc/puppet/modules/actualiza_bios_terminales/files):
* cmospwd: este es el ejecutable que permite clonar y restaurar la configuración de la BIOS.
Está sacado del CD de rescate de los servidores de aula, ya que es el que usa backharddi
para machacar la BIOS de los servidores al restaurar la imagen.
* cmosbackup: este fichero es el que almacena la copia de la configuración de la BIOS, siempre
tiene 384 bytes (o al menos eso me parece a mi).
Los pasos son:
-Entrar en la BIOS del equipo y modificarla a nuestro gusto (orden de arranque, clave de la BIOS,
activar/desactivar USB, LPT1, etc).
-Arrancar un Linux en el equipo y copiar el fichero cmospwd a la carpeta /root de dicho Linux. Podemos
copiarlo desde una unidad de red compartida por nfs, por scp, con wget.
-Como usuario root hacemos:
./cmospwd /d /w cmosbackup
y hará la copia de la configuración BIOS en el fichero cmosbackup (podemos poner otro nombre, pero la
tarea puppet esta configurada para usar ese nombre en concreto).
-Ese fichero cmosbackup lo metemos en la tarea puppet sobreescribiendo el que hay en
/etc/puppet/modules/actualiza_bios_terminales/files
del servidor nfs (lo mas comodo es copiarlo por scp), y ya podremos usar la tarea puppet con nuestra
flamante BIOS.
-Si quermos restaurar la configuración a mano en un equipo suelto de por ahi (por ejemplo, un workstation),
copiamos al equipo los ficheros cmospwd y cmosbackup, abrimos un terminal y como root hacemos:
./cmospwd /d /r cmosbackup
Esto abre un menú con tres opciones:
1) Restaurar la configuracion
2) Restaurar la configuracion manteniendo la fecha y hora
3) No hacer nada,
Cogemos la segunda y ya está.
Si nos queremos ahorrar el paso de elegir opción podemos hacer:
echo 2 | /root/cmospwd /d /r /root/cmosbackup
=====================================================================================================================
Alfonso Pastor
IES Virgen de Guadalupe. 2010-11.
tareas_puppet/servidores_aula/quita_actualizacion_bios_terminales/leeme.txt
ACTUALIZACION BIOS
==================
Tarea puppet que actualiza la configuración de la BIOS de los ordenadores de los alumnos (ojo, no
actualiza la version de la BIOS, sino su configuracion). Util para poner la misma configuracon de
BIOS (orden de arranque, contraseña, configuracion USB/LPT1, etc) en todos los equipos sin tener
que ir entrando uno a uno y cambiarla a mano.
AVISOS:
=======
-Este paquete está preparado con la BIOS de los Fujitsu P300 y no deberia funcionar en equipos
distintos. Para prepararla otros equipos, leer bien este documento HASTA EL FINAL, especialmente
n el apartado de como generar una copia de seguridad de una BIOS para nuestro caso particular,
antes de hacer nada.
-Este paquete está formado por 2 tareas puppet:
actualiza_bios_terminales: que hace modificaciones en la imagen para actualizar la bios en
el arranque de los terminales.
quita_actualizacion_bios_terminales: quita las modificaciones y deja la imagen como estaba,
despues de haber actualizado la BIOS.
Hay dos tareas por un motivo: si se pone solo la primera el script de actualizacion de la BIOS
queda en la imagen de los clientes de aula y se ejecutará cada vez que se arranquen estos. En
principio esto no es malo, pero tampoco queda bien actualizar la BIOS en cada arranque, simplemente
es suficiente con actualizarla una vez. Por ese motivo existe la tarea contraria, que desactiva esta
actualización.
No hemos encontrado la manera de poder hacerlo todo en una sola tarea puppet.
USO:
====
1) Descomprimir el fichero en /etc/puppet/modules del servidor principal, creará dos carpetas, una
para cada terea.
2) Es conveniente ir actualizando aula a aula. Supongamos que queremos actualizar la BIOS en el aula "a02".
-Añadimos a /etc/puppet/manifests/classes/clase-especifica.pp y añades lo siguiente dentro del fichero:
node "a02-pro" inherits default {
include "actualiza_bios_terminales"
# include "quita_actualizacion_bios_terminales"
}
-Nos vamos fisicamente al aula y forzamos con puppetd -t a que aplique la regla, sin esperar a que
lo haga automaticamente.
-Cuando haya acabado, abrimos controlaula/aulalinex y encendemos todos los terminales. Es muy
importante que se enciendan todos por completo hasta la pantalla de login, ya que si alguno no
arranca su BIOS no se actualizará.
-Cuando veamos que todos los terminales tienen la pantalla de login de Lenny, los apagamos.
-Nos conectamos al servidor del centro y de nuevo editamos clase-especifica, descomentando el segundo
include y comentando el primero:
node "a02-pro" inherits default {
# include "actualiza_bios_terminales"
include "quita_actualizacion_bios_terminales"
}
-Ahora forzamos de nuevo un puppetd -t en el servidor de aula para asegurarnos en el momento
de que se quita la actualización de la BIOS de la imagen de los clientes. Tampoco es necesario
hacerlo en ese momento, podemos dejar que puppet lo haga cuando toque, pero yo prefiero hacerlo
cuanto antes y ya no me preocupo mas.
-Por último, cuando se haya ejecutado la regla correctamente, editamos de nuevo clase-especifica
y la quedamos (tambien podemos borrar los include):
node "a02-pro" inherits default {
# include "actualiza_bios_terminales"
# include "quita_actualizacion_bios_terminales"
}
-Y ya está. Si encendemos un terminal cualquiera y entramos en su BIOS con F2 (o la tecla que
corresponda) veremos que ya tiene la BIOS tal como hicimos la copia.
3) Repetir estos pasos para todas las aulas cuando vayan quedando libres.
4) Tampoco es necesario estar fisicamente en las aulas si todo va bien. Podemos conectarnos con ssh -X
al servidor de aula, hacer las actualización por puppet, abrir el aulalinex remotamente, encender
los equipos y si se encienden todos podemos estar seguros de que se les ha actualizado la BIOS.
Solo tendriamos que ir al aula fisicamente si no se ha llegado a encender algún equipo concreto,
para ver que le pasa y encenderlo tu a mano.
IMPORTANTE: COMO GENERAR UNA COPIA DE LA BIOS A NUESTRA MEDIDA.
===============================================================
Leer esto si queremos tener una versión personalizada de la BIOS, hecha a nuestro gusto, o bien los
equipos de nuestro centro no son Fujitsu P300 y por tanto la copia que se adjunta a la tarea no debería
funcionar. Los ficheros clave son dos (están en /etc/puppet/modules/actualiza_bios_terminales/files):
* cmospwd: este es el ejecutable que permite clonar y restaurar la configuración de la BIOS.
Está sacado del CD de rescate de los servidores de aula, ya que es el que usa backharddi
para machacar la BIOS de los servidores al restaurar la imagen.
* cmosbackup: este fichero es el que almacena la copia de la configuración de la BIOS, siempre
tiene 384 bytes (o al menos eso me parece a mi).
Los pasos son:
-Entrar en la BIOS del equipo y modificarla a nuestro gusto (orden de arranque, clave de la BIOS,
activar/desactivar USB, LPT1, etc).
-Arrancar un Linux en el equipo y copiar el fichero cmospwd a la carpeta /root de dicho Linux. Podemos
copiarlo desde una unidad de red compartida por nfs, por scp, con wget.
-Como usuario root hacemos:
./cmospwd /d /w cmosbackup
y hará la copia de la configuración BIOS en el fichero cmosbackup (podemos poner otro nombre, pero la
tarea puppet esta configurada para usar ese nombre en concreto).
-Ese fichero cmosbackup lo metemos en la tarea puppet sobreescribiendo el que hay en
/etc/puppet/modules/actualiza_bios_terminales/files
del servidor nfs (lo mas comodo es copiarlo por scp), y ya podremos usar la tarea puppet con nuestra
flamante BIOS.
-Si quermos restaurar la configuración a mano en un equipo suelto de por ahi (por ejemplo, un workstation),
copiamos al equipo los ficheros cmospwd y cmosbackup, abrimos un terminal y como root hacemos:
./cmospwd /d /r cmosbackup
Esto abre un menú con tres opciones:
1) Restaurar la configuracion
2) Restaurar la configuracion manteniendo la fecha y hora
3) No hacer nada,
Cogemos la segunda y ya está.
Si nos queremos ahorrar el paso de elegir opción podemos hacer:
echo 2 | /root/cmospwd /d /r /root/cmosbackup
=====================================================================================================================
Alfonso Pastor
IES Virgen de Guadalupe. 2010-11.
tareas_puppet/servidores_aula/quita_actualizacion_bios_terminales/manifests/init.pp
class quita_actualizacion_bios_terminales {
exec { "/bin/rm /opt/ltsp/i386/etc/rc2.d/S99updcmos.sh; /usr/sbin/ltsp-update-image --arch i386" :
}
}

Exportar a: Unified diff