lalahop
Categorie: Administration système

Utiliser l’API de Piwik pour générer des rapports

Table des matières

L'API de Piwik permet, entre autres, de générer des rapports automatiques et/ou personnalisables.

Rappels de base sur l'API

L'API peut être interrogée via HTTP ou être utilisée directement dans vos scripts PHP. Voir ici pour des exemples : Piwik Analytics API – Calling Techniques. Ci-dessous, nous intégrerons l'API à un script PHP mais il est tout à fait envisageable de scripter l'appel à l'API via HTTP grâce à un script shell et à curl/wget. Quand on a compris une méthode, l'autre coule de source, seul le formalisme change.

Si je n'ai qu'un seul reproche à formuler à l'API, c'est son manque de documentation. Les prototypes des fonctions disponibles sont bien annoncés mais on ne nous explique pas toujours ce que la fonction attend en paramètre. Il faut alors aller lire le code source pour comprendre. De plus, l’hétérogénéité (ou le manque d'harmonisation) du code n'aide pas (ex. : pour certaines fonctions, on doit passer un tableau, pour d'autres une liste dont les termes sont séparés par une virgule ...).

Comment créer un rapport depuis l'API ?

Pourquoi créer un rapport via l'API alors que l'interface web le permet ? Parfois, la création d'un rapport via l'interface web échoue. Je n'ai pas encore cherché la cause du problème.

Voici le code :

<?php

	define('PIWIK_INCLUDE_PATH', realpath('./piwik')); //Répertoire racine de Piwik
	define('PIWIK_USER_PATH', realpath('./piwik')); //Idem
	define('PIWIK_ENABLE_DISPATCH', false);
	define('PIWIK_ENABLE_ERROR_HANDLER', false);
	define('PIWIK_ENABLE_SESSION_START', false);
	require_once PIWIK_INCLUDE_PATH . "/index.php";
	require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";
 
        //On créer le contrôleur
	Piwik_FrontController::getInstance()->init();
 
        //On prépare la requête que l'on souhaite effectuer
	$request = new Piwik_API_Request('
			method=PDFReports.addReport
			&idSite=1
			&description=test API
			&period=never
			&reportFormat=html
                        &reports=VisitsSummary_get,VisitTime_getVisitInformationPerLocalTime,Actions_getPageTitles,Actions_getOutlinks,Referers_getRefererType,Referers_getKeywords,Referers_getWebsites,Referers_getSearchEngines,UserCountry_getCountry,VisitorInterest_getNumberOfVisitsPerVisitDuration,VisitorInterest_getNumberOfVisitsPerPage,VisitFrequency_get,Provider_getProvider,UserSettings_getConfiguration
			&emailMe=0
			&token_auth=votretoken
	');

 
        //On exécute la requête
        $result = $request->process();
 
        //On affiche le résultat de la requête
	echo $result,'<br />';
?>

La méthode Piwik_API_Request permet de préparer une requête pour l'API. Les paramètres de cette méthode sont variables selon ce que l'on veut obtenir. Ici (seuls les paramètres peu ou pas documentés sont expliquées) :

  • method permet de spécifier ce que l'on veut obtenir. Ici, nous utilisons la méthode addReports du module PDFReports. Pour avoir une idée des opérations disponibles, il suffit d'aller dans la doc de Piwik (j'ai déjà donné un lien plus haut)
  • description permet de spécifier la description du rapport (voir interface web)
  • reportFormat permet de choisir un format de rapport (pdf ou html)
  • reports permet de choisir les informations (configuration matérielle du visiteur, heure de visite, ...) que l'on veut intégrer au rapport. La liste est disponible en appelant la méthode getReportMetadata du module API. Voir un exemple en ligne. Il suffit de récupérer l'uniqueId associé au rapport que vous voulez et de l'indiquer dans ce paramètre. Ici, on récupère, dans l'ordre : le récapitulatif des visites, les visites en fonction de l'heure locale, le titre des pages vues, les liens sortants, les types de referer (entrée directe, site web, ...), les mots clés dans les moteurs de recherche, les sites web, les moteurs de recherches d'où provient l'entrée, le pays du visiteur, la durée d'une visite, le nombre de pages par visite, la fréquence des visites, le FAI, la configuration complète du visiteur.
  • emailMe permet de demander la réception du rapport par courrier. Ici, on refuse (0).

Si la création du rapport fonctionne, l'API vous retourne l'id du rapport, sinon, l'API vous retourne un message d'erreur explicite.

Comment générer un rapport automatiquement depuis un script ?

Si vous avez compris l'exemple précédent, rien de bien compliqué ici : il suffit de lire la doc et les fichiers sources.

<?php
	define('PIWIK_INCLUDE_PATH', realpath('./piwik')); //Répertoire racine de Piwik
	define('PIWIK_USER_PATH', realpath('./piwik')); //Idem
	define('PIWIK_ENABLE_DISPATCH', false);
	define('PIWIK_ENABLE_ERROR_HANDLER', false);
	define('PIWIK_ENABLE_SESSION_START', false);
	require_once PIWIK_INCLUDE_PATH . "/index.php";
	require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";

        //On créer le contrôleur
	Piwik_FrontController::getInstance()->init();
        //On prépare la requête que l'on souhaite effectuer
	$request = new Piwik_API_Request('
			method=PDFReports.generateReport
			&idSite=1
			&idReport=2
			&date=2011-07-05
			&language=fr
			&period=month
			&reportFormat=html
			&outputType=2
			&token_auth=votretoken
        ');

 
        //On exécute la requête
        $result = $request->process();
?>

Explications :

  • idReport doit correspondre à l'id d'un rapport existant. Cet id est retourné par la méthode addReport ou est disponible dans la base de données et plus précisément dans la table prefixe_pdf. En remplaçant "prefixe" par le préfixe de vos tables Piwik.
  • outputType correspond à la manière dont le rapport sera sauvegardé. Si la valeur 1 est passée, alors le fichier sera disponible en téléchargement. Si la valeur 2 est passée, alors le fichier sera stocké sur le serveur, dans le repertoire piwik/tmp/assets/ . La valeur 1 est la valeur par défaut. Ces deux valeurs sont définies dans les constantes OUTPUT_DOWNLOAD et OUTPUT_SAVE_ON_DISK de la classe Piwik_PDFReports_API (fichier Piwik/plugins/PDFReports/API.php.

Là où cela devient intéressant, c'est dans le cadre d'un processus de sauvegarde secondaire. En effet, si vous n'avez jamais exporté vos données sur une longue période, il est fastidieux de le faire à la main.

L'API possède une option YYYY-MM-DD,YYYY-MM-DD pour le paramètre date et une option "month" pour le paramètre period. Cela permet donc de récupérer, comme le dit la doc, des informations pour chaque mois de la période donnée. Ex. : index.php?module=API&method=VisitsSummary.get&idSite=1&period=month&date=2010-07-01,2011-03-01&format=html permet de récupérer le récapitulatif des visiteurs pour chacun des mois compris entre juillet 2010 et mars 2011, au format html. Mais, cela ne fonctionne pas avec toutes les méthodes de l'API. C'est notamment le cas avec le module live ou le module PDFReports.

Il va donc falloir scripter afin de récupérer un rapport par mois, tous les mois d'une période donnée. Une simple boucle et l'utilisation de la classe DateTime suffiront. Cela donne :

<?php
	define('PIWIK_INCLUDE_PATH', realpath('./piwik')); //Répertoire racine de Piwik
	define('PIWIK_USER_PATH', realpath('./piwik')); //Idem
	define('PIWIK_ENABLE_DISPATCH', false);
	define('PIWIK_ENABLE_ERROR_HANDLER', false);
	define('PIWIK_ENABLE_SESSION_START', false);
	require_once PIWIK_INCLUDE_PATH . "/index.php";
	require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";
 
        //On créer le contrôleur
	Piwik_FrontController::getInstance()->init();
 
        //On prépare la période sur laquelle on va travailler
	$dateDebut = '2010-08-01';
	$dateFin = '2011-08-01';	
	$dateInc = new DateTime($dateDebut);

 
        //Tant que la date qui va être incrémenté n'est pas égale à la date de fin ...
	while ($dateInc->format('Y-m-d') != $dateFin)
	{	
                // ... on prépare la requête ...

	        $request = new Piwik_API_Request('
				method=PDFReports.generateReport
				&idSite=1
				&idReport=1
				&date='.$dateInc->format('Y-m-d').'
				&language=fr
				&period=month
				&reportFormat=html
				&outputType=2
				&token_auth=votretoken
		');

 
		// ... et on l’exécute ...
		$result = $request->process();
 
                // ... et enfin on incrémente la date sur laquelle on travaille		
		$dateInc->modify('+1 month');
	}
?>

ÉDIT 31/07/2011 à 1h12 :
Le script ci-dessus peut-être optimisé. Nous profitons de l'opérateur d'égalité (pas d'identité !) qui permet de faire la différence entre deux objets d'une même classe en fonction de la valeur de leur attributs. Ainsi, nous ne faisons plus appel à la méthode "format()" de la classe DateTime. Ce qui donne :

        // code identique
        $dateDebut = new DateTime('2010-08-01');
        $dateFin = new DateTime('2011-08-01');	
 
        //Tant que la date qui va être incrémenté n'est pas égale à la date de fin ...
	while ($dateDebut != $dateFin)
	{
		// code identique
	}

Côté performance, cela est insignifiant : environ 0.0012 secondes d'écart entre les deux scripts, en faveur du deuxième script. Mesure effectuée avec la fonction xdebug_time_index() de XDebug, en ne faisant rien d'autre qu'afficher un message avec echo dans la boucle while et en prenant une période de 490 mois .
Fin de l'édit

Comment débloquer la limite du nombre de lignes de chaque tableau ?

Comme je l'ai déjà dit, dans un rapport, le nombre de lignes par tableau est limité (ex. : seulement les 30 mots-clés les plus utilisés sont affichés).

L'API précise qu'il existe un paramètre optionnel, filter_truncate, qui permet de changer cette limite. Néanmoins, ce paramètre est contourné par le module PDFReports. C'est dans le fichier /piwik/plugins/PDFReports/API.php que cela se passe :

Lignes 313-314 :

$filterTruncateGET = Piwik_Common::getRequestVar('filter_truncate', false);
$_GET['filter_truncate'] = 30;

Lignes 333-337 :

// Restore values
if($filterTruncateGET !== false)
{
        $_GET['filter_truncate'] = $filterTruncateGET;
}

Bien que cette option a sans doute été désactivée pour des raisons de performances, il y a un moyen de la réactiver :

Il suffit de remplacer les lignes 313/314 par :

$_GET['filter_truncate'] = $filterTruncateGET = Piwik_Common::getRequestVar('filter_truncate', false);

Et de commenter les lignes 333-337.

Ensuite, vous pouvez utiliser filter_truncate. Avec ce code, les tableaux du rapport généré feront jusqu'à 100 lignes. Ainsi, dans le rapport sur les mots-clés utilisés, vous aurez le top 100 au lieu du top 30 :

$request = new Piwik_API_Request('
		method=PDFReports.generateReport
		&idSite=1
		&idReport=1
		&date='.$dateInc->format('Y-m-d').'
		&language=fr
		&period=month
		&reportFormat=html
		&outputType=2
                &filter_truncate=100
		&token_auth=votretoken
');

Comment utiliser l'API pour générer des rapports plus personnels

De nombreuses méthodes existent dans l'API Piwik. Cela vous permet de vous fabriquer un rapport sur mesure (avec uniquement les informations que vous voulez) ou de surveiller une seule information (le nombre de visiteurs uniques du mois, par exemple). De plus, l'API donne accès à des informations que les rapports n’intègrent pas (ex. : le module live n'apparait pas dans les rapports), ce qui permet un export des données.

C'est ici que je vous laisse car vous trouverez des exemples dans la documentation de Piwik.

PS : Les codes donnés ci-dessus n'ont pas vocation à être utilisés en production sans amélioration. Par exemple : il n'y a pas de contrôle des erreurs.

PS2 : Ce billet n'évoque pas la Piwik Tracker API. Il peut tout de même être intéressant de jeter un oeil à la documentation, pour, par exemple, prendre un minimum en compte les utilisateurs ayant désactivé javascript.

De la bonne sauvegarde de ses applications web

Table des matières

Dans ce billet, je vais vous parler de la sauvegarde de vos applications web (site classique, CMS, ...). Évidemment, je ne vais pas parler de tous les cas et vous devriez donc adapter ce billet à votre situation. Ce billet a plus vocation à expliquer la méthodologie à mettre en place plutôt que l'exhaustivité des situations. Je ne parlerai pas des motivations qui peuvent vous amener à réaliser des sauvegardes ou des principes de base d'une bonne sauvegarde (régulière, garantissant l'intégrité des données, ...) car c'est du vu et revu.

Sauvegarde des fichiers

La première chose à faire est de sauvegarder les fichiers de votre application. Le protocole est au choix : FTP, FTPs, SCP, ... Il convient de se demander ce qu'il faut sauvegarder. En effet, si dans le cas d'une application @home (= personnelle), il convient de garder l'intégralité de l'arborescence, ce n'est pas nécessaire avec un CMS utilisant une base de données, par exemple. Exemple : pour WordPress, seul le dossier wp-content/uploads est important. Le reste (plugins, thème, reste des fichiers) peut facilement être récupéré et réinstallé.

Si jamais votre application web stocke ses données dans des fichiers, je vous conseille, dans un souci de cohérence des données sauvegardées, de bloquer l'accès à l'application durant la sauvegarde. Un fichier .htaccess placé à la racine de votre application web avec ce contenu devrait suffire :

Deny from all

Note : Non, je ne pense pas que bloquer l'accès à votre site personnel durant 2 minutes vous soit dommageable, surtout si vous le faites dans le créneau horaire où vous avez le moins de visiteurs. Après, pour les grosses applications/applications professionnelles, on peut discuter de ce principe.

Sauvegarde de la base de données

Si votre application utilise une base de données, il convient évidemment d'en exporter les données. Là encore, les méthodes sont nombreuses selon l’accès que vous avez au serveur : commande (mysqldump, pg_dump, ...) ou application web (phpmyadmin, phpPgAdmin, ...), etc..

Là encore, je vous conseille de bloquer l'accès à l'application durant la sauvegarde.

Voici les paramètres que j'utilise avec phpmyadmin (cela peut-être adapté à la commande mysqldump sans aucune difficulté) :
On vérifie que toutes les tables sont sélectionnées. On vérifie que le mode de sauvegarde est bien SQL. On vérifie que les rubriques "Structure" et "Données" sont bien cochées afin d'exporter l'intégralité des données.

Enclose export in a transaction // Utiliser le mode transactionnel : utilise le principe des transactions : si la sauvegarde se termine alors elle sera complète, sinon elle ne vous sera pas proposée. C'est un mode "tout ou rien". Je pense que c'est une sécurité et qu'il vaut mieux l'activer.

Disable foreign key checks // Désactiver la vérification des clés étrangères : évidemment, on laisse cette option désactivée ... dois-je vraiment expliquer pourquoi ?

Add DROP TABLE / DROP VIEW // Ajouter DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT : permet, lors de la restauration, de supprimer la table et la récréer si elle existe encore dans la base. Cette option est une bonne idée et devrait être cochée. Cela garantit que des anciennes données (sauvegarde) ne seront pas mélangées avec les nouvelles données. On obtient donc une garantie de cohérence des données. Si la sauvegarde commence à dater, il est par contre évident que l'on perd beaucoup de données. Mais une sauvegarde doit être régulière donc ce problème ne se pose pas ;).

Add IF NOT EXISTS // Ajouter IF NOT EXISTS : Si elle n'est pas présente et qu'une table porte le même nom lors de la restauration, vous aurez une erreur "Table already exists" et rien ne sera fait. Si elle est présente et qu'une table porte le même nom, vous n'aurez pas l’erreur précédente car le script n'essayera pas de recréer la table mais vous aurez une erreur en rapport avec les index lors de l'insertion des données dans la table ("Duplicate entry 'Dodo-1' for key 'PRIMARY' "). Et là, rien ne vous dit que des données n'ont pas été insérées avant que le SGBD ne rencontre une clé identique et vous en informe. Bref, cette option n'est pas une bonne idée.

Complete inserts ou Extended inserts // Insertions complètes ou Insertions étendues : il convient d'activer les deux. Voir pourquoi ici.

Use delayed inserts // Insertions avec délais : cette option n'est pas une bonne idée. Elle permet de mettre en queue les insert si la table est déjà utilisée. Une bonne restauration doit se faire offline pour éviter toute perte de données/incohérence donc nous n'avons pas besoin de cette option.

Use ignore inserts // Ignorer les erreurs de doublons : cette option n'est pas non plus une bonne idée : si des doublons existent au niveau des indexes, il vaut mieux en être informé que d'ignorer leur présence (même s’il valait mieux découvrir leur présence avant de faire une restauration post-crash, je suis d'accord :P).

Export type // Type d'exportation : insert. Update suppose que les données soient présentes, ce qui n'est pas le cas après un crash et replace peut insérer des incohérences entre plusieurs tables dans le cas où on restaure qu'une seule table, par exemple. Le mieux reste donc l'option DROP + Insert.

Le reste des options n'a pas d'importance : on peut choisir d'exporter les triggers, les vues, etc., et on laissera le reste des options sur leurs valeurs par défaut : nous avons réglé l'essentiel.

On vérifie que la case "Save as file" // "Transmettre" est cochée. On choisit également un mode de compression.

On lance la sauvegarde.

Sauvegarde du contenu "en clair"

Il me paraît important de sauvegarder les données de l'application web au format texte brut (ou autre format humainement lisible, libre et ouvert pour les données non représentables textuellement) quand cela est possible. Cela permet d'une part, d'être plus indépendant de l'application web utilisée qu'un script de conversion qu'il faudra créé lorsque l'on voudra changer de CMS, par exemple. D'autre part, cela permet d'avoir une sauvegarde humainement compréhensible dans le cas où la sauvegarde principale ne fonctionne plus (je pense notamment à un dump SQL refusant d'être restauré).

Cette sauvegarde devrait être réalisée à la main plutôt que par un logiciel/extension. Je vous rappelle, en effet, qu'un logiciel est forcement buggé (ou insuffisamment testé).

En cas de crash complet, il faudra réinjecter les données à la main dans l'application quand c'est possible et nécessaire (cas des billets d'un blog) ou bien garder ces sauvegardes en souvenir (cas des stats d'un site).

Évidemment, tout cela n'est pas toujours possible selon le volume de données, leur nature, ...

Je vais néanmoins vous donner deux exemples :

WordPress

Le plus important ici, c'est bien évidemment les billets que vous avez publié, voire les commentaires de vos visiteurs.

Pour conserver vos billets, il suffit de créer un bête fichier texte ayant une structure comme celle-ci, par exemple :
Titre :
Auteur (si plusieurs posteurs) :
Date de publication :
Catégories :
Mots-clés :
Contenu :

Il suffit ensuite de remplir ce modèle avec les données issues de l'administration de WordPress et plus précisément de la page vous permettant de modifier les billets. Pensez à sauvegarder les balises HTML, tout quoi.

Pour conserver les commentaires de vos visiteurs, il suffit de créer un bête fichier texte ayant une structure comme celle-ci, par exemple :
Auteur :
Email :
Site Web :
Date :
Contenu :

Il suffit ensuite de remplir ce modèle avec les données issues de l'administration de WordPress et plus précisément de la page vous permettant de modérer les commentaires.

Si les commentaires vous tiennent à cœur et que vous avez un blog à fort trafic, vous pouvez toujours envisager l'écriture d'un script ...

Piwik

Ici, le plus important, c'est les statistiques. Un plugin, PDFReports, permet la création de rapports au format PDF ou HTML. Il peut même vous l'envoyer par mail à une fréquence déterminée.

Si vous n'avez pas sauvegardé vos statistiques et que vous avez installé Piwik il y a peu de temps

Vous pouvez envisager d'utiliser PDFReports. Cliquez sur le lien "Rapports e-mail" dans le header de l’interface web de Piwik. Dans le calendrier, choisissez la période à exporter. Cliquez ensuite sur le lien "Créer et planifier un rapport". Saisissez une description de la sauvegarde. Choisissez "Jamais" dans la liste déroulante "Planification courriel" et décochez "Envoyer à moi". Choisissez HTML comme format du rapport. Choisissez les données que vous souhaitez exporter. Enfin, cliquez sur le bouton "Mettre à jour le rapport". Cliquez sur "Télécharger" pour récupérer le rapport.

Maintenant, pour chaque période que vous souhaitez sauvegarder, cliquez sur le calendrier, choisissez la période et cliquez sur "Télécharger".

Note : Si, quand vous cliquez sur le bouton "Mettre à jour", une ligne "Chargement des données" apparaît mais ne disparait pas ou si votre rapport n'apparait pas dans la liste, pendez à actualiser la page (F5) : ceci est probablement dû à un problème avec le cache.

Néanmoins, les rapports ont une quantité limitée de données (ex. : les 30 derniers mots-clés). Si vous souhaitez outrepasser cela (il faut néanmoins se poser la question de la pertinence de la sauvegarde de ces données supplémentaires vis-à-vis du poids qu'elles vont occuper), regarder ci-dessous.

Si vous n'avez pas sauvegardé vos statistiques et que vous avez installé Piwik il y a longtemps

Il faut utiliser l'API de Piwik pour générer, de manière automatique, un rapport pour une période donnée. Vous pouvez également débloquer la limite de lignes dans chaque rubrique du rapport comme expliqué ci-dessus. Enfin, dans le cas où la création du rapport est impossible depuis l'interface web (je n'ai pas compris pourquoi cela bug chez certains hébergeurs), l'API permet de créer un rapport.

Ces cas d'utilisation sont évoqués, pour plus de clarté, dans un autre billet : Utiliser l’API de Piwik pour générer des rapports

Essayer ses sauvegardes

N'oubliez pas de toujours essayer vos sauvegardes. Si vous avez sauvegardé votre base de données, essayez de la restaurer dans une autre base, si vous avez sauvegardé vos fichiers, essayez-les sur un autre serveur. Ce n'est pas compliqué de se monter un serveur de test local (pour ceux qui n'en ont pas encore et qui effectuent leurs modifications directement sur le serveur de production) : il y a le moyen artisanal (tout installer et configurer à la mano) ou utiliser des logiciels qui font tout à votre place (ex. : WampServer).

Enfin n'oubliez pas :

  • Faites un plan de sauvegarde de vos applications web qui leur correspondent. Il est vain d'appliquer bêtement un modèle donné sans réfléchir aux données que l'on doit sauvegarder.
  • Les sauvegardes, c'est comme le sexe chez les adolescents 😉

Table des matières

Récemment, j'ai dû déployer une solution permettant de préparer rapidement les nouvelles machines entrantes dans le parc informatique. La solution retenue et installée est Clonezilla Server Édition. Ce billet se propose de vous exposer les différentes phases de ce projet : la réalisation d'un cahier des charges, le choix de la solution ainsi que son installation et son utilisation.

Situation initiale

Chaque année, 30 % à 40 % du parc informatique est renouvelé, soit environ une cinquantaine de machines. Nous devons donc préparer les nouvelles machines. Cette préparation est longue puisqu'elle comporte l'installation et la personnalisation (ex. : désactivation des services inutiles) de Windows, l'installation des pilotes de périphériques, l'installation des logiciels qui sont communs à tous les utilisateurs.

Par chance, les machines reçues la même année sont homogènes d'un point de vue de leur configuration matérielle. Il n'y a qu'à de rares occasions que les machines sont hétérogènes. Par exemple : une année, nous avions deux modèles de machine.

De ce fait, nous utilisons le principe des images disque : nous installons et personnalisons Windows sur une seule machine, nous installons les pilotes de périphériques associés ainsi que les logiciels. Puis nous réalisons une image disque que nous restaurons sur toutes les autres machines. Le logiciel de clonage est imposé : il s'agit de True Image d'Acronis.

Comme toutes les machines sont dorénavant livrées en une seule vague, nous avons décidé, après réflexion, d'automatiser le processus de restauration de l'image disque sur toutes les machines, via le réseau.

D'autres solutions que le clonage en réseau peuvent correspondre à vos besoins, notamment si vos machines ne sont pas homogènes.

Il existe des produits logiciels qui permettent le déploiement de Windows et/ou de distribution GNU/Linux et de logiciels. À titre d'exemple, nous pouvons citer Microsoft Windows Deployment Services, DRBL ou bien encore WPKG. Néanmoins ces produits ne nous conviennent pas pour deux raisons. La première : le déploiement se déroule en plusieurs phases : il faut déployer Windows, puis les pilotes de périphériques puis les logiciels. En admettant que cela soit possible (je pense au déploiement des pilotes), cela reste fastidieux. La deuxième : nous sommes déjà habitués à l'utilisation des images disques. Il s'agit donc d'une évolution de notre mode de fonctionnement plus qu'une révolution.

Nous avions aussi la possibilité de transformer les machines clientes en des clients légers. Malgré les avantages que ce modèle propose (administration centralisée, évolution limitée à l'acquisition d'un nouveau serveur, sécurité, etc.), il impose de réfléchir à de nouvelles problématiques (ex. : tolérance aux pannes du serveur). Nous n'avons pas retenu ce choix pour l'instant mais il pourrait être une évolution du SI dans un futur proche.

Nous avons décidé de ne pas configurer automatiquement les paramètres réseau après le clonage. Néanmoins, si cela vous intéresse, les outils NewSID ou SysPrep ou même des scripts batch en utilisant la commande netsh sont faits pour vous.

Concernant le BIOS, il est possible de configurer le BIOS des machines à distance mais cela est réservé, d'après ce que je sais, aux machines professionnelles. Intel Active Management Technology permet ce genre de choses.

Cahier des charges

Nous cherchons donc une solution de clonage en réseau. Les principaux critères de sélection de la solution seront :

  • Simplicité d'utilisation (l'installation peut être compliquée, mais l'utilisation au quotidien doit être simple (voir simpliste) puisqu'elle sera réalisée par des personnes moins compétentes).
  • Fiabilité.
  • Gratuité.
  • En français si possible.
  • La solution doit utiliser des composants logiciels éprouvés et doit être intégralement disponible sous une licence libre (GNU GPL, BSD, MIT, …).

Choix de la solution

Attention : la solution retenue l'est par rapport à nos besoins. Selon vos besoins, vous ne retiendrez peut-être pas la même solution.

Les solutions trouvées mais qui ne correspondent pas à nos besoins peuvent être rangées dans 4 catégories. Les logiciels présents dans ces catégories sont des exemples et la liste des logiciels présentés n'est pas exhaustive (ex. : nous pouvons rajouter UDPCast dans la catégorie des logiciels difficiles à prendre en main).

Les logiciels propriétaires et/ou payants

Exemples : Symantec Norton Ghost Solution Suite, Acronis Backup & Recovery 10 Advanced Server ...

Les logiciels obsolètes

Partimage serveur : utilitaire GNU/Linux sous licence libre (GNU GPL) permettant la création et la restauration d'image disque depuis un serveur. Il permet de copier uniquement les données utiles du système de fichier et d'ignorer, par exemple, les espaces vides. Néanmoins, le support du NTFS, système de fichiers propre aux systèmes d'exploitation de Microsoft depuis Windows XP est expérimental, ce qui le disqualifie au vu des besoins en terme de stabilité. De plus, le logiciel n'est plus maintenu. À titre d'exemple, nous pouvons citer le fait que le système de fichiers ext4, présent dans les distributions GNU/Linux depuis fin 2008 n'est toujours pas supporté par Partimage.

Les logiciels difficiles à prendre en main

G4U : utilitaire sous licence libre (BSD) permettant la création d'images disque bit par bit ce qui lui permet le support de tous les systèmes de fichiers. Mais, d'une part, il copie les espaces vides des disques durs, ce qui accroît la taille des images inutilement ainsi que la bande passante réseau et le temps de clonage nécessaires. D'autre part, l'utilisation de cet outil dans un contexte réseau s'avère difficile à mettre en place et à maintenir.

Les logiciels trop complets

OSCAR : l’Outil Système Complet d’Assistance Réseau est un logiciel sous licence libre (GNU GPL) qui permet de sauvegarder et de restaurer facilement un poste ou encore de cloner un ensemble de postes identiques. Cette solution est intéressante puisqu'elle permet de transformer chaque machine en serveur. En effet, chaque machine stocke OSCAR ainsi que l'image de son disque sur son propre disque dur. Ainsi, après toute modification sur un poste, on peut recréer l'image et la déployer sur tout le réseau. Autre fonctionnalité intéressante : il suffit de démarrer un poste sur un CD d'assistance pour restaurer automatiquement l'image disque en cas de problème. Des fonctionnalités qui sont intéressantes mais qui dépassent le cadre de nos besoins. Or, plus de fonctionnalités = plus de bugs potentiellement possibles.

La solution retenue

De ce fait, une dernière solution correspond à nos besoins : il s'agit de Clonezilla Server Édition.
Il s'agit de la version serveur du logiciel de clonage libre Clonezilla Live. Disponible sous une licence libre (GNU GPL) et en français, Clonezilla Server Édition repose sur des composants logiciels éprouvés : DRBL, Partclone, UDPCast, ... Une interface graphique est disponible, ce qui le rend simple d'utilisation au quotidien après, cependant, une installation qui peut paraître laborieuse. Il tourne sur les systèmes GNU/Linux les plus populaires (Debian, Fedora, CentOS, etc.).

Un mot de réseau

Voici le schéma réseau de notre installation de Clonezilla Server Édition :

Schéma réseau de notre installation Clonezilla Server Édition

Comme l'illustre le schéma ci-dessus, les machines qui seront clonées seront isolées, au niveau physique et logique, sur un réseau indépendant. Cela permet d'éviter qu'un ordinateur du réseau "normal"/de production dont le BIOS est mal configuré ne soit sauvegardé/restauré par erreur. Le serveur de clonage est tout de même connecté au réseau afin de pouvoir être mis à jour via internet dans l'optique de supporter un ensemble de configurations matérielles toujours plus important. Néanmoins, le serveur ne sert pas de passerelle : les machines à sauvegarder/restaurer ne peuvent pas communiquer avec les machines du réseau "normal"/de production.

Note : il n'est pas nécessaire d'avoir deux cartes réseau. En effet, une seule carte réseau peut-être utilisée mais l'utilisation du serveur sera moins simple. Pour mettre le serveur à jour, il faut brancher la carte réseau sur le réseau "normal"/de production, faire la configuration réseau (ipconfig+route ou /etc/network/interfaces), effectuer la mise à jour puis brancher la carte réseau sur le réseau de clonage puis refaire la configuration réseau à nouveau.

Dans la suite de ce tutoriel, je considérerai que votre serveur possède deux cartes réseau. Je considérerai également que votre réseau de production n'utilise pas le protocole DHCP pour réaliser la configuration réseau de manière automatique des machines. Enfin, je considérerai que la connexion internet est accessible via un serveur mandataire (proxy) uniquement et que ce serveur se trouve sur le réseau de production. Si cela n'est pas le cas, vous devrez adapter ce tutoriel à votre installation.

Installation de Clonezilla Server Édition

Dans un premier temps, nous allons installer le système d'exploitation GNU/Linux Debian puis le configurer. Ensuite, nous installerons Clonezilla Server Édition et nous le configurerons.

Enfin, une étape facultative permettra la création de raccourcis dans le menu des applications et sur le bureau afin de rendre l'utilisation de Clonezilla Server Édition plus agréable.

Installation du système GNU/Linux Debian Squeeze

Note : le système GNU/ Linux Debian a été retenu pour son large support matériel, sa philosophie du Libre et sa stabilité (selon les dépôts utilisés, évidemment). Néanmoins, un autre système GNU/Linux peut-être utilisé.

  1. Démarrez l'ordinateur et mettez le CD dans le lecteur. Le BIOS étant configuré, vous n'avez rien d'autre à faire pour démarrer sur le CD.

  2. Un menu apparaît. L'option que nous souhaitons, « Install » est déjà sélectionnée. Validez avec la touche « Entrée » de votre clavier. À chaque fois que nous écrirons « Validez », comprenez que vous devez appuyer sur la touche « Entrée ».
    Installation GNU/Linux Debian Squeeze et2

  3. Sélectionnez votre langue (« French ») avec les touches fléchées de votre clavier. Validez.
    Installation GNU/Linux Debian Squeeze et3

  4. Sélectionnez votre situation géographique (= votre pays). La France est déjà sélectionnée donc validez.
    Installation GNU/Linux Debian Squeeze et4

  5. Choisissez la disposition des touches de votre clavier. « Français (fr-lation9) » est déjà sélectionnée donc validez.
    Installation GNU/Linux Debian Squeeze et5

  6. Le système va charger des composants supplémentaires depuis le CD. Laissez-le faire.

  7. Lorsque le système vous demande votre carte réseau principale, validez simplement.
    Installation GNU/Linux Debian Squeeze et7

  8. Nos réseaux ne disposent pas du protocole DHCP. La tentative de configuration automatique va donc échouer. Vous pouvez attendre ou appuyer sur la touche « Entrée » pour l'annuler directement.
    Installation GNU/Linux Debian Squeeze et8

  9. Le système vous demande ce que vous souhaitez faire compte tenu de l’échec de la configuration automatique du réseau. Choisissez de « Ne pas configurer le réseau maintenant » et validez.
    Installation GNU/Linux Debian Squeeze et9

  10. Le système vous demande quel nom vous souhaitez donner à la machine. Nous avons choisi « clone-srv » mais peu importe. Tapez le nom et validez.
    Installation GNU/Linux Debian Squeeze et10

  11. L'assistant vous demande le mot de passe du super-utilisateur (= root). Choisissez-en un et validez.
    Installation GNU/Linux Debian Squeeze et11

  12. L'assistant vous demande de confirmer le mot de passe du super-utilisateur. Saisissez-le et validez.
    Installation GNU/Linux Debian Squeeze et12

  13. On vous demande à présent le nom complet de l'utilisateur afin de créer un compte utilisateur « simple » (sans droits avancés). Choisissez-en un, saisissez-le et validez.
    Installation GNU/Linux Debian Squeeze et13

  14. Laissez l'identifiant proposé et validez.
    Installation GNU/Linux Debian Squeeze et14

  15. Saisissez le mot de passe de l'utilisateur et validez.
    Installation GNU/Linux Debian Squeeze et15

  16. Confirmez le mot de passe de l'utilisateur et validez.
    Installation GNU/Linux Debian Squeeze et16

  17. Nous passons maintenant à la phase de partitionnement du disque dur. Laissez l'assistant vous aider à partitionner l'intégralité du disque dur (« Assisté – utiliser un disque entier ») en validant simplement.
    Installation GNU/Linux Debian Squeeze et17

  18. L'assistant vous demande quel disque doit être partitionné. Dans notre cas, nous avons un seul disque dur donc validez.
    Installation GNU/Linux Debian Squeeze et18

  19. Choisissez « Partitions /home, /usr, /var et tmp séparées » comme schéma de partitionnement. Validez.
    Installation GNU/Linux Debian Squeeze et19

  20. L'assistant vous propose une organisation du disque dur. Confirmez-la en choisissant « Terminer le partitionnement et appliquer les changements ». Validez.
    Installation GNU/Linux Debian Squeeze et20

  21. L'assistant vous demande de confirmer l'organisation du disque avant son application. Choisissez « Oui » et validez.
    Installation GNU/Linux Debian Squeeze et21

  22. Le système formate votre disque dur et installe les composants de base. Bien que vous n'ayez rien à faire, ne partez pas trop loin, car l'assistant va bientôt avoir d'autres questions auxquelles vous devrez répondre.

  23. L'assistant vous demande s'il doit analyser un CD/DVD supplémentaire afin de prendre en compte des logiciels supplémentaires. Nous n'en avons pas besoin donc validez le choix « Non ».
    Installation GNU/Linux Debian Squeeze et23

  24. L'assistant vous demande si vous souhaitez participer, de manière anonyme aux statistiques d'utilisation des logiciels. Laissez le choix par défaut, « Non », et validez.
    Installation GNU/Linux Debian Squeeze et24

  25. Le système nous demande ensuite les logiciels supplémentaires à installer. Par défaut, « Environnement graphique de bureau » et « Utilitaires standard du système » sont cochés. Nous ne voulons rien de plus. Appuyez sur la touche tabulation de votre clavier et validez.
    Installation GNU/Linux Debian Squeeze et25

  26. Le système installe les logiciels supplémentaires sans vous questionner. Patientez.

  27. L'assistant vous demande si vous voulez installer le programme de démarrage (= bootloader) sur le secteur d’amorçage de votre disque dur. Choisissez « Oui » et validez.
    Installation GNU/Linux Debian Squeeze et27

  28. L'assistant vous informe ensuite que l'installation est finie. Retirez le CD du lecteur et validez.
    Installation GNU/Linux Debian Squeeze et28

Configuration du système d'exploitation GNU/Linux Debian Squeeze

Nous allons :

  • Configurer les cartes réseau
  • Configurer les deux logiciels (apt-get/wget) servant à l'installation de Clonezilla Server Édition et à la mise à jour du système pour qu'ils utilisent le serveur mandataire.
  • Configurer le logiciel de gestion des autres logiciels (apt-get) afin de permettre l'installation de Clonezilla Server Édition.
  • Configurer le système pour que le clavier numérique soit automatiquement activé dès le démarrage.
Configurer les cartes réseau

Note : je suppose ici que vous suivez le tutoriel et que donc votre dernière action sur la machine est le redemarrage de la machine suite à la fin de l'installation de GNU/Linux Debian.

Au redémarrage de la machine, vous arrivez sur l’écran de connexion. Connectez-vous. Attention : lors de la saisie du mot de passe, le pavé numérique n'est pas activé sur certaines machines.

Configuration GNU/Linux Debian Squeeze
  1. Ouvrez un terminal (= une console) en utilisant le menu Applications -> Accessoires -> Terminal. C'est cette manipulation qu'il faudra réaliser de nouveau si vous fermez le terminal ou si nous vous demandons d'ouvrir un terminal.

  2. Obtenez les droits du super-utilisateur. Pour cela, tapez la commande :

    su -

    (le tiret n'est pas une coquille) et validez. Saisissez le mot de passe du super-utilisateur et validez. Attention : même si rien n'apparaît à l'écran, la saisie du mot de passe est prise en compte par le système.
    Configuration réseau GNU/Linux Debian Squeeze et2

  3. Tapez la commande

    gedit /etc/network/interfaces

    et validez. C'est cette opération qu'il faudra réaliser lorsque nous vous demanderons de taper une commande.
    Configuration réseau GNU/Linux Debian Squeeze et3

  4. L’éditeur de texte gedit s'ouvre en chargeant le fichier /etc/network/interfaces. Ajoutez les lignes manquantes : de

    auto eth0

    jusqu'à

    broadcast 192.168.2.255

    Il convient bien evidement d'adapter cet exemple à votre plan d'adressage
    Configuration réseau GNU/Linux Debian Squeeze et4

  5. Enregistrez vos modifications et fermez l'éditeur.

  6. Vous revenez automatiquement sur le terminal. Tapez la commande

    service networking restart

    afin que le système affecte les adresses IP aux cartes réseau.
    Configuration réseau GNU/Linux Debian Squeeze et6

  7. Enfin, pour parfaire l'installation, il faut indiquer l'adresse IP du résolveur DNS dans le fichier /etc/resolv.conf. Cela peut se faire, de manière simple, en tapant la commande :

    echo "nameserver 192.168.0.2" > /etc/resolv.conf

    Configuration réseau GNU/Linux Debian Squeeze et7

Configurer les deux logiciels (apt-get/wget) servant à l'installation de Clonezilla Server Édition et à la mise à jour du système pour qu'ils utilisent le serveur mandataire

Note : si vous n'avez pas de serveur mandataire, ces étapes sont inutiles.

  1. Tapez la commande :

    gedit /etc/apt/apt.conf

    Un fichier vide s'ouvre dans l'éditeur de texte gedit. Tapez le contenu présent sur la capture d'écran, enregistrez le fichier et quittez l'éditeur.
    Configuration proxy GNU/Linux Debian Squeeze et1

  2. Tapez la commande :

    gedit /etc/wgetrc

    Recherchez, dans le fichier, les lignes entourées en rouge dans la capture d'écran ci-dessous puis modifiez-les afin qu'elles correspondent à celles présentes dans la capture d'écran ci-dessous. Enregistrez vos modifications et quittez l'éditeur.
    Configuration proxy GNU/Linux Debian Squeeze et2

Configurer le logiciel de gestion des autres logiciels (apt-get) afin de permettre l'installation de Clonezilla Server Édition.
  1. Tapez la commande :

    gedit /etc/apt/sources.list

    Effacez le contenu du fichier et remplacez-le par celui présent dans la capture d'écran ci-dessous. Vous pouvez ignorer les lignes de commentaires, c'est-à-dire les lignes commençant par le symbole « # ». Enregistrez vos modifications et quittez l'éditeur.
    Configuration apt GNU/Linux Debian Squeeze et1

  2. Tapez la commande :

    wget http://drbl.nchc.org.tw/GPG-KEY-DRBL && apt-key add GPG-KEY-DRBL

    Vous devez obtenir un résultat similaire à la capture d'écran ci-dessous.
    Configuration apt GNU/Linux Debian Squeeze et2

Configuration du système afin que le pavé numérique soit automatiquement activé au démarrage

Note : cette étape est facultative si votre pavé numérique est automatiquement activé au démarrage.

  1. Il est nécessaire d'installer le logiciel numlockx. Cela se fait à l'aide de la commande :

    apt-get update && apt-get install numlockx

    Configuration numlockx GNU/Linux Debian Squeeze et1

  2. Dans un deuxième temps, il est nécessaire de modifier un fichier de configuration. Tapez la commande :

    gedit /etc/gdm3/Init/Default

    À la fin du fichier, avant la ligne « exit 0 », tapez le paragraphe entouré en rouge dans la capture d'écran ci-dessous. Enregistrez le fichier et fermez l'éditeur.
    Configuration numlockx GNU/Linux Debian Squeeze et2

Installation de Clonezilla Server Édition

L'installation se résume à taper la commande suivante :

apt-get install drbl

Installation Clonezilla Server Édition (apt-get)

Configuration de Clonezilla Server Édition

La configuration de Clonezilla Server Édition se fait en deux étapes. D'abord, il faut configurer le serveur. Ensuite, il faut configurer l'environnement des clients.

Configuration du serveur

La configuration du serveur peut s'effectuer de deux manières : en tapant une seule commande ou en répondant à des questions. Nous avons choisi de taper une seule commande. Néanmoins, nous vous expliquerons les différents paramètres qu'elle comprend afin que vous puissiez faire, si vous le souhaitez, l’installation en répondant à des questions. De plus, les paramètres sont mis dans l’ordre des questions afin que vous vous y retrouviez.

Dans un terminal, il faut taper la commande :

/opt/drbl/sbin/drblsrv -i -n n -c n -k 0 -g y -o 2

Signification :

  • -n n : ne pas télécharger les images disque des distributions GNU/Linux les plus utilisées. Nous n'en avons pas besoin pour utiliser Clonezilla.
  • -c n : ne pas utiliser la sortie console sur les clients.
  • -k 0 : les clients utilisent une architecture CPU i386/i486. Ne changez pas ce paramètre, car il permet d'être compatible avec le plus large matériel possible (oui, j'ai eu du matériel entre les mains qui n'est pas compatible i686 durant la mise en place de ce serveur de clonage).
  • -g y : mettre à jour le système (équivalent de apt-get dist-update).
  • -o 2 : on utilise toujours le noyau Linux provenant du dépôt, pas celui de la machine local.

La configuration se fait de manière automatique. Il ne vous reste plus qu'à attendre le message de fin « Fait ! ».

Configuration Serveur Clonezilla Server Édition

Configuration Serveur Clonezilla Server Édition

Configuration de l'environnement des clients

Cette fois-ci, l'installation se fait obligatoirement en répondant à des questions.

Avant de procéder à cette étape, nous allons changer la couleur du texte et celle de l'arrière-plan de notre terminal. Nous faisons cela car le script d'installation écrit en jaune dans le terminal, ce qui rend le texte illisible.

Pour faire cela, il suffit d'aller dans le menu Édition ? Préférences du profil. En se rendant dans l'onglet « Couleurs », il est possible de changer la couleur du texte et celle de l'arrière-plan en décochant la case « Utiliser les couleurs du thème système ».

Configuration Terminal GNU/Linux Debian

Nous pouvons maintenant configurer l’environnement des clients grâce à la commande :

/opt/drbl/sbin/drblpush -i
  1. L'assistant vous demande de saisir le nom de domaine DNS. Laissez celui qui est proposé en validant.Configuration environnement des clients Clonezilla Server Édition et1

  2. Même réponse concernant le nom de domaine NIS/YP.
    Configuration environnement des clients Clonezilla Server Édition et2

  3. Même réponse concernant le préfixe du nom des clients.
    Configuration environnement des clients Clonezilla Server Édition et3

  4. L'assistant vous demande ensuite quelle carte réseau permet d'accéder à internet. Dans notre cas, il s'agit de la carte « eth0 ». Tapez donc « eth0 » et validez.
    Configuration environnement des clients Clonezilla Server Édition et4

  5. L'assistant vous demande si vous souhaitez enregistrer les adresses MAC des clients. Comme nos clients sont temporaires, cette opération serait fastidieuse puisqu'il faut l'effectuer pour chaque nouveau client. Nous refusons donc en tapant « n » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et5

  6. Le script nous demande si nous souhaitons réserver les mêmes adresses IP à nos machines clientes. Ceci se fait en enregistrant leurs adresses MAC. Néanmoins, pour la raison évoquée à la question précédente, nous refusons en tapant « n » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et6

  7. On vous demande ensuite, dans cet ordre, l'adresse IP à attribuer à la première machine qui demandera une adresse, puis le nombre total de machines. Laissez les choix proposés, à savoir : 12 machines dont les IP iront de 192.168.2.1 à 192.168.2.12 inclues. Le système vous demande ensuite si vous acceptez ces choix. Tapez « y » pour confirmer et validez.
    Configuration environnement des clients Clonezilla Server Édition et7

  8. Le système vous présente un schéma du réseau ainsi constitué et vous demande de confirmer. Validez.Configuration environnement des clients Clonezilla Server Édition et8

  9. Le système vous demande ensuite de choisir le mode de démarrage des clients. Choisissez l'option « Mode DRBL SSI » en tapant « 1 » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et9

  10. L'assistant vous demande ensuite le mode d’exécution de Clonezilla Server. Choisissez « Mode Clonezilla Box » en tapant « 1 » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et10

  11. Le système vous demande dans quel répertoire vous souhaitez conserver les images disque réalisées. Laissez le choix par défaut (/home/partimag) et validez. Évidement, vous pouvez choisir un autre dossier (ex. : /home/clone ou bien /dev/null ;)) car le script de sauvegarde/restauration sera lancé en root et aura donc les droits de lecture/écriture dans toute l'arborescence.
    Configuration environnement des clients Clonezilla Server Édition et11

  12. Le système vous demande s'il doit utiliser les partitions swap des clients. Infirmez en tapant « n » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et12

  13. L'assistant vous demande si les clients doivent utiliser un menu graphique ou textuel. Choisissez un menu textuel en tapant « 2 » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et13

  14. Les deux prochaines questions concernent des mots de passe qui peuvent être mis lors du démarrage des clients. Pour les deux, répondez par la négative en tapant « n » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et15

  15. Le système vous demande si vous souhaitez définir le prompt de démarrage des clients. Refusez en tapant « n » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et15

  16. Même réponse concernant l'utilisation d'un arrière-plan graphique dans le menu de démarrage.
    Configuration environnement des clients Clonezilla Server Édition et16

  17. Même réponse concernant l’accès au son, au lecteur CD, etc. sur les clients.
    Configuration environnement des clients Clonezilla Server Édition et17

  18. Répondez toujours négativement à la question concernant la création d'alias.
    Configuration environnement des clients Clonezilla Server Édition et18

  19. Refusez l'utilisation des clients DRBL en mode terminal en tapant « n » et en validant.
    Configuration environnement des clients Clonezilla Server Édition et19

  20. Le système vous demande ensuite si le serveur doit faire office de passerelle vers internet. Répondez « n » et validez.
    Configuration environnement des clients Clonezilla Server Édition et20

  21. Validez ensuite la demande de confirmation.
    Configuration environnement des clients Clonezilla Server Édition et21

  22. Le système vous demande encore une fois une confirmation avant de mettre en place la configuration. Tapez « y » et validez.
    Configuration environnement des clients Clonezilla Server Édition et22

  23. Attendez le message indiquant la fin de la procédure de configuration.
    Configuration environnement des clients Clonezilla Server Édition et23

Facultatif : créer des raccourcis dans le menu des applications et sur le bureau

Dans un premier temps, nous allons créer un raccourci vers Clonezilla Server Édition. Dans un deuxième temps, nous créerons un script permettant de mettre facilement à jour tout le système ainsi qu'un raccourci vers ce script.

ATTENTION : Si vous ne souhaitez pas créer ces raccourcis, sachez que la commande pour lancer Clonezilla Server Édition est :

/opt/drbl/sbin/dcs

Par ailleurs, les commandes pour mettre à jour le système sont les suivantes (en utilisant le compte super-utilisateur évidemment) :

apt-get update && apt-get dist-upgrade
/opt/drbl/sbin/drblsrv -i -n n -c n -k 0 – g y -o 2

/opt/drbl/sbin/drblpush -i -c /etc/drbl/drblpush.conf
reboot

La première commande met à jour la liste des logiciels disponibles et, en cas de succès, met à jour tout le système. La deuxième commande reconfigure le serveur DRBL. La troisième commande reconfigure l’environnement des clients. La dernière commande permet de redémarrer le serveur afin de s'assurer qu'on utilisera bien les derniers composants (notamment le dernier noyau Linux).

Dans le reste de ce tutoriel, je considérerai que vous avez créer les raccourcis. Si ce n'est pas le cas, il faudra adapter mes écrits à votre installation.

Création d'un raccourci vers Clonezilla Server Édition
  1. Il est nécessaire d'installer un logiciel supplémentaire qui permet de lancer des commandes comme si l'utilisateur la lançant était le super-utilisateur. Il s'agit du logiciel sudo. Pour l'installer, il faut taper la commande :

    apt-get install sudo
  2. Tapez la commande :

    usermod -aG sudo clone

    Cela a pour effet d'ajouter le compte utilisateur « clone » au groupe « sudo » car uniquement les membres de ce groupe peuvent obtenir les privilèges du super-utilisateur avec sudo. Il est nécessaire de fermer la session utilisateur « clone » pour que les modifications soient prises en compte.

  3. Tapez la commande :

    gedit /usr/share/applications/clonezilla.desktop
  4. Un fichier vide s'ouvre alors dans l'éditeur de texte. Remplissez-le avec les lignes contenues dans la capture d'écran ci-dessous. Enregistrez vos modifications et quittez l'éditeur.
    Création d'un raccourci sous GNOME pour Clonezilla Server Édition

  5. Un raccourci vers Clonezilla Server est disponible dans le menu Applications ? Outils système. Vous pouvez faire glisser ce raccourci sur le bureau afin d'avoir également un raccourci sur le bureau.

Création d'un script de mise à jour de tout le système
  1. Tapez la commande :

    gedit /home/clone/maj.sh
  2. Un fichier vide s'ouvre alors dans l'éditeur de texte. Remplissez-le avec les lignes contenues dans la capture d'écran ci-dessous. Enregistrez vos modifications et quittez l'éditeur.
    Création d'un script de mise à jour pour Clonezilla Server Édition

Création d'un raccourci vers le script de mise à jour
  1. Tapez la commande :

    gedit /usr/share/applications/maj.desktop
  2. Un fichier vide s'ouvre alors dans l'éditeur de texte. Remplissez-le avec les lignes contenues dans la capture d'écran ci-dessous. Enregistrez vos modifications et quittez l'éditeur.

  3. Un raccourci vers le script de mise à jour est disponible dans le menu Applications ? Outils système. Vous pouvez faire glisser ce raccourci sur le bureau afin d'avoir également un raccourci sur le bureau.
    Création d'un raccourci pour la mise à jour de Clonezilla Server Édition

Utilisation de Clonezilla Server Édition

L'utilisation se fait en deux temps. Dans un premier temps, on sauvegarde le disque dur de la machine modèle vers une image disque. Dans un deuxième temps, on restaure l'image disque sur le reste des machines entrantes dans le parc.

Sauvegarde de la machine modèle

  1. Cliquez sur l'icône « Clonezilla Server » présente sur le bureau.

  2. Le mot de passe du super-utilisateur vous est demandé. Saisissez-le. Attention : rien n'apparaît à l'écran mais votre saisie est tout de même prise en compte.
    Sauvegarde en réseau avec Clonezilla Server Édition et2

  3. L'assistant démarre et vous demande si la manipulation concerne une partie du parc ou la totalité. L'option « une partie des clients par IP ou adresse MAC » ne fonctionnera pas car nous n'avons pas fixé les adresses IP/MAC puisque nos clients sont temporaires. Donc, validez le choix « Sélectionner tous les clients ».
    Sauvegarde en réseau avec Clonezilla Server Édition et3

  4. Nous voulons démarrer Clonezilla donc choisissez « Démarrage mode Clonezilla » et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et4

  5. Clonezilla nous demande quel mode nous voulons. Le « mode expert » permet de définir des paramètres avancés (ex. : compression plus ou moins efficace/gourmande). Néanmoins, les options par défaut sont suffisantes donc validez le choix « mode débutant ».
    Sauvegarde en réseau avec Clonezilla Server Édition et5

  6. Nous voulons sauvegarder l'intégralité d'un disque dur donc choisissez l'option « Sauvegarde totale du disque » et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et6

  7. Nous voulons choisir le nom de l'image disque qui sera créée maintenant afin de ne pas avoir à agir sur le client. Validez donc le choix « Entrer maintenant le nom de l'image ».
    Sauvegarde en réseau avec Clonezilla Server Édition et7

  8. Choisissez un nom pour l'image disque, tapez-le et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et8

  9. Il faut à présent choisir le ou les disque(s) dur(s) à sauvegarder. Pas d'hésitation ici : tous nos disques ont la notation « sda » sous GNU/Linux. Dans notre cas, nous voulons sauvegarder la partition Windows et la partition de données (qui est vide) qui sont toutes deux contenues sur le premier disque. Nous allons donc taper « sda » et valider. Néanmoins, si la machine comporte 2 disques, tapez « sda sdb » pour sauvegarder les deux disques. Pour sauvegarder uniquement le deuxième disque, tapez « sdb ». Etc. .
    Sauvegarde en réseau avec Clonezilla Server Édition et9

  10. Nous souhaitons vérifier que l'image disque sauvegardée a été correctement réalisée donc validez l'option proposée « Oui, vérifier l'image sauvegardée ».
    Sauvegarde en réseau avec Clonezilla Server Édition et10

  11. À la fin du processus de sauvegarde, nous souhaitons éteindre la machine cliente. Choisissez l'option « Arrêter le client en fin de clonage » et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et111

  12. Nous ne souhaitons pas couper l'image disque en plusieurs morceaux afin de pouvoir la répartir sur plusieurs médiums différents. Il faut donc entrer une grande valeur. Rajoutez quelques zéros et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et12

  13. Clonezilla vous demande une confirmation. Validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et13

  14. Le terminal va se fermer.
    Vous pouvez démarrer la machine à cloner après l'avoir raccordée au réseau de clonage et avoir vérifié que son BIOS autorise le démarrage depuis le réseau.

    Aucune indication n'apparaît sur le serveur pour annoncer le début et/ou la fin du processus. Néanmoins, en observant le commutateur réseau, vous observerez une période avec un fort trafic réseau puis une période calme. Vous verrez également une forte période d'écriture sur le disque dur du serveur, suivie d'une période calme indiquant également le début et la fin de la sauvegarde. De plus, la machine cliente s’éteindra en fin de sauvegarde. Néanmoins, rien ne vous empêche de brancher un écran sur la machine cliente avant de la démarrer afin de surveiller le déroulement des opérations.

    Note : si vous n'utilisez pas les raccourcis et que vous lancez Clonezilla depuis la ligne de commande, alors vous verrez des messages s'afficher dans la console et vous indiquant la connexion de la machine au serveur ainsi que la fin de la sauvegarde.

    Si vous branchez un écran sur la machine cliente, voici ce que vous verrez :

    La machine cliente obtient une adresse IP via DHCP puis charge un menu de démarrage depuis le serveur via le réseau. Le menu s'affiche ensuite et le chargement d'un système GNU/Linux minimal, lui aussi récupéré sur le serveur, s'effectue.
    Sauvegarde en réseau avec Clonezilla Server Édition et14a

    Ensuite, le processus de sauvegarde s'effectue.
    Sauvegarde en réseau avec Clonezilla Server Édition et14b

  15. À la fin de la sauvegarde, il convient de faire le ménage dans les fichiers créés sur le serveur pour l'opération. Pour cela, cliquez sur l'icône Clonezilla Server sur le bureau. Le système vous demande le mot de passe du super-utilisateur. Tapez-le et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et15

  16. Confirmez, là encore, que l'opération concerne toutes les machines en validant le choix proposé (« Sélectionner tous les clients »).
    Sauvegarde en réseau avec Clonezilla Server Édition et16

  17. Choisissez ensuite l'option « Arrêt mode Clonezilla » dans le menu et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et17

  18. Les opérations de nettoyage sont effectuées et le terminal se ferme.

La création de l'image disque de la machine modèle est finie.

Restaurer l'image de la machine modèle sur les autres machines

  1. Cliquez sur l'icône « Clonezilla Server » présente sur le bureau afin de le lancer.

  2. Le mot de passe du super-utilisateur vous est demandé. Saisissez-le. Attention : rien n'apparaît à l'écran mais votre saisie est tout de même prise en compte.
    Restauration en réseau avec Clonezilla Server Édition et2

  3. L'assistant démarre et vous demande si la manipulation concerne une partie du parc ou la totalité. L'option « une partie des clients par IP ou adresse MAC » ne fonctionnera pas car nous n'avons pas fixé les adresses IP/MAC puisque nos clients sont temporaires. Donc, validez le choix « Sélectionner tous les clients ».
    Restauration en réseau avec Clonezilla Server Édition et3

  4. Nous voulons démarrer Clonezilla donc choisissez « Démarrage mode Clonezilla » et validez.
    Restauration en réseau avec Clonezilla Server Édition et4

  5. Clonezilla nous demande quel mode nous voulons. Le « mode expert » permet de définir des paramètres avancés (ex. : compression plus ou moins efficace/gourmande). Néanmoins, les options par défaut sont suffisantes donc validez le choix « mode débutant ».
    Restauration en réseau avec Clonezilla Server Édition et5

  6. Nous voulons restaurer l'intégralité du disque dur donc choisissez l'option « Restauration complète du disque » et validez.
    Restauration en réseau avec Clonezilla Server Édition et6

  7. À la fin du processus de sauvegarde, nous souhaitons éteindre la machine cliente. Choisissez l'option « Arrêter le client en fin de clonage » et validez.
    Restauration en réseau avec Clonezilla Server Édition et7

  8. Clonezilla Server vous demande ensuite quelle image disque doit être restaurée. Choisissez la bonne image dans la liste et validez.
    Restauration en réseau avec Clonezilla Server Édition et8

  9. Choisissez ensuite les disques durs à restaurer. Dans notre cas, il n'y a qu'un disque sauvegardé dans l'image mais dans le cas de plusieurs disques sauvegardés dans une même image, cette option s'avère utile pour ne pas restaurer tous les disques.
    Restauration en réseau avec Clonezilla Server Édition et9

  10. Il faut à présent sélectionner le mode de transmission réseau de l'image disque. « Unicast » consiste à envoyer l'information autant de fois qu'il y a de machines à restaurer. Ceci implique une forte charge pour le serveur et pour le réseau. « Broadcast » consiste à envoyer une seule fois l'information à l'ensemble des machines présentes sur le réseau. Libre ensuite aux machines de traiter l'information transmise. « Multicast » permet d'envoyer une seule fois l'information à un groupe de machines s'étant enregistrées dans le groupe de diffusion. Il s'agit d'une optimisation du mode broadcast puisque seules les machines ayant fait la demande reçoivent l'information. Nous allons donc utiliser le mode « multicast ». Validez cette option.
    Restauration en réseau avec Clonezilla Server Édition et10

  11. Nous devons maintenant définir la période de temps durant laquelle on attend les clients. « Clients to wait » permet de spécifier le nombre de machines qui doivent être attendues avant le lancement de la procédure. « Time to wait » permet de définir le délai d'attente des machines clientes. Ce délai commence à partir de l'enregistrement de la première machine cliente auprès du serveur. Enfin, « Clients+time to wait » est la réunion des deux modes précédents. Afin de nous assurer qu'aucun client ne sera ignoré si celui-ci ne démarre pas sur le réseau, choisissez l'option « clients to wait » et validez.
    Restauration en réseau avec Clonezilla Server Édition et11

  12. Indiquez le nombre de clients à attendre et validez.
    Restauration en réseau avec Clonezilla Server Édition et12

  13. Clonezilla vous demande une confirmation. Validez.
    Restauration en réseau avec Clonezilla Server Édition et13

  14. Clonezilla vous demande de confirmer que le matériel réseau est prêt pour la restauration multicast. Validez.

  15. Le terminal va se fermer.
    Vous pouvez démarrer les machines à restaurer après les avoir raccordées au réseau de clonage et avoir vérifié que leur BIOS autorise le démarrage depuis le réseau.

    Aucune indication n'apparaît sur le serveur pour annoncer le début et/ou la fin du processus. Néanmoins, en observant le commutateur réseau, vous observerez une période avec un fort trafic réseau puis une période calme. Vous verrez également une forte période de lecture sur le disque dur du serveur, suivie d'une période calme indiquant également le début et la fin de la sauvegarde. De plus, les machines clientes s’éteindront en fin de sauvegarde. Néanmoins, rien ne vous empêche de brancher un écran sur une des machines clientes avant de la démarrer afin de surveiller le déroulement des opérations.

    Note : si vous n'utilisez pas les raccourcis et que vous lancez Clonezilla depuis la ligne de commande, alors vous verrez des messages s'afficher dans la console et vous indiquant les machines qui se connectent au serveur ainsi que la fin de la restauration.

    Si vous branchez un écran sur une des machines clientes, voici ce que vous verrez :

    La machine cliente obtient une adresse IP via DHCP puis charge un menu de démarrage depuis le serveur via le réseau. Le menu s'affiche ensuite et le chargement d'un système GNU/Linux minimal, lui aussi récupéré sur le serveur, s'effectue.
    Restauration en réseau avec Clonezilla Server Édition et15a

    Ensuite, le processus de restauration de l'image va commencer.
    Restauration en réseau avec Clonezilla Server Édition et15b

  16. À la fin de la restauration, il convient de faire le ménage dans les fichiers créés sur le serveur pour l'opération. Pour cela, cliquez sur l'icône Clonezilla Server sur le bureau. Le système vous demande le mot de passe du super-utilisateur. Tapez-le et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et16

  17. Confirmez, là encore, que l'opération concerne toutes les machines en validant le choix proposé (« Sélectionner tous les clients »).
    Sauvegarde en réseau avec Clonezilla Server Édition et17

  18. Choisissez ensuite l'option « Arrêt mode Clonezilla » dans le menu et validez.
    Sauvegarde en réseau avec Clonezilla Server Édition et18

  19. Les opérations de nettoyage sont effectuées et le terminal se ferme.

L'image a donc été restaurée sur toutes les machines.

Mise à jour du serveur

Interêt de la mise à jour

Il est important de mettre à jour ce serveur de clonage de manière régulière. D'une part afin de garantir une correction des bogues découverts et donc une plus grande stabilité du serveur. D'autre part afin de pouvoir supporter le matériel récent, et donc, de ce fait, les machines clientes récentes. En effet, les mises à jour, notamment celles du noyau Linux amènent un support matériel élargi.

IMPORTANT : nous n'avons pas planifié de mises à jour automatiques du système afin d'éviter que des clients ne démarrent plus du jour au lendemain sans raison apparente et afin de ne pas gêner l'utilisation du serveur. En effet, puisqu'il n'est pas allumé en permanence, la mise à jour se ferait au démarrage du serveur. Or, si l'on allume le serveur, c'est qu'on en a besoin maintenant.

Comment mettre à jour ?

Si vous avez suivi la procédure pour créer un script de mise à jour ainsi qu'un raccourci vers celui-ci dans le menu et sur le bureau, vous avez juste à cliquer sur l'un de ces raccourcis pour mettre à jour l'intégralité du système.

Si vous n'avez pas suivi la procédure, vous devez mettre à jour le système en tapant les commandes suivantes (leur signification est expliquée dans la partie concernant la création des raccourcis :

apt-get update && apt-get dist-upgrade

/opt/drbl/sbin/drblsrv -i -n n -c n -k 0 – g y -o 

 
/opt/drbl/sbin/drblpush -i -c /etc/drbl/drblpush.conf
reboot

Dans tous les cas, si le serveur vous demande une confirmation pour effectuer la mise à jour, du type « Appuyez sur Entrée pour continuer » ou équivalent, validez.

Dépannage rapide : Les machines clientes ne démarrent pas !

Problème : Une ou plusieurs machines clientes démarrent depuis le réseau, mais la sauvegarde ne se fait pas (il n'y a pas de trafic ni d’écriture sur le disque dur du serveur). Vous avez branché un écran sur une des machines clientes et vous avez constaté que le menu s'affiche, que le système commence à se charger, mais que le chargement plante en affichant des lignes incompréhensibles.

Solution : Un composant matériel essentiel de la machine n'est pas pris en charge par le système GNU/Linux minimal qui est chargé sur les machines clientes par le serveur.

La seule solution est de tenter une mise à jour du serveur. Si le composant a été pris en charge dans les versions récentes des logiciels, alors les machines clientes pourront être clonées. Pour mettre à jour l'intégralité du système, veuillez vous reporter à la section « Mise à jour de la solution ».

Si le problème n'est pas résolu après une tentative de mise à jour, considérez que vous ne pouvez pas cloner la machine avec la solution avec Clonezilla Server Édition pour le moment.

ÉDIT du 11/07/2011 à 21h45 : J'ai oublié de le préciser mais si le menu apparait sur les postes clients mais que le noyau ne s’exécute pas, alors vous avez sans doute un problème d’incompatibilité entre l'architecture CPU réelle et celle choisie lors de la configuration du serveur. Par exemple : vous avez choisi l'architecture i686 alors que vos machines clientes ont l'i586 pour architecture. Dans ce cas-là, il existe une solution : reconfigurer le serveur et l'environnement des clients en choisissant une architecture antérieure à celle choisie auparavant. J'ai rencontré ce problème et cette solution l'a résolu. Néanmoins, si cela ne fonctionne pas pour vous, même avec l'architecture i386, alors vous avez sans doute un matériel qui n'est pas supporté par le système GNU/Linux minimal qui est chargé sur les machines.

Sources documentaires

Comme d'habitude, je vous indique les sites qui m'ont aidé dans la mise en place de mon projet et dans l'écriture de ce billet.

Astuces rapides

Table des matières

On remet le couvert pour un partage des connaissances 😛 . Rien de révolutionnaire une fois encore.

Différence entre SNAT, DNAT et masquerade

Commençons par étudier les définitions de chacun de ces termes :

SNAT :
Selon le man d'iptables :

It specifies that the source address of the packet should be modified (and all future packets in this connection will also be mangled), and rules should cease being examined.

En plus clair (source : Guide de configuration Shorewall) :

Avec la SNAT, un segment interne du réseau local est configuré en utilisant des adresses de la RFC 1918. Quant un hôte A sur ce segment interne initie une connexion vers un hôte B sur internet, le firewall/routeur réécrit les entêtes IP de la requête pour utiliser une de vos adresses publiques IP en tant qu'adresse source. Quant B répond et que la réponse est reçue par le firewall, le firewall change l'adresse destination par celle de la RFC 1918 de A et transfère la réponse à A.

Masquerade :
Selon le man d'iptables :

It should only be used with dynamically assigned IP (dialup) connections: if you have a static IP address, you should use the SNAT target. Masquerading is equivalent to specifying a mapping to the IP address of the interface the packet is going out, but also has the effect that connections are forgotten when the interface goes down. This is the correct behavior when the next dialup is unlikely to have the same interface address (and hence any established connections are lost anyway).

DNAT :
Selon le man d'iptables :

It specifies that the destination address of the packet should be modified (and all future packets in this connection will also be mangled), and rules should cease being examined.

En plus clair (source : pareil que précédemment) :

Quand la SNAT est utilisée, il est impossible pour les hôtes sur internet d'initialiser une connexion avec un des systèmes internes puisque ces systèmes n'ont pas d'adresses publiques IP. La DNAT fournit une méthode pour autoriser des connexions sélectionnées depuis internet.

Pour résumer :

  • La DNAT permet de rediriger une connexion externe vers le réseau interne. Sur les *box, cela est appelé port forwarding, port mapping ou redirection de port lorsqu'il s'agit de rediriger un seul port ou DMZ lorsqu'il s'agit de transférer toutes les connections vers une machine interne.
  • La SNAT permet à plusieurs machines de partager la même adresse réseau de sortie.
  • Le Masquerade revient au même que SNAT à la différence que l'on considère que l'adresse réseau de sortie est dynamique.

Utiliser un proxy avec apt-get et wget

Il est parfois nécessaire d'utiliser un proxy HTTP pour sortir sur internet. Dans ce cas, comment mettre à jour vos logiciels ?

Pour une bonne partie des utilitaires en ligne de commande, il est possible de spécifier le proxy à utiliser via la variable d'environnement http_proxy. Voir : apt-get à travers un proxy HTTP.

Néanmoins cette méthode ne fonctionne que pour l'utilisateur ayant exporté la variable. Ce qui veut dire que la démarche suivante sera vaine :

$ export http_proxy=http://login:password@adresseduproxy:portduproxy
$ sudo apt-get update

Il faudra bien évidement faire :

$su -
# export http_proxy=http://login:password@adresseduproxy:portduproxy
# apt-get update

Note : La ligne peut changer selon si vous avez besoin d'un mot de passe pour utiliser le proxy ou selon le logiciel proxy utilisé. Voir : Linux : Mettre un Proxy pour les commandes Wget et Apt-get .

Pour appliquer la modification à chaque démarrage, il est possible de placer l'export dans le fichier ~/bashrc tout en se rappelant que les commandes lancées sous une autre identité seront vaines.

De plus, si l'utilisation du proxy concerne uniquement 2-3 logiciels, il est possible de spécifier un proxy uniquement pour ces logiciels. C'est ce que nous allons faire.

Pour apt-get

Il suffit de créer un fichier /etc/apt/apt.conf contenant quelque chose comme :

Acquire::http::Proxy "http://login:password@adresseduproxy:8080";

Pour wget

Pour que l'usage du proxy concerne tous les utilisateurs, il suffit d'éditer le fichier /etc/wgetrc et de décommenter la ligne "use_proxy = on". Ensuite, il faut modifier les lignes "http_proxy =" et "https_proxy =" selon vos besoins.

Imprimante HP : Adobe Reader n'imprime pas mes PDF !

Vous pouvez imprimer tous vos fichiers à l'exception des fichiers au format PDF. Sur certaines machines, une page d'erreur est imprimée à la place du fichier.

HP a publié un guide de dépannage. Voir : Impossibilité d'imprimer des fichiers PDF à partir d'Adobe Reader.

L'étape 1 de la solution 2 m'a permis de résoudre le problème sur une imprimante. Sur une autre imprimante, il m'a fallu modifier la mise à l’échelle pour la passer de "Ajuster à la zone d'impression" à "Aucun".

Installer les guest additions de VirtualBox dans une machine virtuelle Debian GNU/Linux Squeeze

Voir Installer Virtualbox Guest Additions sur une machine virtuelle Debian.

Installation de GNU/Linux Debian Squeeze : partman bloque à 50% sur l' « analyse des disques »

Durant l'installation de Debian, partman se bloque à 50% lors de la phase d' "Analyse des disques". Dans un premier temps, on accède à un shell. Pour cela, on redémarre l'ordinateur, on valide les paramètres linguistiques, on attend durant le chargement depuis le CD et durant le choix de la carte réseau, on appuie sur la touche "Echap" et on sélectionne "Exécuter un shell". De là, on liste les disques durs/partitions disponibles avec fdisk :

fdisk -l

On se rend compte que notre disque dur apparaît bien. Il ne s'agit donc pas d'un contrôleur de disques non supporté comme je l'ai vu dans le billet d'un forum que je ne retrouve plus.

La solution (qui ne semble avoir aucun lien avec le problème) : si vous utilisez une clé USB pour installer Debian, utilisez un CD. Je n'ai pas creusé plus loin pour déterminer l'origine exacte de ce bug.

ÉDIT du 29/09/2011 à 19h55 : D'après les retours (voir la discution dans les commentaires de ce billet), c'est les utilitaires du type Unetbootin, Universal USB Installer et autres qui provoquent ce bug.

Comme remède, je vous propose ce qui suit. Les ISOs de Debian/Debian Live sont des ISOs hybrides depuis Squeeze. Ainsi, vous pouvez télécharger l'ISO pour CD/DVD et la copier sur votre clé USB avec un bon vieux dd. Voir, entre autres : DebianEeePC HowToInstallUsingStandardInstaller sur wiki.debian.org.

Si vous n'utilisez pas une clé USB pour l'installation ou si vous n'avez pas utilisé d'utilitaire comme Unetbootin, alors je n'ai pas de solution pour vous.Fin de l'édit

Quelques astuces en vrac

Table des matières

Après cette absence, je vous livre des solutions rapides à des problèmes techniques qui me sont arrivés ou qui sont arrivés à des personnes que je connais.

MS Removal Tool

Si vous avez le malheur d'avoir à gérer des machines Windows et qu'un utilisateur peu scrupuleux colle un rogue (définition) et notamment le rogue nommé "MS Removal Tool" sur l'une d'elle, pensez à utiliser le logiciel de désinfection Rogue Killer. Pensez à changer le nom de l’exécutable pour le nom d'un processus système (exemple : winlogon.exe) afin que l'outil ne soit pas détecté et supprimé par MS Removal Tool. Vu chez Malekal

Trouver le DN (Distinguished Name) d'un Active Directory

Quand vous voulez interfacer un Active Directory (bouuh mais pas le choix) avec un autre logiciel en utilisant le protocole LDAP, vous devez fournir le DN, c'est à dire la structure (= la hiérarchie) vers un enregistrement depuis le bas de l'arbre jusqu'en haut (et dans ce sens là !). Pour décrire cette hiérarchie, vous avez des attributs (CN, OU, DC, ...) à votre disposition (voir LDAP sur Wikipédia).Voir une comparaison pour mieux comprendre (en anglais).

Je sais pas pour vous mais moi je galère toujours un peu pour "voir" le DN d'un Active Directory. Cette fois-ci, j'ai pris des captures d'écran afin de pouvoir me servir de ce cas concret maitrisé lors d'un prochain interfaçage. Évidemment, j'ai changé les noms 😉 Maintenant, je vous laisse réfléchir : dans l'image ci-dessous, quel est le DN de l'utilisateur "bob leponge" ?

Active Directory

Réponse : CN=bob leponge,OU=foyer,OU=azerty,DC=TOTO,DC=LOCAL
N'oubliez pas de decomposer le DC en utilisant le "." comme délimiteur ;).

Maintenant, supposons que vous avez des utilisateurs à authentifier. Ceux-ci se trouvent tous dans l'OU "azerty". Néanmoins, tous ne se trouvent pas dans l'OU "foyer", certains se trouvent dans l'OU "titi". Or le logiciel qui va réaliser l'authentification de vos utilisateurs à partir de l'A.D. vous demande le DN de la base. Vous l'aurez peut-être compris : il faut indiquer uniquement la base commune. Dans notre exemple, nous nous arrêterons à l'OU "azerty". Le DN de la base sera donc : OU=azerty,DC=TOTO,DC=LOCAL.

Configurer Alcasar pour authentifier les utilisateurs à partir d'un Active Directory

Avec ce que nous venons de dire ci-dessous, la configuration d'Alcasar va être simple :

Nom : adresse IP ou nom DNS du serveur Active Directory
DN de la base : OU=azerty,DC=TOTO,DC=LOCAL (à adapter à votre cas, voir ci-dessus)
Identifiant LDAP : sAMAccountName (donné par Alcasar)
Filtre de l'utilisateur : (objectClass=radiusprofile) (donné par Alcasar)
Utilisateur LDAP DN : CN=bob leponge,OU=foyer,OU=azerty,DC=TOTO,DC=LOCAL (à adapter à votre cas, voir ci-dessus)
Mot de passe de l'utilisateur : je vous laisse deviner ce qu'il faut mettre ici

Pour l'utilisateur LDAP, je vous conseille de créer un utilisateur dans votre A.D. avec juste un droit de lecture sur les OU désirées afin d'accroître, un minimum, la sécurité.

Les utilisateurs ne devront pas s'identifier avec leur nom complet mais avec leur login de session Windows inscrit dans l'A.D. Par exemple, notre utilisateur bob leponge devra se connecter avec son login "bobleponge". Voir la capture ci-dessous :

Active Directory 2

Problème de DNS avec Alcasar

Symptômes : Alcasar n'intercepte pas vos requêtes, vous n'avez pas accès à la page d'authentification ni au web. Pourtant, vous avez configuré votre client avec une IP appartenant au réseau de consultation du serveur Alcasar, avec le même masque de réseau. Le serveur Alcasar est définit comme passerelle par défaut et comme résolveur DNS sur le client.

Quand vous tapez l'adresse IP du serveur dans un navigateur, vous pouvez y accéder. Quand vous tapez l'IP d'un site web au lieu de son nom de domaine, vous pouvez également y accéder. Quand vous effectuez un nslookup ou un dig, vous obtenez un message "Accès refusé".

La solution se trouve sur le forum d'aide aux utilisateur Alcasar : PB requêtes DNS (sur le forum adullact.net).

Monter rapidement une passerelle

Je vous en ai déjà parlé brièvement mais un rappel ne fait pas de mal.

Vous êtes sur une machine sur un certain réseau, disons 192.168.182.1/24 et vous voulez accéder à une machine d'un autre réseau, disons 192.168.0.1/24. Les machines n'étant pas sur le même réseau, vous devez installer une passerelle entre les deux réseau.

Pour cela, il vous faut :

  • Un ordinateur équipé de deux cartes réseau
  • Activer l'ip forwarding : Windows (pensez à redémarrer après le changement dans le registre) | GNU/Linux. Vous n'avez pas besoin d'activer le NAT.
  • Configurer les routes sur les deux machines qui doivent communiquer.

Note : ajout des routes :

Sous une machine GNU/Linux :

route add -net 192.168.182.1/24 gw 192.168.0.254

Sous une machine Windows :

route add 192.168.182.0 mask 255.255.255.0 192.168.0.254

Si vous préférez ajouter une route vers la machine uniquement et non plus vers tout le réseau (ce que je vous conseille) :
GNU/Linux :

route add -host 192.168.182.1 gw 192.168.0.254

Windows :

route add 192.168.182.1 mask 255.255.255.255 192.168.0.254

255.255.255.255 représente le masque de réseau pour une seule machine. Utilisé notamment dans les offres ADSL *box (et les accès internet en général, même sans *box).

Effacer un mot de passe de session Windows

Plutôt que de cracker le password avec pwdump/John the Ripper ou ophcrack, je préfère effacer le mot de passe. J'y vois deux avantages : rapidité et préservation de la confidentialité. Sachant qu'un utilisateur moyen (et même parfois les "power users") mettent le même mot de passe à peu près partout, je trouve cette méthode plus convenable.

Pour effacer le mot de passe ou en définir un nouveau, j'utilise un utilitaire qui n'est pas nouveau : Offline NT Password and Registry editor. En cadeau, je vous donne également un lien vers un très bon tutoriel (pdf).

MySQL : forcer le changement du mot de passe root

En cas d'oublie de votre mot de passe root : mysql - Documentation Ubuntu Francophone, paragraphe 3.4.

Alcasar : désactiver DHCP

Si vous ne voulez pas utiliser le protocole DHCP sur votre réseau de consultation, suivez ceci : désactiver le DHCP de chilli (sur le forum adullact.net).

Alcasar : retrouver la traçabilité

Par défaut, Squid, le logiciel proxy connu et reconnu utilisé dans cet ensemble logiciel est utilisé en mode transparent. Ce mode permet de ne pas avoir à configurer les options des navigateurs et autres applications sur les postes clients pour leur indiquer à quelle adresse et sur quel port interroger le proxy. Comment ça marche ? Le serveur Alcasar étant définit comme passerelle par défaut sur les clients, il reçoit donc les paquets. Une règle dans le pare-feu Netfilter redirige les paquets à destination du port 80 (et autres selon la configuration voulue) vers le port du proxy. Ainsi, vous perdez la traçabilité dans les logs : toutes les connexions semblent venir de l'adresse locale (127.0.0.1).

Pour retrouver un semblant de traçabilité (rappelons qu'une IP peut être changée par un utilisateur et ne permet donc pas toujours de faire le lien avec un utilisateur), il suffit donc de supprimer la règle de redirection dans iptables (table nat), chaine prerouting, de vérifier que Squid écoute bien sur d'autres interfaces réseau que l'interface de bouclage et configurer les applications des postes clients pour passer via le proxy avec l'IP et le port associés.

Amon NG : Authentification des utilisateurs avec un Active Directory

Amon NG est un module du projet Eole NG.

L'authentification des utilisateurs peut-être activée dans l'outil de configuration gen_config : il faut mettre à "Oui" l'option "Activation de l'authentification Web (proxy)" dans l'onglet "Services" puis de "Valider le groupe". Un nouvel onglet "Authentification" apparaît alors afin de vous permettre de saisir les paramètres. Vous n'avez plus qu'à choisir "LDAP (Active Directory)" dans la liste des types d'authentification et à entrer vos paramètres, les mêmes que pour Alcasar (voir ci-dessus).

Néanmoins, les paramètres ne sont pas correctement écrit dans le fichier de configuration de Squid (/etc/squid/squid.conf". Il convient donc de chercher la chaîne "auth_param basic program" et d'éditer la ligne qui n'est pas commentée.

Il faut changer le paramètre "-b" qui doit représenter le DN de la base et le paramètre "-D" qui doit correspondre au DN de l'utilisateur autorisé à consulter l'Active Directory.

Dans notre exemple précédent, cette ligne ressemblerait à :

auth_param basic program /usr/lib/squid/ldap_auth -R -b "OU=azerty,DC=TOTO,DC=LOCAL" -D "CN=bob leponge,OU=foyer,OU=azerty,DC=TOTO,DC=LOCAL" -w motdepasse -f sAMAccountName=%s -h IP de l'A.D.

Je reviendrai sur Alcasar et Eole NG dans un prochain billet.