DRBL amb Clonezilla SE

De Cacauet Wiki
Dreceres ràpides: navegació, cerca

DRBL = Diskless Remote Boot for Linux. És un sistema per arrencar màquines per xarxa basades en PXE (Preboot eXecution Environment).

Clonezilla és l'eina de clonació de programari lliure. És un compendi de comandes unides juntament amb un sistema d'arranc basat en Debian. Les solucions per clonació són bàsicament:

  • Clonezilla CD. Permet clonar des de USB, CD, per xarxa, etc. però sempre en mode Unicast.
  • Clonezilla SE (Server Edition). Permet clonacions per xarxa en mode Multicast i sense CD utilitzant el DRBL com a base.


    • L'avantatge del multicast és que podem clonar moltes màquines alhora, ocupant un mínim d'amplada de banda de xarxa. O sigui que clonar una classe sencera (jo ho he provat amb èxit amb uns 30 PCs) pren el mateix temps que 1 de sol, uns 20min.


Instal·lació del DRBL

La web de referència és: instal·lació de DRBL.

Aquest procediment s'ha comprovat amb una Ubuntu LTS 10.04 (Lucid Lynx).

El document no és molt elegant, tot i que explica en detall el què cal fer:

  1. Cal una instal·lació neta de Debian o Ubuntu LTS (p.ex. lucid 10.04).
  2. Afegir les fonts a /etc/apt/sources.list segons la versió utilitzada (mirar el document d'instal·lació del DRBL).
  3. Afegir les claus per accedir a les fonts (de nou, consultar el document per si hi ha canvis):
    $ wget -q http://drbl.org/GPG-KEY-DRBL -O- | sudo apt-key add -
  4. Actualitzar fonts:
    $ sudo apt-get update
  5. Instal·lar arxius base de DRBL:
    $ sudo apt-get install drbl
    OJU: S'instal·laran a /opt/drbl
  6. Descarregar la resta d'arxius del DRBL i versions del S.O. a oferir als clients:
    # /opt/drbl/sbin/drblsrv -i
  7. Configurar les interfícies de xarxa del DRBL.:
    # /opt/drbl/sbin/drblpush -i
  8. Configurar la opció de Clonezilla adient:
    # /opt/drbl/sbin/dcs

Ja podeu provar d'arrencar màquines a clonar (o simplement arrencar-les sense HDD) a través de PXE (típicament prement F12).

Si necessiteu reconfigurar el Clonezilla podeu anar al darrer pas (comanda dcs).

Recollida d'adreces MAC

En un dels passos a seguir en la instal·lació, el DRBL ofereix recollir les adreces MAC dels PCs de l'aula per després poder assignar les IPs. És molt útil per assignar les IPs adequades a les màquines internes per DHCP (és obligatori tenir el DHCP pel PXE). TEnir les IPs ben assignades és important pel control de l'aula i utilitzar programes com el iTalc.

Mai he utiltizat la opció del DRBL de recollir les MACs, pinta bé, però com que sempre vull acabar d'hora no ho faig i després m'he buscat el meu sistema: els demano als alumnes que m'enviin la seva MAC a través d'aquest formulari PHP (cal instal·lar, doncs, Apache i PHP en el PC del profe).

En total utiltizarem els següents arxius:

  • macs.php: script amb formulari per recollir les adreces MAC.
  • macs.txt: arxiu intermig amb les dades entrades pel formulari. Abans de continuar cal revisar-les per si hi ha algun error (el formulari no valida res).
  • genera-macs-dhcp.php: 2n script, genera l'afegitó que cal a l'arxiu dhcpd.conf per tal d'associar MACs i IPs. Cal executar-lo amb per línia de comandes, no amb l'Apache.


Codi per recollida de MACs i IPs

El script macs.php s'executa en l'Apache del servidor i escriu les dades en el fitxer macs.txt:

<html>
	<!-- ARXIU macs.php : cal executar-lo en l'Apache i genera macs.txt -->
	<head>
		<meta charset="utf-8" />
	</head>
	<body>
		<h1>Introdueix MAC PC aula CF5</h1>
		<form method="post">
			MAC:<input type="text" name="mac"><br>
			IP:<input type="text" name="ip"><br>
			Alumne:<input type="text" name="alumne"><br>
			<input type="submit" value="Envia"><br>
		</form>
 
		<div style="background-color:#bbbbbb;">
<table border="1">
	<tr>
		<td>MAC</td>
		<td>IP</td>
		<td>usuari</td>
	</tr>
 
		<?php
# introduim dades
if(isset($_POST['mac'])) {
	$fp = fopen("macs.txt","a+");
 
	if( fwrite($fp,"\n".$_POST['mac']."\t".$_POST['ip']."\t".$_POST['alumne'])."\n" )
		echo "<p>MAC ".$_POST['mac']." enregistrada correctament</p>
			<p>Gràcies per la col·laboració.</p>";
	else
		echo "<p>Problemes a l'escriure el fitxer</p>";				
	fclose($fp);
}
 
# mostrem dades
$arxiu=file("macs.txt");
#var_dump($arxiu);
$c = 0;
foreach ($arxiu as $linia) {
	echo "<tr>\n";
	$coses = explode("\t",$linia);
	echo "<td>".$coses[0]."</td>\n";
	echo "<td>".$coses[1]."</td>\n";
	echo "<td>".$coses[2]."</td>\n";
	echo "</tr>\n";
	$dades2[$c]["mac"]=$coses[0];
	$dades2[$c]["ip"]=$coses[1];
	$dades2[$c]["usuari"]=$coses[2];
	$c++;
}
?>
</table>
 
		</div>
	</body>
 
</html>

L'arxiu macs.txt que en resulta ha de pintar algo així (el nom de l'alumne només és per comprovacions i correccions posteriors):

00:0f:fe:e2:90:51       192.168.5.16    manel lopez
00:0f:fe:e2:91:6f       192.168.5.17    pere joan arnaus
00:0f:fe:e2:91:bd       192.168.5.34    fred astaire
00:0f:fe:e2:92:77       192.168.5.21    jaume rodergues
00:0f:fe:e2:91:4d       192.168.5.12    robert pi
...etc...


Script per generar l'arxiu pel DHCP

Aquest script genera-macs-dhcp.php agafa l'arxiu macs.php i genera les directives adequades per l'arxiu dhcpd.conf:

<?php
	/*
	 * Arxiu genera-macs-dhcp.php: s'executa per línia de comandes i la sortida surt per stdout
	 *  La sortida es pot redirigir a un arxiu per després afegir-ho a dhcp.conf
	 */
 
	function compara($a,$b)
	{
		if ($a["ip"]>$b["ip"])
			return true;
		return false;
	}
 
	$dades = file("macs-cf5.txt");
 
	$c = 0;
	foreach ($dades as $linia) {
		//echo "<tr>\n";
		$coses = explode("\t",$linia);
		$dades2[$c]["mac"]=$coses[0];
		$dades2[$c]["ip"]=$coses[1];
		$dades2[$c]["alumne"]=$coses[2];
		$c++;
	}
 
	# ordenem les dades segons IP
	usort($dades2,"compara");
 
	# volquem les dades a STDOUT	
	for ($c=0; $c<count($dades2);$c++) {
		echo "host cf3-".substr($dades2[$c]["ip"],-2,2)." {\n";
		echo "	hardware ethernet ".$dades2[$c]["mac"].";\n";
		echo "	fixed-address ".$dades2[$c]["ip"].";\n";
		echo "}\n";
	}
 
?>


A partir d'aquest podeu generar macs.dhcp amb el 2n script. Està en PHP també però cal executar-lo de forma interactiva. El resultat surt per stdout (pantalla) però ho podeu redirigir a l'arxiu que vulgueu:

$ php genera-macs-dhcp.php > macs.dhcp

I l'arxiu pel DHCP té aquesta pinta (ja surt ordenat):

host cf3-11 {
        hardware ethernet 00:0f:fe:e2:91:d9 ;
        fixed-address 192.168.5.11;
}
host cf3-12 {
        hardware ethernet 00:0f:fe:e2:91:4d ;
        fixed-address 192.168.5.12;
}
host cf3-13 {
        hardware ethernet 00:0f:fe:e2:8f:a1;
        fixed-address 192.168.5.13;
}
...etc...

Ara només cal que afegim el què hem generat al vostre arxiu DHCP del servidor (comproveu exactament on està el dhcpd.conf, pot variar segons versions). OJU no us equivoqueu o podeu carregar-vos la configuració del vostre servidor:

# cat macs.dhcp >> /etc/dhcp/dhcpd.conf

I reiniciem el servidor per fer efectius els canvis:

# /opt/drbl/sbin/drbl-all-service restart


Més chicha...

En Sergi Tur sempre és una referència: DRBL a la pàgina del Sergi Tur ...