Revisión 159
Añadido por Alfonso Pastor hace alrededor de 14 años
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
Tareas para actualizar masivamente la configuracion de las BIOS de los clientes ligeros