Actuellement en kiosque !
Linux Pratique °25 Hors-Série N Découvrez le web du futur ! HTML 5 disponible chez votre marchand de journaux jusqu'à fin décembre 2012 et sur : www.ed-diamond.com gage dans Découvrez un nouveau lan x Magazine Hors-série 63 ! GNU/Linu grammation Go, le langage de pro gle le novembre 2 développé par▪ Toutes Goo les bases pour commencer (historique, en kiosque ! compilation, syntaxe de base, ...) ▪ Des explications sur les différents types de variables (chaînes, pointeurs, tableaux, ...) ▪ Et pour aller + loin : les fonctions, la programmation orientée objet, le traitement des fichiers, les tests unitaires, ...
Sous réserve de toutes modifications. Un numéro complet pour explorer et maîtriser le langage Go !
le 2 novembre 2012 chez votre marchand de journaux Linux Pratique est édité par Les éditions Diamond B.P. 20142 / 67603 Sélestat Cedex Tél. : 03 67 10 00 20 édito Fax : 03 67 10 00 21 Alors que GNOME 3.6 vient tout juste de faire son apparition, les E-mail : [email protected] [email protected] critiques négatives demeurent... Pourtant, de nombreux efforts ont Service commercial : [email protected] été fournis, en termes d’ergonomie, pour reconquérir le cœur des Sites : www.linux-pratique.com utilisateurs. La faute à qui, ou plutôt à quoi ? GNOME Shell semble www.ed-diamond.com avoir été l’élément déclencheur... Canonical s’est d’ailleurs empres- Directeur de publication : Arnaud Metzler sée à l’époque de créer sa propre interface pour Ubuntu (Unity) qui, Chef des rédactions : Denis Bodor au passage, n’a pas elle non plus enthousiasmé les foules. Un autre Rédactrice en chef : Fleur Brosseau point qui reste très controversé est le renommage des applications Secrétaire de rédaction : Véronique Sittler formant le noyau du bureau - pourtant intégrées à GNOME depuis Conception graphique : Kathrin Scali Responsable publicité : Valérie Fréchard plusieurs années et bien connues de ses utilisateurs, avec des termes Tél. : 03 67 10 00 27 - [email protected] plus « génériques ». Nautilus devient ainsi « Fichiers », Empathy Service abonnement : Tél. : 03 67 10 00 20 devient « Discussion », Epiphany devient « Web », etc. Un choix Photos & Illustrations : www.fotolia.com curieux, certes, mais compréhensible au fond : celui qui n’a jamais Impression : entendu parler d’Epiphany (sinon au moment de manger la galette) pva, Druck und Medien-Dienstleistungen GmbH, Landau, Allemagne ne cliquera peut-être pas instinctivement sur ledit lanceur pour sur- Distribution France : fer sur le Web... (bien qu’il soit classé, dans la rubrique « Internet » (uniquement pour les dépositaires de presse) des applications et qu’une infobulle, voire son nom complet, indique MLP Réassort : clairement « navigateur web »... hum hum...). Plate-forme de Saint-Barthélemy-d’Anjou. Tél. : 02 41 27 53 12 Pour les nostalgiques de l’ancien GNOME, sachez qu’il existe un Plate-forme de Saint-Quentin-Fallavier. Tél. : 04 74 82 63 04 fork, le projet MATE, dont le développement a commencé fin 2011. Il Service des ventes : est proposé depuis plusieurs mois dans la distribution Linux Mint et Distri-médias : Tél. : 05 34 52 34 01 il se pourrait qu’il fasse prochainement son apparition dans le dépôt
Imprimé en Allemagne - PRINTED in Germany principal de Fedora (à l’occasion de la sortie de Fedora 18, prévue Dépôt légal : À parution pour le 04 décembre). Autre signe qui vient confirmer le désintérêt N° ISSN : 0183-0872 des utilisateurs vis-à-vis de GNOME 3 : l’adoption probable d’Xfce Commission Paritaire : K78 990 comme environnement de bureau par défaut pour Debian 7, une gage dans Périodicité : Bimestrielle Prix de vente : 6,50 Euros distribution pourtant fidèle à GNOME depuis ses débuts... Pas assez intuitive ? Trop « bling bling » ? Il est vrai que l’interface Avertissement : de GNOME 3 est quelque peu déroutante (enfin, tout est relatif, car si Découvrez un nouveau lan Les Éditions Diamond ne sont pas respon- gazine Hors-série 63 ! sables du service technique lié à l’utilisation du on la compare à celle de Windows 8, il n’y a rien de plus standard ;-)) x Ma CD-ROM livré avec ce numéro. En cas de pro- et c’est la première à proposer quelque chose de vraiment différent blème, veuillez vous adresser aux concepteurs Linu en termes d’expérience utilisateur. C’est peut-être là l’explication du GNU/ de la distribution ou consulter les sites Web et forums officiels dédiés au support des utilisateurs. peu de succès qu’elle rencontre ; les utilisateurs ont finalement du mal à s’y retrouver. Beaucoup crient haut et fort que GNOME 3 est La rédaction n’est pas responsable des textes, illus- incompréhensible, voire inutilisable pour les débutants. Au contraire, trations et photos qui lui sont communiqués par leurs auteurs. La reproduction totale ou partielle des articles je pense que ces derniers doivent très bien s’en sortir, car eux, publiés dans Linux Pratique est interdite sans accord n’ont aucun à priori. Ceux qui râlent le plus sont finalement ceux écrit de la société Les Éditions Diamond. Sauf accord particulier, les manuscrits, photos et dessins adressés qui l’utilisent depuis quelques années (j’en fais partie, mea culpa...). à Linux Pratique, publiés ou non, ne sont ni rendus, Les habitudes (bonnes ou mauvaises) ont la vie dure... ni renvoyés. Les indications de prix et d’adresses figurant dans les pages rédactionnelles sont données Si GNOME 3 est le « mal aimé » des desktops du moment, n’est- à titre d’information, sans aucun but publicitaire. ce pas avant tout parce qu’il est mal connu ? Car les addicts de Toutes les marques citées dans ce numéro sont GNOME 3, eux, ont appris à le personnaliser, à l’adapter à leurs déposées par leur propriétaire respectif. Tous les logos représentés dans le magazine sont la propriété de leur besoins (merci les extensions pour GNOME Shell !), usent et abu- ayant droit respectif. sent des raccourcis clavier pour le contrôler et de ce fait, trouvent que leur bureau n’a en rien perdu de son usabilité. Ils se sont simple- ment appropriés leur nouvel environnement. C’est comme cela que l’on passe d’un « GNOME 3 est une abomination » à « GNOME 3 ça déchire ! ».
www.linux-pratique.com Fleur Brosseau
Linux Pratique n°74 | 3 sur le cd-rom OpenMediaVault 0.3
OpenMediaVault : une alternative à FreeNAS pour mettre facilement en place votre NAS multifonction
OpenMediaVault (http://www.openme- créée ; à savoir qu’OpenMediaVault uti- diavault.org/) est un NAS « nouvelle lise un disque entier pour le système, ce génération », basé sur Debian Squeeze. dernier ne pourra donc héberger aucune Par défaut, il offre la plupart des ser- éventuelle partition de données utilisa- vices courants : SSH, (S)FTP, NFS teur. Et toutes les données qui pour- (v3/v4), SMB/CIFS et Rsync. Il est en raient s’y trouver seront donc écrasées outre possible de lui ajouter d’autres pendant l’installation. Il est donc vive- fonctionnalités grâce à son système ment recommandé de disposer d’un de plugins : LVM, LDAP, AFP, un client deuxième disque dur pour exploiter BitTorrent, un serveur DAAP, UPS pleinement les fonctionnalités offertes (alimentation sans interruption), ... par OpenMediaVault. Vous devrez en outre disposer au minimum d’1 GiB de RAM et de 2 GiB d’espace disque. L’installation terminée, redémarrez le système pour lancer le serveur ; dans les logs qui apparaissent à l’écran, une adresse IP est indiquée : c’est sur elle un panneau latéral, sous forme d’arbo- que vous devez pointer votre navigateur rescence. On pourra commencer par web pour accéder à l’interface d’admi- se rendre dans la section Système > nistration. Renseignez le login et le mot Gestionnaire de mises à jour, afin de de passe (par défaut, login : admin, mot mettre à jour le système (les mises à de passe : openmediavault). jour sont prises en charge par le ges- L’intérêt d’une solution comme Si vous souhaitez vous logger sur la tionnaire de paquets Debian). OpenMediaVault réside dans sa grande console du serveur, utilisez le login et Vous pourrez ensuite vous rendre simplicité d’installation et de configura- le mot de passe que vous avez ren- dans la section pour acti- tion. En effet, ce système a été pensé seignés lors de l’installation. L’une des Services ver ceux dont vous avez besoin. Du avant tout pour une utilisation dans un commandes qui peut alors vous être côté de la gestion des disques (sec- environnement personnel ou bien au utile est omv-firstaid, qui vous per- sein de petites structures profession- mettra notamment de configurer l’in- tion Stockage), OpenMediaVault prend nelles, de manière à ce que sa prise terface réseau, ou de changer le mot en charge la gestion de l’énergie et le en main soit accessible à tous, sans de passe de l’interface web (ceci peut monitoring via SMART ; il supporte les bagage technique poussé. toutefois être réalisé via l’interface gra- systèmes de fichiers Ext3, Ext4, XFS phique d’administration). et JFS, permet la mise en place d’un La procédure d’installation utilise l’instal- RAID 0/1/5/6, gère les ACL et les par- leur Debian et s’avère donc relativement L’interface est simple et intuitive. Les tages. De nouveaux utilisateurs et des aisée. Une unique partition Ext4 est différentes tâches sont réparties dans dossiers partagés pourront être créés dans la section Gestion des droits d’ac- cès. On notera également la possibi- lité de planifier des tâches (Système > Tâches Cron). Le wiki du projet (http://wiki.open- mediavault.org) propose quelques informations et conseils concernant la configuration ; vous pourrez trouver par ailleurs quelques tutoriels vidéo sur YouTube (chaîne « openmediavault »).
4 | Linux Pratique n°74 www.linux-pratique.com sommaire Linux Pratique n°74
actus wEB 06 Toute l'actualité Linux et open source 40 HTML 5 : structuration 44 Consultez les statistiques de votre site web APPLICATIF avec AWStats 10 Calibre, un outil multifonction pour gérer vos e-books Geeks 12 GNOME Boxes, la solution de virtualisation 48 Raspberry Pi : mini PC, maxi possibilités ? « desktop »
DocFetcher, votre allié pour indexer et (ré) 14 I3, le « tiling window manager » pour tous exploiter vos documents 56
En couverture DÉCISIONNEL Gestion de parc avec GLPI 16 La gestion de configuration simplifiée avec 60 Ansible 71 Le dessin assisté par ordinateur sous Linux avec LibreCAD et FreeCAD
74 Pas Nagios : pourquoi ?
système & réseau Code 22 Protéger des données sensibles : 76 Text-To-Speech avec Python, quelques solutions rapides gstreamer et Google translate Gérez vos machines virtuelles à distance ! 29 80 Bonne pratique : préférer un UID à une 32 Système de fichiers sous Linux et clé incrémentale déploiement de Btrfs 36 Plus d’espace disponible ? Redimensionnement via LVM 27/69/70 Abonnements & Commandes
www.linux-pratique.com Linux Pratique n°74 | 5 actus
» openSUSE 12.2 outils Publiée le 7 septembre, cette nouvelle release Sunflower : un gestionnaire de fichiers est basée sur le noyau Linux 3.4.6 et intègre par défaut le bootloader GRUB2. Le système de léger et totalement personnalisable fichiers Btrfs, proposé à l’installation, a bénéfi- cié d’améliorations permettant entre autres une meilleure gestion des erreurs. L’environnement KDE SC est proposé en version 4.8.4 (une mise à jour vers le version 4.9.1 est d’ores et déjà dispo- nible) et la distribution intègre également GNOME 3.4 et Xfce 4.10. Bien entendu, on retrouve les ver- sions les plus récentes d’une sélection plus per- tinente de logiciels libres : LibreOffice 3.5, GIMP 2.8, Firefox 14, X.Org 1.12, etc. Côté program- mation, on notera la présence du langage Go de Google (dans sa version 1.0.2). Le démarrage du système s’avère bien plus rapide et on notera l’amélioration globale de l’ergonomie, notamment au niveau des petites utilitaires graphiques. Une image ISO de la dernière version d’openSUSE peut être récupérée ici : http://software.opensuse. Composé d’un double panneau, Sunflower (http://code.google.com/p/sunflower- org/122/fr. À noter pour finir la nomination toute fm/) propose une gestion par onglets des différents emplacements ouverts et s’avère très simple à utiliser. Il s’intègre très bien dans l’environnement GNOME, récente du développeur français Vincent Untz à mais peut tout à fait être utilisé dans un autre environnement de bureau. la présidence du conseil openSUSE. Le projet est jeune, mais propose d’ores et déjà un lot très intéressant de fonc- » TilEm2 tionnalités ; il offre par exemple la possibilité d’ouvrir directement une console Nous vous avions présenté TilEm dans Linux au sein du gestionnaire de fichiers et une ligne de commandes demeure omni- Essentiel hors-série n°2 dédié à l’émulation et présente au bas de l’interface. Bien entendu, comme la plupart des logiciels au retrogaming. Il s’agit d’un émulateur de calcu- du genre, il gère les bookmarks et les points de montage et propose un histo- latrice z80 (TI73 à TI86). Les amateurs du genre rique de navigation, le tout permettant de se rendre très rapidement dans les seront heureux d’apprendre qu’une toute nouvelle répertoires les plus utilisés. Ce gestionnaire de fichiers comporte par ailleurs version développée activement depuis 3 ans a vu quelques outils : un outil de recherche avancée bien sûr, mais aussi un outil le jour. TilEm2 est ainsi une réécriture complète de comparaison de répertoires ou de renommage de fichiers par lot. de son prédécesseur ; au programme : une toute Les possibilités de Sunflower peuvent être étendues au moyen de plugins ; un nouvelle interface, le plein de nouvelles fonction- exemple de plugin est d’ailleurs proposé sur le site du projet. Les plugins intégrés nalités (envoi/réception de variables, sauvegarde par défaut ne sont pas tous activés ; il faudra vous rendre dans les préférences des programmes, capture d’écran statique ou ani- du logiciel pour activer ceux dont vous avez besoin ; le plugin de pré-visualisation mée, enregistrement de macros, nouveau pack de rapide des images peut notamment être utile. La fenêtre de dialogue des préfé- skins) et un cœur d’émulation vraiment libre. Tous rences vous permet de personnaliser le logiciel dans les moindres détails (appa- les modèles z80 sont pris en charge. À découvrir rence, comportement des onglets, sélection de l’éditeur par défaut, contenu de la sur http://lpg.ticalc.org/prj_tilem/index.html. barre d’outils, (dés)activation des plugins, etc.). Il est donc particulièrement simple d’adapter ce gestionnaire de fichiers à vos besoins particuliers. » DotClear 2.4.4 Le projet est encore à ce jour en phase alpha de développement (v.0.1a-45) ; nous À l’occasion de son 9ème anniversaire, le projet n’avons rencontré toutefois aucun problème particulier lors de notre utilisation. Des a publié une nouvelle version au début du mois paquets DEB et RPM sont mis à disposition pour la plupart des distributions. d’août (http://dotclear.org/download). Celle-ci vient corriger plusieurs bugs, notamment celui qui affectait la programmation des billets. À souligner également, la mise à jour de DC Loader, le script Bureautique d’installation rapide, plus rapide et plus soigné. L’équipe de développement nous informe égale- Visionnez vos PDF en 3D ! ment de la préparation d’une version « parallèle » PDFCube (http://code.100allora.it/pdfcube/) est un logiciel qui permet de Dotclear, qui deviendrait à terme une version de visualiser un document PDF sous forme d’un cube ; le passage d’une complètement revue du CMS. La mise en plugins page à l’autre est ainsi animé d’un mouvement de rotation assez élégant, des catégories, des commentaires et trackbacks, qui peut faire bonne impression lors d’une présentation. Il s’utilise très et du gestionnaire de médias, fait notamment par- facilement : tie des gros changements envisagés. pdfcube [file] [options]
6 | Linux Pratique n°74 www.linux-pratique.com actus desktop GNOME 3.6 : le plein de fonctionnalités et quelques retouches pour davantage de cohérence Pas mal de nouvelles fonctionnalités par type de fichiers et les résultats sont affi- majeures dans cette nouvelle mouture chés au fur et à mesure de la frappe. Elle est qui a fait encore une fois beaucoup par- effectuée dans tous les fichiers, sans indexa- ler d’elle (pro et contre GNOME 3, les tion préalable. La disparition du découpage discussions demeurent... ). Pêle-mêle : de la fenêtre en deux panneaux a laissé des notifications plus intelligentes, une place à un panneau « à la demande » pour vue d’ensemble des activités retra- le déplacement ou la copie de fichiers. La vaillée (remarquez en effet que les fenêtre de dialogue de connexion à un ser- onglets Fenêtres et Applications ont dis- veur propose désormais à l’utilisateur de ce même menu, supporte désormais les paru), un nouveau design pour de nom- copier/coller l’URL cible ou de la saisir direc- comptes Kerberos et Active Directory. La breuses applications (le gestionnaire tement ; les URL récemment utilisées sont barre de notifications a été remaniée elle de fichiers, Empathy, Evolution, l’ana- par ailleurs listées dans la fenêtre. aussi, de façon à corriger certaines imper- lyseur de disques Baobab, le vision- fections ; désormais, elle ne gênera plus GNOME 3.6 est basé sur le tout nouveau neur de fontes...), un nouvel écran de l’utilisateur qui souhaite atteindre le coin Gstreamer 1.0, plus léger et plus performant. verrouillage plus attrayant et plus fonc- inférieur droit de son logiciel par exemple. À noter aussi la présence de la bibliothèque tionnel (affichage de l’heure et des notifi- graphique Clutter 1.2, de la boîte à outils cations, des contrôles pour votre lecteur Côté applications, on notera l’arrivée de Gtk+ 3.6 ou encore de GLib 2.34. de médias). La fenêtre de réglage des Machines (GNOME Boxes), dont vous paramètres système bénéficie d’une trouverez une présentation en page 12 de Vous pouvez découvrir ce nouveau bureau interface plus soignée. La navigation ce magazine. À souligner également la GNOME via l’image ISO mise à disposition web offre une bien meilleure accessi- refonte de l’utilitaire de disques, qui apporte à l’adresse http://www.gnome.org/getting- bilité ; l’interface comporte en outre de son lot de nouvelles fonctionnalités : barre gnome/. Sinon, vous pouvez simplement nouvelles options visuelles. de progression et blocage de l’extinction attendre la mise à jour de votre distribu- du système lors des opérations de forma- tion (GNOME 3.6 sera notamment intégré tage ou de redimensionnement, mesure à Fedora 18, dont la sortie est prévue pour des performances du disque, un monteur le 27 novembre). d’images disque... . Le navigateur Epiphany Et pour le futur ? Les applications Calendrier, repose désormais sur la version 1.10 de Musique et Photos sont en préparation, a WebKitGTK+, qui gère WebGL et l’accélé- priori planifiées pour la version 3.8. L’équipe ration du compositing ; il intègre par ailleurs de développement est par ailleurs en train la fonction Do Not Track, ainsi qu’un tableau de réfléchir à la mise en place de la feuille de de bord présentant les vignettes des sites route des prochaines releases. La version les plus visités, des possibilités que d’autres 3.12 serait rebaptisée 4.0 et constituerait les navigateurs offrent déjà depuis un moment. bases du système GNOME OS (prévu pour Enfin, le gestionnaire d’archives File Roller le printemps 2014). Rappelons que ce der- prend en charge le format propriétaire RAR Le menu utilisateur a quant à lui été res- nier, même s’il pourra être installé comme dans sa version 3. tructuré et propose par défaut l’extinc- toute autre distribution Linux, est plutôt assi- tion de l’ordinateur (auparavant, il était Un gros travail a été effectué sur Nautilus, milable à une plateforme de développement nécessaire d’appuyer sur [Alt] pour voir rebaptisé « Fichiers », qui offre maintenant et est en quelque sorte destiné à devenir un apparaître cette option). Le gestionnaire une fonction de recherche particulièrement véritable sandbox pour tester les diverses de comptes en ligne, accessible via performante et rapide : elle est récursive, évolutions des applications GNOME.
Parmi les options à retenir : -b permet de définir la couleur également de programmer les modalités de visionnage du document d’arrière-plan, -t permet de définir la couleur de la face supé- via l’option --program (on définit le temps d’affichage et le type de rieure du cube (les couleurs doivent être exprimées au format transition). Les couleurs et autres options peuvent être configurées r:g:b) ; l’option -n permet de désactiver le mode plein écran. à la fois en ligne de commandes ou directement dans un fichier Le visionneur se pilote ensuite au clavier ; les touches [C] et de configuration .pdfcuberc. L’option --help affiche la liste des [A] permettent de passer d’une page à l’autre. Par ailleurs, options disponibles et quelques exemples d’utilisation. il est possible de zoomer sur 5 zones prédéfinies de votre Le programme pourra être installé en compilant les sources document via les touches [H], [J], [K], [L] et [Z]. (./configure, make, sudo make install), après avoir installé les La dernière version 0.0.5, parue début juillet, permet la visuali- dépendances requises : libpoppler-dev et libpoppler-glib- sation de PDF en orientation portrait ou paysage. Elle propose dev, libgtkglext1-dev, libboost-program-options-dev.
www.linux-pratique.com Linux Pratique n°74 | 7 actus
» Firefox et Thunderbird 16 Web La fondation Mozilla a publié une nouvelle version de ses deux applications phares à la mi-octobre. Mozilla Thimble vous apprend à coder ! Pour le navigateur web, cette 16ème version Thimble (https://thimble.webmaker.org/en-US/editor) est un service récem- marque notamment le début de la prise en charge ment mis en ligne par la fondation Mozilla ; il est issu du projet Webmaker des web apps et de VoiceOver (l’outil d’accessibilité (une initiative de la fondation destinée à favoriser l’apprentissage des techno- de Mac OS X). Globalement, l’application s’avère logies du Web, selon les bonnes pratiques, en fournissant des outils adaptés bien plus réactive aussi. Les développeurs seront aux utilisateurs débutants). L’objectif de Thimble ? Proposer aux utilisateurs heureux d’utiliser la toute nouvelle boîte à outils un éditeur de pages web simple, qui leur permettra d’appréhender plus aisé- intégrée au navigateur et pourront constater que ment les langages HTML et les préfixes -moz- ont été retirés de certaines CSS. Selon les créateurs du propriétés CSS3. Côté messagerie, le développe- projet, il est en effet essen- ment s’est principalement focalisé sur la correc- tiel que tout un chacun com- tion de bugs, améliorant ainsi la performance et prenne les rudiments du la sécurité de Thunderbird. On notera également développement web. que la fonction Filelink, qui permet d’envoyer des pièces jointes à ses contacts quelle que soit leur Cet éditeur en ligne est taille, supporte maintenant le service Box.com, qui scindé en deux panneaux : s’ajoute ainsi à Ubuntu One et YouSendIt. à gauche, vous codez ; à droite, vous pouvez visuali- » Firefox version tablette ser le rendu de votre code en temps réel. Pour l’uti- Une version de Firefox pour Android a fait son liser, il faut tout de même apparition sur le Play Store de Google. Cette connaître les balises « de base » qui permettent de structurer une page (
, version adaptée au Web mobile comprend plu- , ...,
, , 8 | Linux Pratique n°74 www.linux-pratique.com actus Du côté DES SOLUTIONS PRO WEB TRAVAIL COLLABORATIF phpMyFAQ, ou comment Blue Mind, une solution créer rapidement une FAQ complète de messagerie personnalisée ? d’entreprise phpMyFAQ, comme son nom l’indique, est une application qui Blue Mind (http://www.blue-mind.net) est une plateforme col- permet de mettre en place un système de questions/réponses laborative open source, basée sur Java, relativement récente sur votre site web. Compatible PHP 5.2 ou supérieur, elle (la première bêta ayant été publiée en mars 2012). Elle pro- supporte de nombreuses bases de données (MySQL, pose un webmail, un calendrier et la gestion de contacts, le tout PostgreSQL, SQLite, SQL Server et MariaDB). L’installation orienté vers le travail collaboratif. Ses interfaces utilisateur « full et la configuration se font entièrement via une interface web, JavaScript » sont particulièrement riches et simples à utiliser. dans votre navigateur. Ainsi, le webmail permet la création de boîtes partagées et la mise phpMyFAQ est compatible LDAP et Active Directory, et permet en place de filtres, le glisser-déposer de pièces jointes depuis le l’authentification HTTP via Single Sign On. Elle offre en outre bureau, l’auto-complétion des adresses, etc. Le calendrier séduit une gestion fine des utilisateurs et des permissions. Simple à par son ergonomie et son large éventail de fonctionnalités ; il utiliser grâce à son éditeur WYSIWYG, cette application permet permet de gérer les utilisateurs et les ressources et propose la en outre de gérer aisément les enregistrements de la FAQ, les recherche de disponibilité des participants. Il est possible de créer commentaires, etc. des agendas individuels, de groupes ou de ressources. Il offre par ailleurs un mode déconnecté, qui permet de continuer à s’organiser L’application intègre un module de statistiques, permettant d’ana- même si vous n’êtes pas connecté à Internet ; une fois la connexion lyser le comportement des utilisateurs au travers de la FAQ. rétablie, vos modifications sont automatiquement envoyées au Par ailleurs, elle intègre le support du bouton like de Facebook, serveur. Blue Mind permet par ailleurs de gérer plusieurs carnets réseau sur lequel il est possible de partager du contenu ; il est d’adresses (publics, pri- également possible de connecter son compte Twitter à l’appli- vés ou partagés) et per- cation, de manière à ce que ses followers puissent suivre l’évo- met la synchronisation lution de la FAQ. Les utilisateurs pourront aisément trouver les avec Microsoft Outlook, questions de leur choix via une puissante fonction de recherche. T h u n d e r b i r d o u Votre FAQ pourra être aisément personnalisable via un système votre appareil mobile de templates basé sur les derniers standards (HTML5 et CSS3). (iPhone, A ndroid, De plus, un système de sauvegarde et de restauration garantit BlackBerry et iPad). la pérennité de votre base de connaissances. Blue Mind est packagé Une pré-version alpha de phpMyFAQ 2.8.0 est disponible pour Debian, Ubuntu depuis fin août (http://www.phpmyfaq.de/download.php). Cette et Red Hat. Son instal- version, régie par la Mozilla Public License 2.0, apporte notam- lation est simplifiée via la présence d’un assistant graphique. La ment le support multisite, la sauvegarde automatique pendant dernière version en date est une version RC2 de Blue Mind 1.0, l’édition des FAQ, et propose une interface d’administration plus sortie fin septembre ; elle apporte principalement quelques cor- ergonomique. rections de bugs. ERP/CRM globale de l’ergonomie, elle a apporté pas création de modules externes répondant à mal de nouvelles fonctionnalités pour les des besoins précis. Les développeurs ont Dolibarr 3.2.0 utilisateurs, comme la possibilité de créer par ailleurs beaucoup plus de liberté dans On ne présente plus Dolibarr, un ERP/ des champs personnalisés sur les tiers, l’ajout de leurs propres codes et modules. CRM libre et gratuit, destiné aux petites et adhérents et produits, la possibilité d’im- Un module est dorénavant organisé en un moyennes entreprises. Gestion des clients porter des contacts via l’assistant d’impor- seul et même répertoire, cette structure et fournisseurs, factures, commandes, tation, la possibilité de créer des factures devant notamment favoriser l’apparition stocks, agenda, mailing, etc., toutes les à partir d’expéditions de commandes, des de nouveaux modules complémentaires fonctionnalités sont prises en charge par e-mails améliorés, etc. La documentation sur le Dolistore. cette application ! Celle-ci se veut extrê- officielle, disponible sur le wiki du projet, a Une version de maintenance numérotée mement modulaire, chacun a ainsi la pos- quant à elle été mise à jour et complétée. 3.2.2 est disponible depuis la mi-septembre sibilité d’activer uniquement les fonctions Le plus gros des changements a été réa- (à récupérer sur http://www.dolibarr.fr/tele- dont il a besoin. lisé en profondeur, où le code de Dolibarr chargements). Dolibarr est disponible pour Une mise à jour majeure (3.2) a été publiée a été « nettoyé » de manière à faciliter Linux (paquets DEB et RPM), Mac OS X et avant l’été. En plus de l’amélioration l’intégration de futures extensions ou la Windows. www.linux-pratique.com Linux Pratique n°74 | 9 APPLICATIF Calibre, un outil multifonction pour gérer vos e-books Fleur Brosseau Tout est dit dans le titre : Calibre est une application open source et gratuite - compatible Linux, Mac OS X et Windows -, qui permet d’organiser votre collection d’e-books. Il devient ainsi facile d’y naviguer, d’éditer les métadonnées des différents fichiers, de rechercher de nouveaux ouvrages et même de dialoguer avec votre liseuse électronique puisque Calibre prend en charge plusieurs modèles. • L’importation de contenu de sites d’in- bibliothèque. Après avoir sélectionné 1. Que peut faire formations ou de flux RSS : ces conte- votre langue, vous pouvez préciser le Calibre ? nus sont convertis en e-books pour modèle de liseuse électronique que pouvoir être éventuellement transfé- vous utilisez (dans notre cas, il s’agit Calibre est une application qui permet rés puis consultés sur votre appareil ; d’un Kindle Touch d’Amazon) et éven- de gérer vos e-books, à la manière • Son propre serveur web pour vous tuellement renseigner vos paramètres d’une bibliothèque, mais elle permet de connexion à votre compte de mes- bien plus ! Elle propose : permettre d’accéder à votre collec- tion d’e-books via un navigateur sagerie de manière à ce que Calibre • Un visionneur d’e-books intégré, web, depuis n’importe quel ordina- puisse envoyer vos e-books vers votre supportant la plupart des formats ; teur ou autre appareil. liseuse par mail, si votre matériel sup- porte ce service (Fig. 2). • De synchroniser le contenu de votre bibliothèque avec votre liseuse électronique ; 2. Installation et • Un système de conversion d’e-books. découverte de De nombreux formats sont pris en charge ; en entrée : CBZ, CBR, CBC, l’interface CHM, DJVU, EPUB, FB2, HTML, L’installation est facilitée par la présence HTMLZ, LIT, LRF, MOBI, ODT, PDF, de packages dans les dépôts des distri- PRC, PDB, PML, RB, RTF, SNB, TCR, butions les plus courantes. On notera au TXT, TXTZ ; en sortie : AZW3, EPUB, passage que Calibre nécessite pas mal FB2, OEB, LIT, LRF, MOBI, HTMLZ, de dépendances (Python et Django). Au PDB, PML, RB, PDF, RTF, SNB, TCR, premier lancement du logiciel, un assis- TXT, TXTZ ; tant vous invite à créer votre première Fig. 2 Ceci fait, vous voilà devant l’interface principale ; votre liseuse devrait être automatiquement détectée (si elle est connectée à votre ordinateur évidem- ment...). Un Quick start guide apparaît dans la liste des ouvrages disponibles. Nous ne voyons pas encore le contenu de notre Kindle ; pour y remédier, cli- quez simplement sur l’icône Appareil dans la barre d’outils. De retour dans la bibliothèque, il est possible d’ajou- ter un nouvel ouvrage via le premier bouton de la barre d’outils ; vous pour- rez au choix sélectionner un fichier sur votre disque ou saisir un ISBN. Fig. 1 : Calibre, pour organiser votre bibliothèque d’e-books 10 | Linux Pratique n°74 www.linux-pratique.com APPLICATIF Fig. 3 Fig. 4 L’affichage de l’ensemble de vos logiciel (Fig. 5) comporte les mêmes Mais le principal intérêt d’une appli- e-books pourra par la suite être filtré fonctionnalités que n’importe quel appa- cation comme Calibre réside dans la via l’un des critères se trouvant dans reil du genre : on peut sauter d’une page possibilité d’effectuer des conversions le panneau latéral gauche (auteur, for- à l’autre, effectuer une recherche tex- de format. Vous pourrez par exemple mat, éditeur, tags, etc.). Vous pourrez tuelle, agrandir ou diminuer la taille de la transformer un fichier PDF ou EPUB donc naviguer plus rapidement dans police, ajouter des signets, etc. en AZW3, compatible avec votre votre collection. Kindle. L’outil de conversion permet un Un clic droit sur l’un des items de la paramétrage très précis, puisqu’il est liste affiche le menu contextuel qui possible de définir la taille de police, vous donne accès à l’ensemble des la hauteur des lignes, l’encodage des opérations disponibles. Vous pourrez caractères, d’effectuer un rechercher/ par exemple éditer les métadonnées remplacer, etc. (Fig. 3), que Calibre aura rempli (ou Pour accéder à votre bibliothèque tenté de remplir) en interrogeant des depuis n’importe quel appareil, le ser- bases de données en ligne. veur de Calibre peut être activé au Fonctionnalité intéressante, Calibre choix, via l’icône Connecter/Partager Fig. 5 permet par ailleurs de récupérer des ou via les préférences du logiciel, actualités issues de divers sites d’in- dans la section partage (port 8080 formations ; vous pouvez même plani- par défaut). À noter que le serveur ne fier le téléchargement de ces données Le bouton Obtenir des livres permet de fonctionne pas sans Calibre, on veillera à la fréquence et à l’heure souhai- rechercher un livre en particulier (par donc à ce que le logiciel soit bien lancé tée (Fig. 4). Ceci fait, vous pourrez auteur, par titre...) et offre également un sur la machine hôte. Enfin, Calibre est envoyer ces différents flux d’informa- accès rapide aux principales boutiques capable de communiquer avec iTunes tions sur votre liseuse. en ligne d’e-books. Ainsi, sans sortir du et permet d’exporter vos e-books vers logiciel, vous pourrez rechercher de iPhone ou iPad ; nous n’avons cepen- N’hésitez pas à vous rendre dans les nouveaux ouvrages grâce à l’outil mis dant pas testé cette fonctionnalité... préférences de l’application, parmi à votre disposition (Fig. 6) ; sélection- lesquelles vous trouverez divers para- nez les boutiques à interroger, tapez mètres concernant l’interface, l’import/ vos mots-clés et faites votre choix ! On 4. Conclusion export des données, la conversion de notera la présence d’un indicateur de Calibre est doté d’une interface très format, etc. DRM dans la liste des résultats. intuitive et on apprécie ses fonctions d’indexation qui permettent de trier les 3. Organisez, e-books selon le critère de son choix, ainsi que l’outil de recherche intégré convertissez, lisez... permettant d’acquérir rapidement de Comme précisé plus haut, les livres de nouveaux contenus. La possibilité votre bibliothèque pourront être visua- d’agréger des flux d’informations est lisés via un simple clic droit. Attention également très pratique. Bien entendu, toutefois, les e-books protégés par des on se tournera préférentiellement vers DRM (comme ceux achetés sur Amazon) les œuvres tombées dans le domaine ne peuvent évidemment pas être visua- public ou bien libres de droits pour pro- lisés via Calibre ! La liseuse intégrée au Fig. 6 fiter pleinement de cet outil... www.linux-pratique.com Linux Pratique n°74 | 11 APPLICATIF GNOME Boxes, la solution de virtualisation « desktop » Fleur Brosseau GNOME Boxes est un outil conçu pour l’environnement de bureau éponyme, qui permet de se connecter à des applications exécutées sur un autre système - virtuel, local ou distant - Windows, Mac OS ou Linux. Ce nouveau logiciel est apparu quelques semaines avant la sortie d’Ubuntu 12.04. Il n’était alors proposé qu’en version de développement. Disponible en version 3.5.92 depuis le 19 septembre, Boxes est aujourd’hui proposé dans une version peaufinée dans la dernière release du bureau GNOME, publiée fin septembre. L’occasion pour nous de tester cette nouvelle application. 1. Que permet de faire 2. Installation et pré-requis GNOME Boxes ? Aujourd’hui, Boxes se trouve dans les dépôts de la plupart des distributions cou- rantes, son installation s’en trouve donc facilitée. Boxes dans sa toute dernière ver- GNOME Boxes (https://live.gnome. sion (3.5.92) se trouve ainsi dans les dépôts d’Ubuntu Quantal (12.10), Fedora 18, org/Boxes), baptisé « Machines » sur Mageia Cauldron (la version de développement de Mageia) – autrement dit les dis- les environnements de bureau franci- tributions intégrant la dernière version du bureau GNOME. Vous le trouverez éga- sés, n’est pas vraiment conçu pour les lement chez Debian Wheezy/Sid et openSUSE, mais en version inférieure (3.4.3). administrateurs système, ni destiné aux entreprises. Son but est en effet de pro- Le paquet gnome-boxes sera donc installé aisément via votre gestionnaire de poser une solution simple, à des utilisa- paquets habituel. teurs qui souhaiteraient accéder à leur Pour fonctionner, GNOME Boxes nécessite que votre processeur supporte la vir- poste de travail à distance ou bien ins- tualisation matérielle. Pour le vérifier, saisissez la commande suivante : taller et gérer sans difficulté une ou plu- sieurs machines virtuelles en local. $ cat /proc/cpuinfo | grep flags flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca À terme, le projet devrait remplacer cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm le Virtual Machine Manager (virt- constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf m a n a g e r ), conçu par Red Hat. pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 [...] Contrairement à ce dernier, Boxes est focalisé sur l’utilisation des OS invités et Dans la liste, vous devez voir vmx, comme ici (pour un processeur Intel), ou svm non pas sur l’administration de la machine (dans le cas d’un processeur AMD). En outre, il se peut que les capacités de vir- hôte. En outre, sa fonction de visionneur tualisation soient désactivées par défaut dans le BIOS du système. N’hésitez pas de bureau à distance pourrait faire de à faire un tour dans sa configuration, afin d’activer la virtualisation si nécessaire. Boxes le remplaçant de Vinagre au sein Enfin, la commande suivante vous permettra de vérifier que tout est ok avant de du bureau GNOME. lancer Boxes : Le logiciel est codé en langage Vala et est diffusé sous licence GNU LGPL ver- $ gnome-boxes --checks sion 2. Pour la création de machines vir- The CPU is capable of virtualization: yes tuelles locales, GNOME Boxes s’appuie The KVM module is loaded: yes sur KVM et SPICE (Simple Protocol for Si le module KVM n’est pas chargé, vous pouvez y remédier en chargeant le Independent Computing Environments). module à la main : L’accès aux machines distantes est quant à lui réalisé via libvirt, SPICE et VNC. $ sudo modprobe kvm L’utilisation de libvirt devrait égale- $ sudo modprobe kvm-intel ment lui permettre de gérer des machines créées avec VMware ou Virtualbox. (ou kvm-amd selon le cas...) 12 | Linux Pratique n°74 www.linux-pratique.com APPLICATIF Du côté de la barre d’outils de Boxes, on notera la présence d’une icône permet- tant de basculer en mode plein écran, ainsi qu’un moniteur de ressources sys- tème. Là, diverses options nous sont proposées : on peut tout d’abord visua- liser l’identité de la VM (virtualiseur, URI), puis l’espace disque et la quantité de RAM qui lui sont attribués (un sys- tème de curseur permet de modifier ces valeurs). Dans la section Affichage, on peut (dés)activer le partage du presse- Figure 1 papiers et le redimensionnement de l’in- vité et enfin, dans Périphériques, il est possible d’activer la redirection USB. On pourra effectuer une dernière véri- systèmes, notamment Windows XP fication, pour voir si les modules sont à 7 et Fedora, un mode d’installation L’ensemble des machines virtuelles bien chargés : express vous est proposé ; après avoir créées apparaissent en miniatures dans sélectionné le fichier image, l’étape sui- la fenêtre principale de Boxes. Un clic $ lsmod | grep kvm vante vous propose alors d’activer ce sur l’icône en haut à droite (en forme de kvm_intel 132543 0 mode, puis de renseigner nom d’utilisa- coche) permet de sélectionner une ou kvm 412517 1 kvm_intel teur et mot de passe avant de continuer. plusieurs machine(s) pour suppression ou pour les marquer comme favorites. À présent, Boxes est prêt à être utilisé... Remarquez la possibilité de redimen- L’application s’avère au final extrême- sionner à volonté la fenêtre de Boxes, ment simple à utiliser, rapide et stable. comme n’importe quelle autre applica- 3. Découverte de La facilité d’installation des machines tion et ce, sans pour autant perturber virtuelles est très appréciable. l’outil l’affichage, qui s’adapte automatique- Au premier lancement du logiciel, ... rien, ment aux nouvelles dimensions. ou presque. Seul un bouton Nouveau Si vous souhaitez utiliser Boxes en tant 4. Boxes 3.6 habite l’interface.Instinctivement, on que visionneur de bureau à distance, L’équipe de développement a bien tra- clique dessus afin de créer notre pre- vous devez saisir l’URL de la machine vaillé depuis la version de prévisualisa- mière « box », ou système virtuel. dont vous souhaitez visualiser le bureau. tion, en corrigeant de nombreux bogues Au choix, nous indiquons ensuite une À savoir que Boxes prend en charge les et en proposant davantage de fonction- URL ou un fichier ISO du système protocoles VNC, SPICE ou RDP. Pour nalités. Boxes a été conçu pour détermi- à installer (Fig. 1), puis on clique sur le bon fonctionnement de la connexion, ner automatiquement la quantité de RAM Continuer. À noter que l’application liste on n’oubliera pas, bien entendu, de lan- et d’espace disque nécessaire en fonc- ici les images ISO qu’elle a détecté auto- cer le serveur adéquat sur la machine tion de l’OS à installer (via libosinfo). matiquement sur le système hôte ou distante (x11vnc, spice-server, Eh bien dorénavant, la version 3.6 pro- que vous avez précédemment utilisées ; xrdp...) et éventuellement de paramé- pose un nouveau bouton permettant de un simple clic sur l’une d’entre elles et trer le pare-feu en conséquence pour personnaliser ces paramètres ; parmi le système se lance. Pour certains permettre la connexion. ceux-ci, on appréciera la possibilité de renommer la machine virtuelle, ce qui s’avère plus pratique lorsque l’on en gère plusieurs. En outre, vous dispose- rez dorénavant d’une zone de recherche pour accéder plus rapidement à la VM de votre choix. Globalement, l’affichage et les animations sont bien plus fluides. L’utilisation en ligne de commandes a elle aussi été améliorée ; la commande gnome-boxes --checks retourne en effet davantage d’informations (à propos de libvirt et du contexte SELinux) et une machine virtuelle pourra être sim- plement lancée comme suit : $ gnome-boxes www.linux-pratique.com Linux Pratique n°74 | 13 APPLICATIF DocFetcher, votre allié pour indexer et (ré)exploiter vos documents Fleur Brosseau DocFetcher est une application qui permet d’effectuer des recherches dans le contenu des fichiers se trouvant sur votre disque. Sur le site du projet, on l’assimile même à une sorte de moteur de recherche Google, mais en local. Et pour cause : saisissez les termes ou l’expression régulière de votre choix et vous n’avez plus qu’à parcourir la liste des résultats pour retrouver le passage qui vous intéresse... 1. Présentation DocFetcher est publié sous licence open source EPL (Eclipse Public License) ; il fonctionne sous Linux, Mac OS X et Windows, sur systèmes 32 ou 64 bits. Son fonctionnement nécessite un JRE (Java Runtime Environment) en version 1.6.0 ou supérieur. Son installation sous Linux consiste à récupérer une archive sur le site du projet, à en extraire le contenu et à exécuter le script .sh fourni. Pour commencer, DocFetcher sup- porte un ensemble de formats de fichiers plutôt conséquent : OpenOffice.org (ODT, ODS, ODG, ODP, OTT, etc.), Microsoft Office (DOC, DOCX, XLS, XLSX, PPT, etc.), Microsoft Outllook (PST), Microsoft Visio (VSD), PDF, SVG, HTML, RTF, Abiword (ABW) et format texte simple. Figure 1 Il supporte également les formats d’ar- chive ZIP, 7Z, RAR et TAR.*. sont listés juste en-dessous ; une 2. Première étape : On notera que DocFetcher est en fenêtre de pré-visualisation vous per- outre capable de détecter les paires met de parcourir le contenu du fichier l’indexation de fichiers HTML, c’est-à-dire, le sélectionné dans la liste (les termes Bien entendu, comme toute applica- fichier HTML en lui-même, ainsi que le recherchés sont surlignés). tion de ce genre, DocFetcher néces- répertoire d’éléments qui lui est asso- Sur la gauche, vous trouverez les dif- site qu’il existe un index des différents cié ; il traite alors l’ensemble comme férents filtres qu’il est possible d’appli- fichiers dans lesquels vous souhai- un seul et même document. quer à la liste de résultats : par taille tez lancer des recherches. La créa- Son utilisation est assez intuitive minimum et/ou maximum, par type tion d’un nouvel index s’effectue de la (Fig. 1) : un champ de recherche en de fichier, par emplacement sur le façon suivante : un clic droit dans la haut de la fenêtre principale vous disque. Le raccourci [Ctrl]+[F] permet zone Search Scope affiche le menu permet de saisir le ou les termes de ramener le focus sur le champ de contextuel avec l’option Create Index recherché(s). Les différents résultats recherche. From. Vous avez alors le choix entre 14 | Linux Pratique n°74 www.linux-pratique.com APPLICATIF , , (autre- Folder Archive Outlook PST Note ment dit, les mails de Microsoft 3. Formuler sa Outlook) ou Clipboard. On choisit requête et organiser Notez que le lien des paramètres avan- l’option Folder afin de définir les cés vous mène directement à l’édition du répertoires que nous souhaitons les résultats fichier de configuration de l’application (DocFetcher-1.1.3/conf). Outre les indexer (Fig. 2). DocFetcher accepte bien sûr les opé- options concernant l’apparence et l’affichage, La fenêtre de dialogue qui apparaît rateurs OR, AND et NOT (que l’on saisira remarquez la présence de l’option Analyzer ensuite vous propose de préciser toujours en majuscules) au sein de vos (en fin de fichier), qui définit le type d’ana- des extensions de fichier personnali- requêtes. Il est également possible : lyse durant l’indexation. Si vous envisagez sées pour les recherches plein texte • d’utiliser des caractères jokers (wild- d’indexer une majorité de fichiers de code, et les archives zip) et de définir éven- cards), autrement dit * et ?, mieux vaut fixer ici sa valeur à 1, afin d’avoir tuellement des expressions régu- • d’effectuer la recherche d’une por- une analyse de contenu plus adaptée. lières permettant d’exclure certains tion de phrase, en entourant celle-ci fichiers de l’indexation. Par exemple, par des doubles-cotes ; pour don- Une fois les résultats affichés, il est pour exclure les fichiers PDF de l’in- ner plus de poids à l’un des termes possible de trier ceux-ci en cliquant dexation ou pourra écrire : .*\.pdf. recherchés, on pourra le précéder du sur l’entête de colonne correspondant Ceci fait, on peut cliquer sur Run pour caractère +, (par taille, par nom de fichier, etc.). Les lancer l’indexation. Celle-ci est bien • de pondérer les différents termes, colonnes peuvent quant à elle être réor- entendu plus ou moins longue selon c omme c ec i : ‘’ t e r m e 1 ^ 5 ganisées par simple glisser-déposer. la quantité de fichiers à indexer... Le terme2^2’’, site du projet annonce une vitesse de 200 fichiers par minute environ. • de procéder à une recherche de simi- larité ou de proximité, à l’aide du 4. Son principal Bien entendu, un index est créé à caractère ~. Par exemple, la requête atout : la précision un instant t et la base documen- crypt~ retournera les termes « cryp- taire peut être amenée à changer. ter », « script », etc. Pour une recherche En effet, les atouts de DocFetcher réside C’est pourquoi DocFetcher vérifie à de proximité, on précisera en outre le dans la précision avec laquelle il est pos- chaque démarrage s’il n’y a pas eu nombre de mots séparant les termes sible de définir les éléments à indexer, de modifications dans les répertoires recherchés, comme ceci : ‘’terme1 ainsi que les nombreux filtres propo- indexés, auquel cas il se charge de terme2’’~10. sés pour affiner les résultats. Simple à mettre l’index à jour automatique- prendre en main, DocFetcher est une • de restreindre la recherche à certaines ment. Lorsque l’application n’est pas solution plutôt séduisante pour indexer métadonnées (filename, title, lancée, un démon peut s’exécuter en ses fichiers et profiter ultérieurement author, etc.) : filename:’’terme1 arrière-plan (il faut dans ce cas ajou- d’une véritable base documentaire. terme2’’ ter le script fourni aux programmes lancés au démarrage du système) Les préférences du logiciel (Fig. 3) sont Liens et ainsi surveiller les répertoires accessibles via l’une des icônes se trou- indexés ; s’il détecte des modifica- vant en haut à droite de l’interface prin- Le site du projet : http://docfetcher. tions, celles-ci sont consignées puis cipale. On peut y remarquer notamment sourceforge.net/en/index.html signalées à DocFetcher dès son pro- que c’est l’opérateur OU qui est utilisé par Le Wiki du projet : http://docfetcher. chain lancement. défaut dans les requêtes (et non ET). sourceforge.net/wiki/doku.php Figure 2 Figure 3 www.linux-pratique.com Linux Pratique n°74 | 15 en Couverture La gestion de configuration simplifiée avec Ansible Benoît Benedetti Certains administrateurs abandonnent l’idée d’utiliser de tels outils, malgré les avantages apportés. Ceux qui les adoptent doivent éga- lement utiliser un outil de déploiement (comme Fabric [FABRIC]) et un outil d’exécution de commandes (comme Func [FUNC]) pour répondre à toutes les tâches d’administration d’un parc de plu- Si vous avez testé, ou êtes sieurs machines. utilisateur d’un système de Michael Dehaan [BLOG] est arrivé au même constat. Michael a tra- vaillé pour des grands comptes, dont Red Hat, chez qui il a déve- gestion de configuration, comme loppé Cobbler [COBBLER] et faisait également partie de l’équipe l’un parmi les plus connus à l’origine de Func. Il sait donc de quoi il parle, connaît bien les besoins en administration système, et a voulu développer un outil CFEngine, Puppet ou Chef, pour répondre à ces exigences. Un outil unique, qui permette de vous savez que leur courbe gérer la configuration, déployer des fichiers et exécuter des com- mandes parallèlement sur un ensemble de serveurs. Un outil qui d’apprentissage est forte. Il soit simple à installer, simple à prendre en main et à utiliser. Et vous faudra apprendre une Ansible [ANSIBLE] est né début 2012. syntaxe, installer les outils clients Le fonctionnement de Ansible est on ne peut plus simple (Fig. 1). Il ne nécessite pas de serveurs avec des fichiers à la configuration et serveurs appropriés, voire complexe, ou un processus démon installé sur les clients qui leur adopter la « philosophie » d’un permet de récupérer leur configuration. Installé sur une station d’ad- ministration, Ansible contient la configuration dans un format simple tel logiciel. et communique avec les clients via SSH, protocole sûr et éprouvé, disponible et installé dans tout parc de machines Linux. Ansible ne (Source: http://ansible.github.com) 16 | Linux Pratique n°74 www.linux-pratique.com en Couverture nécessite pas d’ouvrir de nouveaux ports, ou d’autoriser un que l’on peut préciser un fichier de notre choix par l’option processus avec les droits root à s’exécuter sur vos machines, --inventory (-i), nous allons créer le fichier ~/.ansible/ ce qui sera un plus pour être accepté par l’équipe réseau. hosts dans le répertoire personnel de l’utilisateur qui a ins- Pour exécuter une commande sur vos machines, Ansible tallé Ansible. Commencez par créer le dossier qui va conte- utilise des modules. Plusieurs sont déjà disponibles et vous nir la configuration d’Ansible : pouvez écrire les vôtres dans le langage de votre choix, en $ mkdir ~/.ansible utilisant l’API de Ansible. Pour exécuter des tâches plus com- plexes, composées de plusieurs commandes, Ansible utilise Puis, créez le fichier ~/.ansible/hosts suivant, qui des playbooks, des scénarios écrits dans un langage simple. contient pour l’instant seulement notre machine locale : 1. Installation localhost Écrit en Python, Ansible utilise au minimum la version 2.6 Nous pouvons exécuter notre première commande : du langage. Si vous souhaitez installer Ansible sur des sys- $ ansible localhost -i ~/.ansible/hosts --ask-pass -a «whoami» tèmes plus anciens, ou contrôler des clients ne disposant SSH password: pas de Python 2.6, vous trouverez les instructions sur la localhost | success | rc=0 >> page d’installation officielle [DOCUMENTATION]. toto Dans cet article, nous allons installer et utiliser Ansible ansible whoami depuis une machine d’administration sous Debian 6. exécute la commande sur la machine localhost ~/.ansible/hosts Plusieurs méthodes d’installation sont décrites dans la docu- listée dans le fichier . Pour mentation officielle : nous allons installer via Git la version éviter de préciser le fichier à chaque appel, vous pouvez uti- ANSIBLE_HOSTS en cours de développement, soit la version 8 : liser la variable d’environnement : $ sudo aptitude -y install git python-jinja2 python-yaml $ export ANSIBLE_HOSTS=~/.ansible/hosts python-paramiko #quelques dépendances Ajoutez la ligne suivante à votre fichier ~/ansible/ $ git clone git://github.com/ansible/ansible.git hacking/env-setup pour initialiser cette variable d’envi- Cloning into ansible... ronnement à chaque début de session : Remarquez que je n’ai pas exécuté la commande git via sudo pour installer les sources d’Ansible dans un dossier ... particulier, un utilisateur sans privilèges pouvant récupérer export MANPATH=$PREFIX_MANPATH:$MANPATH export ANSIBLE_HOSTS=~/.ansible/hosts et exécuter Ansible. Pour l’utiliser, chargez l’environnement, depuis le dossier ansible récupéré : # Print out values unless -q is set $ source ansible/hacking/env-setup ... PATH=/home/user/ansible/bin:/usr/local/bin:/usr/bin:/bin:/usr/ Par défaut, les commandes sur les machines distantes sont local/games:/usr/games exécutées avec l’utilisateur qui a lancé ansible (ici l’utilisa- PYTHONPATH=/home/user/ansible/lib: toto ANSIBLE_LIBRARY=/home/user/ansible/library teur , comme indiqué par la sortie de notre première MANPATH=/home/user/ansible/docs/man: commande ansible). Pour exécuter des commandes sous Reminder: specify your host file with -i un utilisateur différent, passez l’option --remote-user (-u). Done. L’option --ask-pass (ou -k) utilise l’authentification par mot de passe et vous demandera le mot de passe de l’uti- Vous pouvez ajouter la commande précédente à la fin de lisateur qui va exécuter la commande. Par simplicité, vous votre fichier ~/.bashrc pour initialiser l’environnement pouvez générer une paire de clés SSH, qui couplée avec d’Ansible à chacune de vos sessions : ssh-agent, vous évitera de taper le mot de passe à chaque ... exécution : source ~/ansible/hacking/env-setup $ ssh-keygen 2. Lister ses machines et Puis, ajoutez la clé générée à ssh-agent : $ ssh-agent bash ;ssh-add /home/toto/.ssh/id_rsa_ansible premières commandes Enter passphrase for /home/toto/.ssh/id_rsa_ansible: Dans sa forme la plus simple, Ansible exécute une com- mande sur une ou plusieurs machine(s). Ces machines Copiez la clé publique dans le dossier de l’utilisateur sur la doivent être listées dans un fichier d’inventaire, par défaut machine distante : /etc/ansible/hosts. Ce fichier n’existe pas. Étant donné $ cat ~/.ssh/id_rsa_ansible.pub >> ~/.ssh/authorized_keys que nous travaillons avec un utilisateur non privilégié, et www.linux-pratique.com Linux Pratique n°74 | 17 en Couverture La gestion de configuration simplifiée avec Ansible Note #un groupe dev [dev] Vous devrez bien sûr renouveler ces manipulations lors 192.168.0.10 de l’ajout de machines supplémentaires à gérer. Et les 192.168.1.10 adapter, vu que nous travaillons sur la machine locale pour le moment et que nous avons effectué une simple #un groupe web copie en local ici. [web] front.example.fr a.exemple.fr La commande initiale peut maintenant être simplement b.exemple.fr appelée par : c.exemple.fr d.exemple.fr $ ansible localhost -a «whoami» e.exemple.fr Vous pouvez utiliser l’option --sudo (-s), pour exécuter une #un groupe db commande via sudo sur la machine distante. Étant donné [db] que vous avez sécurisé sudo (enfin, j’espère), il vous fau- db.exemple.fr dra utiliser l’option --ask-sudo-pass pour demander d’af- db.exemple.net ficher un prompt supplémentaire pour la saisie du mot de #un groupe de groupes prod, incluant les groupes web et db. passe. L’option --sudo-user (-U) permet d’exécuter sudo #notez l’utilisation de ‘children’ pour indiquer avec l’utilisateur précisé, au lieu de root par défaut. Une #que les noms qui suivent font référence commande qui utiliserait un mélange de toutes ces options #à d’autres groupes existants et non à des machines: nous donnerait : [prod:children] web $ ansible localhost -a «ls /home/tata» -k -u titi -s -K -U tata db SSH password: sudo password: Pour exécuter une commande avec ansible, on cible une ... ou des machine(s) avec un motif. Nous avons déjà vu l’uti- lisation du nom de la machine pour motif, avec localhost Cet appel d’ansible se connecterait à localhost avec comme motif. Vous pouvez cibler une machine par IP, un l’utilisateur titi en demandant son mot de passe (-k). Il groupe ou un groupe de groupes : exécuterait la commande ls dans le répertoire /home/tata de localhost sous l’utilisateur tata via sudo (il faut bien $ ansible 192.168.0.10 -a «uname -a» #une machine sûr que titi soit autorisé sur localhost à utiliser une telle $ ansible web -a «uname -a» #un groupe commande sous sudo en tant que tata) en demandant son $ ansible prod -a «uname -a» #un groupe de groupes mot de passe. Dans un groupe, vous pouvez limiter le nombre de machines Si vous utilisez beaucoup d’options de manière récur- ciblées avec [x-y], x étant l’indice de la première machine rente, vous pouvez créer un fichier ~/.ansible.cfg pour du groupe à cibler, y la dernière (la numérotation de l’in- les déclarer. La commande ansible utilisera tous les dice commence à zéro). Dans notre fichier exemple, la paramètres de ce fichier par défaut. Un fichier d’exemple commande s’exécuterait sur les machines a.example.fr, ansible/examples/ansible.cfg est disponible dans les b.example.fr et c.example.fr : sources d’Ansible rapatriées par Git. $ ansible web[1-3] -a «uname -a» # machines d’indice 1 à 3 du groupe web 3. Gérer des groupes de Pour un nom de machine, vous pouvez utiliser le joker * dans votre motif, pour cibler plusieurs machines en même machines temps (all est un alias de * tout court) : Notre fichier ~/.ansible/hosts ne liste qu’une machine. Vous pouvez bien sûr ajouter autant de machines que néces- $ ansible * -a «uname -a» #cible toutes les machines du fichier hosts... $ ansible all -a «uname -a» #...all et * sont équivalents saire, par IP ou nom DNS, pour gérer l’ensemble de votre $ ansible 192.168.* -a «uname -a» #toutes les machines dont l’IP parc. Ce fichier accepte également des groupes, voire des commence par 192.168 groupes de groupes, pour organiser vos machines, comme $ ansible *.fr -a «uname -a» #toutes les machines de nom finissant par dans l’exemple suivant : ‘.fr’ #des machines n’appartenant à aucun groupe Le caractère * s’applique sur tous les noms de machine du localhost hosts 10.0.1.10 fichier d’inventaire , indépendamment de leur appar- #on peut utiliser des plages dans des listes d’IP...: tenance ou non à un groupe. En utilisant le caractère :, vous 10.0.2.[01:20] pouvez combiner différents motifs : #...comme dans des noms DNS: servers[01:20].exemple.fr $ ansible localhost:192.168.*:web -a «uname -a» 18 | Linux Pratique n°74 www.linux-pratique.com en Couverture 4. Les modules 5. Playbooks La commande ansible exécute obligatoirement une tâche Jusqu’à présent, nous nous sommes servis exclusive- en précisant le module à utiliser par l’option -m. Jusqu’à ment de la commande ansible. Comme l’ont montré les présent, nous avons exécuté une tâche de type ligne de exemples d’utilisation, elle est parfaite pour effectuer des commandes, car le module command est utilisé par défaut tâches ponctuelles, et conçue pour cela : stopper un service, si aucune option -m n’est précisée : redémarrer une machine, copier un fichier. Par contre, elle s’avère limitée pour gérer complètement la configuration d’un $ ansible localhost -a «uname -a» # est équivalent à ... parc de machines. Imaginons que vous utilisiez ansible $ ansible localhost -m command -a «uname -a» pour installer une ou plusieurs machine(s). Quelques temps plus tard, vous désirez installer une machine supplémentaire On passe des arguments à un module avec l’option de manière similaire. Rejouer une à une les commandes -a. Les arguments utilisables dépendent du module, ansible (en supposant que vous les ayez sauvegardées !), comme com mand qui accepte une commande à exé- ne s’avère pas optimale pour cette situation. cuter entre guillemets, comme nous l’avons déjà vu. Par contre, tous les modules acceptent la forme clé=valeur Ansible permet de grouper et de jouer plusieurs tâches, simi- comme paramètre. Dans la documentation officielle des laires à celles exécutables par la commande ansible, dans modules [MODULES], vous trouverez leur liste, ainsi que les un playbook. Un playbook offre d’autres fonctionnalités, qui paramètres clé=valeur qu’ils supportent. Les modules dis- vont vous permettre de centraliser la configuration de votre ponibles par défaut permettent d’effectuer les tâches d’ad- infrastructure, à la manière d’un Manifest de Puppet, ou d’un ministration les plus courantes : cookbook Chef. À la différence de ces derniers, un play- book est facile à écrire et à lire, dans le format YAML. Ce $ ansible localhost -m file -a «path=/etc/foo.cfg owner=toto group=root format est simple à assimiler et sa page d’introduction dans mode=0600» # modifier les attributs d’un fichier la documentation officielle [YAML] suffira comme base pour $ ansible localhost -m apt -a «name=tmux state=installed» #installer un rédiger un playbook. module via apt... $ ansible localhost -m yum -a «name=tmux state=installed» #.. ou via yum Les attributs les plus importants, et obligatoires, d’un play- $ ansible localhost -m service -a «name=rsyslog state=restarted» book sont les machines cibles sur lesquelles exécuter le #redémarrer un service playbook et la (ou les) tâche(s) à exécuter. Une tâche est $ ansible localhost -m copy -a «src=conf/foo.cfg dest=/etc/foo.cfg composée d’un nom pour la décrire et d’une action. Une owner=root group=root mode=0600» #copier un fichier action est simplement l’appel à un module. De nombreux autres attributs optionnels sont utilisables. Voyons un exemple simple : Note Dans le cas de la copie d’un fichier, l’utilisateur exécutant --- ansible doit avoir les droits pour lire le fichier source. #hosts peut prendre pour valeur une machine, un groupe ou un groupe de groupes Il existe encore d’autres modules pour gérer les utilisateurs, les - hosts: localhost groupes, les clés SSH, MySQL ou PostgreSQL. Je vous renvoie vars: vers la page dédiée aux modules de la documentation officielle #On peut déclarer des variables utilisables dans les différentes sections citée précédemment. Si vous n’y trouvez pas votre bonheur, #sous la forme «nom: valeur». Le nom peut prendre n’importe quelle chaîne vous pouvez écrire votre propre module [MODULEDEV], dans #de caractères. le langage de script de votre choix. Pour cela, gardez en tête le #La valeur peut être complexe comme un test... principe d’exécution d’un module : is_debian: «’$ansible_distribution’ == ‘Debian’» #...ou une simple valeur numérique • Ansible crée une connexion SSH vers la machine cible, limite: 20 • Le module/script est copié vers cette machine, tasks: • Le module est exécuté avec les arguments passés à - name: Une première tâche qui installe le module PHP d’Apache ... ansible -a via l’option , action: apt name=libapache2-mod-php5 state=installed • Le module doit retourner le résultat de son exécution au #...seulement si la variable is_debian est vraie format JSON à ansible. only_if: ‘$is_debian’ #on peut assigner un tag à une tâche Si votre module fait appel à une librairie (par exemple un tags: php5 module écrit en Ruby qui utiliserait une gem), cette librai- rie doit être présente sur la machine cible qui exécute au - name: Une deuxième tâche qui utilise un template jinja final le module. Un module doit également essayer d’être action: template src=conf_files/php.ini.j2 dest=/etc/php5/apache2/ idempotent le plus souvent possible : si une tâche a déjà php.ini été réalisée, elle ne doit pas être à nouveau exécutée. Par tags: phpconf #Si elle est effectuée, on exécute un handler qui redémarre Apache exemple, le module copy ne copie pas un fichier si la source notify: restart serveur web et la destination sont égales (elles sont comparées via md5). www.linux-pratique.com Linux Pratique n°74 | 19 en Couverture La gestion de configuration simplifiée avec Ansible Dans cette phase, ansible-playbook récupère un handlers: #Le handler qui redémarre Apache ensemble d’informations sur la machine cible, sous la forme - name: restart serveur web de couples paramètre/valeur au format JSON, pour son action: service name=apache state=restarted usage interne et utilisable dans les playbooks qu’il exécute. C’est l’équivalent de Facter chez Puppet et Ohai pour Chef. Même sans en connaître plus sur un playbook, la simple Pour connaître ces différents paramètres et leur valeur, uti- lecture du listing précédent suffit à comprendre son fonction- lisez le module setup sur une machine cible comme suit : nement et son effet. Imaginons que nous l’ayons enregistré dans un fichier ~/.ansible/php.yml. Pour vérifier que le $ ansible all -m setup #pour, par exemple, récupérer les playbook va bien s’exécuter sur les machines attendues, informations de toutes les machines ou... --list-hosts $ ansible localhost -m setup #...juste une machine en utilisez l’option : particulier. ... $ ansible-playbook ~/.ansible/php.yml --list-hosts «ansible_distribution»: «Debian», hosts in play 1: unnamed «ansible_distribution_release»: «NA», localhost «ansible_distribution_version»: «6.0.5», «ansible_eth0»: { Une fois cette vérification facultative faite, pour appliquer le «device»: «eth0», playbook, lancez la commande suivante : «ipv4»: { «address»: «192.168.0.13», $ ansible-playbook ~/.ansible/ifconfig.yml «netmask»: «255.255.255.0», SSH password: «network»: «192.168.0.0» sudo password: } PLAY [localhost] ********************* ... GATHERING FACTS ********************* ok: [localhost] Un autre moyen de définir des variables est dans le fichier TASK: [Une première tâche qui installe le module PHP d’Apache...] ****** hosts qui liste les machines : ok: [localhost] TASK: [Une deuxième tâche qui utilise en template jinja] ************** fatal: [localhost] => {‘msg’: «[Errno 2] No such file or directory: u’/ ... conf_files/php.ini.j2’», ‘failed’: True} #Variables s’appliquant au groupe web fatal: [localhost] => {‘msg’: «[Errno 2] No such file or directory: u’/ [web:vars] conf_files/php.ini.j2’», ‘failed’: True} limit=20 PLAY RECAP ********************* ... localhost : ok=2 changed=0 unreachable=1 failed=0 Un moyen plus organisé de gérer vos variables, sans sur- La sortie de la commande est explicite. Toutes les tâches charger votre fichier hosts ou vos playbooks, est d’exter- sont exécutées par ansible-playbook dans l’ordre indi- naliser ces données. Pour les données d’une machine, elles qué dans le playbook, et l’exécution d’un playbook s’inter- seront contenues dans le fichier host_vars/nom_de_la_ rompt dès qu’une erreur est rencontrée. Comme ici, lors de machine et dans group_vars/nom_du_groupe pour la deuxième tâche, pour laquelle un fichier fait défaut. Nous un groupe, fichiers au format YAML. Les dossiers host_ allons y revenir. vars et group_vars sont à créer dans le dossier conte- nant le fichier hosts. Pour revenir à notre exemple, si la Note variable limit n’était définie ni dans le playbook, ni dans hosts, on pourrait créer le fichier de variables pour local- Je les ai omis ici par souci de lisibilité, mais la commande host ~/.ansible/host_vars/localhost suivant : ansible-playbook partage certains paramètres avec la commande ansible, comme les options -u, -k, -K --- ou -U pour la connexion utilisateur et sudo. Le fichier limit: 20 de configuration ~/.ansible.cfg est également lu par ansible-playbook pour simplifier son utilisation. Un dernier moyen est de passer les variables directement sur la ligne de commandes : Vous pouvez jouer seulement une tâche en particulier, si celle-ci a été taggée dans le playbook : $ ansible-playbook ~/.ansible/php.yml --extra-vars=»limit=20» $ ansible-playbook ~/.ansible/ifconfig.yml --tags «php5» L’utilisation des variables est vraiment intéressante avec les templates. Les templates s’utilisent dans une action par Les variables sont intéressantes à utiliser dans vos play- le module template (l’utilisation du module template books. Vous pouvez les y déclarer directement, comme est également possible avec la commande ansible tout pour les variables limit et is_debian. Cette dernière court). Le format de template utilisé est le format Jinja2 est complexe, elle utilise un test pour savoir si $ansible_ de Python [JINJA2]. Dans notre deuxième tâche, on uti- distribution est égale à la chaîne D e bian. La lise le template conf_files/php.ini.j2, qui contient valeur de ansible_distribution est récupérée par la ligne suivante (on utilise un chemin relatif au dossier ansible-playbook lors de la phase GATHERING FACTS. ~/.ansible ; le dossier conf_files est donc à créer, en 20 | Linux Pratique n°74 www.linux-pratique.com en Couverture plus du fichier php.ini.j2 bien sûr. Une API REST et une interface web Vous pouvez également utiliser un 6. Optimiser cliente de cette API [COMMANDER] chemin absolu pour vos templates l’exécution de vos sont en cours de développement, dans un playbook) : pour paramétrer Ansible depuis votre tâches navigateur et pas seulement via la ... console. Surveillez les différentes post_max_size = {{ limit }}M Les commandes a n s i b l e et annonces et leur lot de nouveautés, ... ansible-playbook acceptent l’op- tion --fork (-f) pour s’exécuter via pour un projet qui s’affirme peu à peu {{ limit }} sera remplacé par plusieurs processus en parallèle : comme une alternative sérieuse aux la valeur de la variable limit dans systèmes de gestion de configuration le fichier destination /etc/php5/ $ ansible all -a «uname -a» -f 15 existants. apache2/php.ini : La commande ansible permet égale- ... ment d’exécuter une tâche longue en post_max_size = 20M Références arrière-plan avec l’option -B, et de sur- ... veiller son exécution avec -P. [FABRIC] fabfile.org Pour en finir avec notre aperçu d’un Le fonctionnement par défaut de [FUNC] playbook, vous vous rappelez de Ansible est appelé mode Push, qui http://func.et.redhat.com/ la notion d’idempotence de l’exé- fait toute sa simplicité : une machine [BLOG] cution d’un module ? Si l’exécution d’administration « pousse » des http://michaeldehaan.net/ d’un module a modifié le système commandes, des fichiers vers des [COBBLER] cible (nouveau fichier, paquetage...), machine cibles. il retourne alors une notification de https://fedorahosted.org/cobbler/ modification à ansible-playbook. Un mode Pull est disponible, mode [ANSIBLE] http://http://ansible.cc Dans une tâche, on peut déclencher intéressant si vous avez un parc un handler avec l’attribut notify, si le important à gérer et que le mode Push [DOCUMENTATION] module de l’attribut action a effectué montre ses limites. Ce mode permet à http://ansible.cc/docs/ des modifications. une machine de récupérer une copie gettingstarted.html de la configuration en local depuis le Techniquement, un handler se défi- [MODULES] http://ansible.cc/ poste maître, grâce à la commande nit comme une tâche, avec un nom et docs/modules.html ansible-pull. Ansible sera ensuite une action, action qui peut faire appel exécuté via cron sur chaque machine, [MODULEDEV] http://ansible.cc/ à n’importe quel module. En pratique, en mode local (option -c local). Le docs/moduledev.html un handler utilisera généralement le mode Pull nécessite donc d’instal- module service pour redémarrer un [YAML] http://ansible.cc/docs/ ler Ansible en local sur toutes les service. Comme c’est le cas de notre YAMLSyntax.html machines à gérer. handler « restart serveur web », qui [JINJA2] redémarre Apache seulement si notre http://jinja.pocoo.org/docs/ deuxième tâche est effectuée (lors de la 7. Conclusion création ou de la mise à jour du fichier [PLAYBOOK1] http://ansible.cc/ Bien qu’étant une simple introduction docs/playbooks.html /etc/php5/apache2/php.ini). à Ansible, cet article a démontré l’inté- Les playbooks offrent de nombreuses [PLAYBOOK2] http://ansible.cc/ rêt qu’Ansible peut présenter pour une docs/playbooks2.html autres possibilités [PLAYBOOK1] plus infrastructure qui aurait besoin d’une avancées [PLAYBOOK2], et de nom- solution de gestion de configuration, [PLAYBOOK3] breuses options [PLAYBOOK3] et qui ne peut s’investir dans des solu- https://gist.github.com/2979474 vous trouverez des exemples dans tions trop complexes et veut se baser [PLAYBOOK4] https://github. les sources du projet [PLAYBOOK4]. sur l’existant tel que SSH pour être com/ansible/ansible/tree/devel/ Vous pouvez inclure un ou plusieurs rapidement opérationnelle. examples/playbooks playbooks dans un autre playbook pour Un plugin [VAGRANT-ANSIBLE] factoriser au maximum la configuration [PRATIQUES] http://ansible.cc/ de votre parc. La rédaction et l’organi- pour utiliser Ansible avec Vagrant docs/bestpractices.html [VAGRANT] est disponible. Il vous sation de vos playbooks dépendra de [VAGRANT-ANSIBLE] votre stratégie de gestion de configu- permettra aussi bien d’évaluer Ansible, que de tester vos playbooks et com- https://github.com/dsander/ ration, sachant que vous trouverez sur vagrant-ansible la documentation officielle une liste de mandes, si vous comptez l’adopter. bonnes pratiques pour bien démar- Ansible est un projet qui évolue vite, la [VAGRANT] http://vagrantup.com/ rer [PRATIQUES], comme des conseils version 0.8 a déjà dû être stabilisée au sur l’organisation de l’arborescence de moment où vous lirez ces lignes et la [COMMANDER] https://github. vos dossiers et fichiers. version 0.9 en train de pointer son nez. com/ansible/ansible-commander www.linux-pratique.com Linux Pratique n°74 | 21 système & réseau Protéger des données sensibles : quelques solutions rapides Fleur Brosseau Tout le monde a sur son disque dur un ou plusieurs fichier(s) contenant des informations très personnelles (liste de mots de passe, comptabilité, etc.). Bien que les risques d’attaques soient minimes et que vous ayez confiance en chacun des membres de votre foyer, vous seriez plus serein si ces informations critiques n’étaient lisibles que par vous et vous seul. Pour ce faire, voici quelques solutions simples et rapides à mettre en place. Quelques rappels ~$ aespipe < fichier à chiffrer > fichier de sortie préliminaires... Vous devez alors saisir un mot de passe ; ce dernier doit faire 20 caractères minimum. Chiffrer un fichier consiste à rendre son contenu indéchiffrable s’il est consulté tel quel. Le seul moyen d’accéder au contenu ~$ aespipe < secret.txt > protected.txt est de détenir une ou deux clés selon l’algorithme utilisé pour Password: le chiffrement. On en distingue en effet deux types [1] : ~$ cat protected.txt # q 0 K#P • les algorithmes symétriques : une même clé sert à chif- ⃞ ## # +(0 # +! frer et à déchiffrer le message et n’est connue que des ~$ deux correspondants. Parmi les plus connus : DES (Data Encryption Standard), triple DES, AES (Advanced L’algorithme utilise des clés de 128, 192 ou 256 bits. L’option Encryption Standard), RC2 et RC4, IDEA (International -e permet de spécifier un algorithme de chiffrement parmi : Data Encryption Algorithm), Blowfish. AES128 (par défaut), AES192 et AES256. Le fichier d’origine • les algorithmes asymétriques : ils sont basés sur 2 clés, une n’étant pas écrasé, on pensera à le supprimer si nécessaire... clé publique et une clé secrète, qui dépendent mathématique- L’option -d permet de déchiffrer les données : ment l’une de l’autre. La clé publique peut être diffusée sans risque, à autant de personnes que nécessaire, mais la clé ~$ aespipe -d < protected.txt > unencrypted.txt secrète, qui sert à déchiffrer le message, doit être bien pro- tégée. Ce mode de chiffrement présente l’avantage de per- mettre l’authentification mutuelle des deux correspondants. Il 1.2 mcrypt permet également de signer un document. L’algorithme asy- Il s’agit d’une commande Unix, qui vient remplacer la com- métrique le plus utilisé est sans aucun doute le RSA, du nom mande crypt, devenue aujourd’hui obsolète. On l’utilise de de ses créateurs Rivest, Shamir et Adleman. la façon suivante : Concernant les protocoles de chiffrement, qui utilisent ~$ mcrypt -a ~$ mcrypt --list 1. Chiffrer un fichier On vous demande ensuite de saisir une phrase de passe (2 1.1 aespipe fois). Vous obtenez alors un fichier d’extension .nc, dont le Le programme aespipe (http://loop-aes.sourceforge.net/ contenu est illisible. Ici encore, le fichier d’origine n’est pas aespipe/) s’utilise de la façon suivante : supprimé automatiquement, n’oubliez pas de le supprimer ! 22 | Linux Pratique n°74 www.linux-pratique.com système & réseau Puis, pour déchiffrer le fichier, on saisira la commande : 1.5 GNU Privacy Guard (GPG) ~$ mcrypt -d fichier.nc GPG, implémentation GNU du standard OpenPGP, per- Enter passphrase: met d’échanger des messages signés et/ou chiffrés, ce qui File secret.nc was decrypted. garantit l’authenticité et/ou la confidentialité du message. GPG est basé sur un système de clés asymétriques. 1.3 bcrypt 1.5.1 Gestion des clés bcrypt (http://bcrypt.sourceforge.net/) est un utilitaire de On commence par générer une paire de clés : chiffrement basé sur l’algorithme Blowfish. Le fichier chiffré est protégé par une phrase de passe de 8 caractères mini- ~$ gpg --gen-key mum. Le programme est très simple à utiliser : S’ensuit une série de questions concernant le type de clés, ~$ bcrypt www.linux-pratique.com Linux Pratique n°74 | 23 système & réseau Protéger des données sensibles : quelques solutions rapides de l’utilisateur à qui est destiné le fichier chiffré ; si elle n’est Puis, on crée le point de montage : pas utilisée, GnuPG vous demande de saisir cet identifiant, à moins d’utiliser l’option --default-recipient, qui comme ~$ mkdir ~/crypto son nom l’indique, utilisera la clé par défaut (la première clé Ceci fait, on crée le système de fichiers chiffré, puis on du trousseau, ou celle explicitement définie comme clé par monte le répertoire : défaut avec l’option --default-key). L’option --default- recipient-self permet de s’affranchir de l’étape de véri- ~$ encfs ~/.crypto-src/ ~/crypto/ fication de la validité de la clé. Création du nouveau volume encrypté. Pour déchiffrer le fichier .pgp : Veuillez choisir l’une des options suivantes : entrez «x» pour le mode de configuration expert, ~$ gpg --output fichier.txt --decrypt fichier.gpg entrez «p» pour le mode paranoïaque préconfiguré, toute autre entrée ou une ligne vide sélectionnera le mode normal. Sachez qu’il est possible de chiffrer un fichier pour plusieurs ?> personnes distinctes en procédant de la façon suivante : Configuration normale sélectionnée. ~$ gpg --recipient 24 | Linux Pratique n°74 www.linux-pratique.com système & réseau TIPS ~$ ls -l crypto/ drwxrwxr-x. 2 toto toto 4096 4 sept. 15:17 secret1 -rw-rw-r--. 1 toto toto 14 4 sept. 15:17 secret2 ~$ ls -l .crypto-src/ Simplifiez votre total 8 drwxrwxr-x. 2 toto toto 4096 4 sept. 15:17 LZVMZc8C0ynd0LkTMJB1t98r installation : -rw-rw-r--. 1 toto toto 22 4 sept. 15:17 n8PKVZQO33pqt7-,J1YxmH90 Le système de fichiers pourra être démonté via : clonez vos ~$ fusermount -u crypto applications ! Une fois démonté, le point de montage apparaît vide et le contenu du répertoire source est illisible bien entendu. Vous installez votre distribution favorite À savoir que vous pouvez obtenir des informations sur le répertoire chiffré via la sur un nouveau PC ? Vous avez pour commande : habitude d’ajouter toujours le même lot d’applications après chaque instal- ~$ encfsctl info .crypto-src/ lation ? Alors simplifiez-vous la vie et Configuration version 6; crée par EncFS 1.7.4 (version 20100713) utilisez votre gestionnaire de paquets Cryptage du système de fichiers : «ssl/aes» version 3:0:0 (utilisation de 3:0:2) pour automatiser tout ça... Il faudra bien Encodage de fichier «nameio/block», version 3:0:0 (utilisation de 3:0:1) Taille de clé : 192 bits entendu disposer de Synaptic sur les Using PBKDF2, with 107215 iterations 2 machines. Salt Size: 160 bits Sur la première machine, on ouvre Taille de bloc : 1024 octets Chaque fichier contient un en-tête de 8 octets avec des données IV uniques. Synaptic et on se rend dans Fichier > Noms de fichier encodés à l’aide du mode de chaînage IV. Enregistrer les sélections. Vous sélec- File holes passed through to ciphertext. tionnez alors l’emplacement de sau- vegarde de votre choix, puis cochez L’outil encfsctl permet également de modifier le mot de passe, comme suit : la case Enregistrer l’état complet, pas ~$ encfsctl passwd .crypto-src/ seulement les changements au bas Veuillez entrer le mot de passe Encfs actuel de la fenêtre de dialogue. La liste est Mot de passe : stockée dans un simple fichier texte Veuillez entrer le nouveau mot de passe Encfs que vous n’aurez qu’à transférer sur la Nouveau mot de passe : Vérifier le mot de passe : nouvelle machine. Clé de volume mise à jour avec succès. Si vous utilisez Ubuntu, sachez que les dépôts PPA ne sont pas pris en On notera pour finir qu’il existe un utilitaire graphique permettant de gérer aisément compte par cette procédure. Pour les les systèmes de fichiers chiffrés avec EncFS : il s’agit de Cryptkeeper (http://tom. récupérer également, copiez le réper- noflag.org.uk/cryptkeeper.html), que l’on trouvera dans les dépôts de la plupart /etc/apt/sources.list.d/ des distributions. toire sur un support de stockage amovible 2.2 dm-crypt/LUKS par exemple, afin de le recopier sur la nouvelle machine. De nombreuses distributions suggèrent aujourd’hui, lors de l’installation, de chiffrer tout ou partie du disque dur, via dm-crypt/LUKS. Sur cette dernière, ouvrez Synaptic puis rendez-vous dans Fichier > Lire les Note sélections. Recherchez le fichier enre- gistré plus haut, ainsi que la liste des Ce chiffrement via dm-crypt/LUKS se fait au niveau du système de fichiers dans son ensemble, au niveau de la partition. On veillera à ne pas l’assimiler au mode PPA, vérifiez rapidement la liste qui de chiffrement via eCryptfs, proposé parfois pour votre répertoire personnel, qui apparaît dans la fenêtre de dialogue, puis lui, se fait au niveau fichier. De ce fait, même si le contenu des fichiers n’est pas cliquez sur Ajouter à la sélection. lisible, certaines informations demeurent accessibles : leur nombre, leur taille, la Toutes vos applications préférées, y date de dernière modification, etc. En outre, via eCryptfs, la protection des données compris celles installées via des PPA, dépend du mot de passe de l’utilisateur : celui-ci devra être suffisamment robuste se trouvent à présent référencées dans pour contrer une attaque ! Le chiffrement via dm-crypt est protégé par une phrase Synaptic ; il ne vous reste plus qu’à cli- de passe, en général beaucoup moins évidente à trouver... quer sur Appliquer pour tout installer sur votre nouvelle machine ! Concrètement, ceci implique qu’il faudra saisir une phrase de passe au démar- rage pour accéder à tout ou partie des partitions de votre système. Cette phrase de passe pourra être modifiée si besoin, à l’aide de la commande cryptsetup. www.linux-pratique.com Linux Pratique n°74 | 25 système & réseau Protéger des données sensibles : quelques solutions rapides Figure 2 Figure 1 On commencera par lister les informations liées à la partition concernée avec : possibilité de cacher ou non le volume créé (s’il est caché, il ne sera pas appa- ~# cryptsetup luksDump /dev/disk/by-path/pci-0000:00:0f.0-scsi-0:0:0:0-part2 rent dans votre navigateur de fichiers). On repère ainsi le slot (marqué ENABLED) qui est utilisé pour stocker la phrase de Indiquez ensuite l’emplacement du passe saisie lors de l’installation du système et la création du disque chiffré. On fichier à chiffrer (qui servira de conte- ajoute alors une nouvelle phrase de passe : neur pour votre volume TrueCrypt). Sélectionnez ensuite un algorithme de ~# cryptsetup luksAddKey /dev/disk/by-path/pci-0000:00:0f.0-scsi-0:0:0:0-part2 chiffrement et la taille souhaitée pour On saisit tout d’abord la phrase de passe existante pour débloquer le périphérique, votre conteneur. Et enfin, sélectionnez puis on entre deux fois la nouvelle phrase. On pourra vérifier le bon déroulement le système de fichiers souhaité (parmi de l’opération en exécutant une nouvelle fois la commande précédente. À ce stade, FAT et Ext2/3/4). Votre volume chiffré deux slots sont utilisés ; les 2 phrases de passe fonctionnent. Pour supprimer la est créé ! phrase de passe précédente, on utilisera : Ensuite, pour mettre vos données en ~# cryptsetup luksRemoveKey /dev/disk/by-path/pci-0000:00:0f.0-scsi-0:0:0:0-part2 sécurité, dans la fenêtre principale, Entrez la phrase secrète LUKS à effacer : effectuez un clic droit sur le Slot 1, puis sélectionnez Select File and Mount (Fig. 1). Choisissez alors le fichier pré- 2.3 TrueCrypt cédemment créé ; une fois la phrase TrueCrypt (http://www.truecrypt.org/) permet de chiffrer tout ou partie d’un disque de passe correctement saisie (Fig. 2), dur, d’une clé USB, d’un système d’exploitation... Il fonctionne sous Linux, Mac OS le fichier est alors monté dans /media/ X et Windows ; son code source est disponible, mais ce n’est pas un logiciel libre. truecrypt1. Vous n’avez plus qu’à Le principe : TrueCrypt permet de créer un disque virtuel chiffré contenu dans glisser dans ce dernier toutes les infor- un fichier et de le monter comme un disque physique réel. Ainsi, tout ce qui sera mations et fichiers sensibles à proté- stocké dans un volume TrueCrypt sera entièrement chiffré. ger ! On cliquera ultérieurement sur Sur le site du projet, vous pouvez récupérer une archive contenant un fichier exécutable Dismount pour démonter le volume. pour votre système d’exploitation. L’exécution de ce fichier permet de lancer l’installa- tion de TrueCrypt, en ayant pris soin d’installer les pré-requis au préalable : les outils et bibliothèques FUSE (paquet fuse-utils), les device mapper tools (paquet dmsetup). Références Notons au passage que les packs de langue ne sont pas (encore) disponibles pour Linux, [1] Algorithmes et protocoles : vous devrez donc vous contenter d’une interface en anglais. Si vous souhaitez désins- http://fr.wikipedia.org/wiki/ taller TrueCrypt, il faudra exécuter le script truecrypt-uninstall.sh. Cryptographie#Algorithmes_et_ protocoles On commencera par créer un nouveau volume (Create Volume) ; l’assistant apparaît alors à l’écran. Il vous propose de créer au choix un répertoire chiffré sur votre disque [2] Les modes d’opération : dur ou bien une partition chiffrée (s’il vous reste de l’espace disque libre, ou bien http://fr.wikipedia.org/wiki/ sur un périphérique de stockage externe, du type clé USB). Ceci fait, vous avez la Mode_d’opération_(cryptographie) 26 | Linux Pratique n°74 www.linux-pratique.com Profitez de nos offres systèd’abonnementme & résea spécialesu Abonnez-vous ! disponibles au verso ! Économisez plus de * *20 Sur le prix de vente unitaire France Métropolitaine % Numéros de Téléphonez au 03 67 10 00 20 ou commandez Linux par le Web Pratique Les 3 bonnes raisons de vous abonner : 6 par ABONNEMENT : Ne manquez plus aucun numéro. Recevez Linux Pratique dès sa parution chez vous ou dans votre entreprise. €* É conomisez 9,00 €/an ! 4 façons de commander facilement : 30 au lieu de 39,00 €* en kiosque par courrier postal en nous renvoyant le bon ci-dessous Économie : 9,00 €* par le Web, sur www.ed-diamond.com par téléphone, entre 9h-12h et 14h-18h au 03 67 10 00 20 *OFFRE VALABLE UNIQUEMENT EN FRANCE MÉTROPOLITAINE par fax au 03 67 10 00 21 Pour les tarifs hors France Métropolitaine, consultez notre site : www.ed-diamond.com Bon d’abonnement à découper et à renvoyer à l’adresse ci-dessous Tournez svp pour découvrir toutes les offres d’abonnement >> Voici mes coordonnées postales : Société : Nom : Prénom : Édité par Les éditions Diamond Adresse : Service des Abonnements B.P. 20142 - 67603 Sélestat Cedex Tél. : + 33 (0) 3 67 10 00 20 Code Postal : Fax : + 33 (0) 3 67 10 00 21 Ville : Pays : Vos remarques : Téléphone : e-mail : En envoyant ce bon de commande, je reconnais avoir pris connaissance des conditions générales de vente des éditions Diamond Tournez svp pour découvrir www.linux-pratique.com Linux Pratique n°74 | 27 à l’adresse internet suivante : www.ed-diamond.com/cgv et reconnais que ces conditions de vente me sont opposables. toutes les offres d’abonnement système & réseau 28 | Linux Pratique n°74 www.linux-pratique.com système & réseau Gérez vos machines virtuelles à distance ! Fleur Brosseau Tout est dit dans le titre : le projet PhpVirtualBox a été créé dans le but de proposer une interface web de gestion des machines virtuelles VirtualBox. À base d’Ajax et développée en PHP, cette interface moderne - identique à l’interface utilisateur de VirtualBox - permet d’accéder et de contrôler à distance vos différentes machines virtuelles. Cette application trouvera par exemple tout son intérêt si vos VM se trouvent sur un même serveur et que plusieurs utilisateurs s’y connectent... D’autres paramètres sont disponibles, ils sont réperto- 1. Pré-requis riés dans le wiki du projet ( http://code.google.com/p/ 1.1 Compatibilité et dépendances phpvirtualbox/wiki/vboxwebServiceConfigLinux). PhpVirtualBox (http://code.google.com/p/phpvirtualbox/) Une fois le fichier /etc/default/virtualbox renseigné, est compatible avec les versions 3.2.x et supérieures de on démarre le service via : VirtualBox, ainsi qu’avec la plupart des navigateurs web récents. Son fonctionnement requiert bien entendu un ser- sudo service vboxweb-service start veur web supportant PHP ≥ 5.1.0. Il peut être installé sur un Les utilisateurs de SELinux, devront ajouter une règle sup- système Linux, FreeBSD, Solaris, Mac OS X et Windows. plémentaire pour vboxwebsrv ; cette règle permet de Rappelons que le paquet bridge-utils est par ailleurs rendre le port du webservice de VirtualBox (18083) acces- nécessaire pour créer des interfaces réseau virtuelles à sible à un service exécuté dans un contexte HTTP (comme associer à des interfaces réseau physiques. Apache) : Enfin, le service vboxweb-service (issu du paquet virtualb ox) doit être configuré pour être lancé à semanage port -a -t http_port_t -p tcp 18083 chaque démarrage. Il s’agit d’un script /etc/init.d/ (Rappelons au passage que la commande semanage est vboxweb-service créé automatiquement à l’installation issue du paquet policycoreutils). de VirtualBox sur votre système ; il peut être utilisé pour démarrer et stopper /usr/bin/vboxwebsrv. Sous Debian Assurez-vous enfin de faire partie du groupe vboxusers. et Ubuntu, on lancera la commande : Dans le cas contraire : sudo update-rc.d vboxweb-service defaults sudo adduser toto vboxusers 1.2 Configuration pré-installation 2. Installation Le fichier /etc/default/virtualbox (à créer s’il n’existe pas) doit contenir au minimum la ligne suivante : Passons à présent à l’installation de l’application. On com- mence par récupérer l’archive du projet sur http://code. VBOXWEB_USER=toto google.com/p/phpvirtualbox/downloads/ (version 4.1-7 lors de la rédaction de l’article). On décompresse l’archive Cette variable désigne l’utilisateur qui exécute les machines obtenue, puis on déplace le répertoire obtenu à la racine du virtuelles VirtualBox sur le système ; si plusieurs utilisateurs serveur web (typiquement /var/www/). sont concernés, vous devez n’en choisir qu’un. De plus, si votre serveur web (où tourne PhpVirtualBox) n’est sudo cp -R phpvirtualbox-4.1-7 /var/www/ vboxwebsrv pas exécuté sur le même hôte que , il vous fau- Ensuite, on édite le fichier config.php-example contenu dra également définir une seconde variable : dans le répertoire. On y renseigne le nom d’utilisateur appar- vboxusers VBOXWEB_HOST=nom_de_lhote tenant au groupe et son mot de passe (dans les premières lignes du fichier) : www.linux-pratique.com Linux Pratique n°74 | 29 système & réseau Gérez vos machines virtuelles à distance ! Figure 1 Figure 2 L’interface est complètement identique /* Username / Password for system 3. Gérer ses VM via user that runs VirtualBox */ à celle de VirtualBox. Vous dispose- var $username = ‘toto’; une interface web rez du même assistant pour la créa- var $password = ‘motdepasse’; tion d’une nouvelle machine (Fig. 2), Enfin, on ouvre un navigateur web, ainsi que des mêmes options de para- Comprenez que ces informations de puis on saisit l’IP correspondant au métrage des machines. connexion doivent être identiques à serveur web (dans notre cas, local- À savoir que si jamais vous modi- celles que vous utilisez pour ouvrir host) : http://localhost/phpvirtualbox/. une session utilisateur sur votre Une boîte de dialogue vous invite à fiez les paramètres d’une machine machine. Ceci fait, on renomme le renseigner le login et le mot de passe ; virtuelle en dehors de l’interface de fichier config.php-example en à la première connexion il s’agit de : PhpVirtualBox, il ne faut pas oublier de rafraîchir l’affichage via l’option config.php. admin/admin. prévue à cet effet (menu Machine > sudo mv config.php-example config.php L’interface de PhpVirtualBox apparaît Actualiser) dans l’interface principale, dans le navigateur (Fig. 1). On peut que l’on retrouve également dans le commencer par se rendre dans les gestionnaire de médias. Note préférences de l’application (menu Notez que l’application recherche À noter qu’il est conseillé de faire File > Preferences) pour passer la lan- automatiquement la présence du tourner PhpVirtualBox sur le ser- gue de l’interface en français (section répertoire ~/VirtualBox VMs/ veur de virtualisation, car le mot de Language). On peut également pré- qui contiendrait les machines vir- passe de l’utilisateur qui administre ciser la langue directement dans le tuelles ; s’il existe et si des machines les machines virtuelles transite en fichier de configuration : virtuelles sont déjà créées, elles clair du serveur web jusqu’à l’hôte sont listées dans le panneau latéral de VirtualBox ! var $language = ‘fr’; gauche. Pour modifier le répertoire Figure 3 Figure 4 30 | Linux Pratique n°74 www.linux-pratique.com système & réseau Figure 6 Figure 5 par défaut des machines, rendez-vous à distance (à récupérer à l’adresse nisation temporelle entre l’hôte de dans le menu Fichier > Paramètres > https://www.virtualbox.org/wiki/ VirtualBox et les machines virtuelles Général. Downloads). Il est également possible (Fig. 6) ; d’utiliser n’importe quel client RDP N’oubliez pas en outre de modi- • toujours dans la section Système, (Remmina - voir la figure 4 -, Vinagre, fier immédiatement le mot de passe vous découvrirez quelques para- rdesktop, ...), le port étant à définir de connexion via le menu Fichier > mètres supplémentaires dans l’on- dans les paramètres d’affichage de Changer mot de passe. Au passage, glet Accélération ; chaque VM (onglet Bureau à distance) si vous souhaitez désactiver le sys- • la possibilité de saisir une adresse IP (Fig. 5). Par exemple, on pourra saisir tème d’authentification, ajoutez sim- dans la configuration de l’affichage dans une console externe : plement la ligne suivante au fichier à distance ; phpvirtualbox/config.php : rdesktop -f 127.0.0.1:3389 • des paramètres supplémentaires pour configurer le NAT ; var $noAuth = true; L’option -f permet de passer en • des boutons supplémentaires dans mode plein écran. Le raccourci le gestionnaire de médias virtuels [Ctrl]+[Alt]+[Entrée] permet de sortir Note (New, Add et Add iSCSI). du plein écran. Vous avez oublié votre mot de Vous pouvez même personnaliser passe ? Dans ce cas, vous pou- l’icône de chaque machine virtuelle ! vez réinitialiser les paramètres de 4. Fonctionnalités Pour ce faire, ajoutez la directive sui- connexion en renommant le fichier vante dans le fichier config.php : phpvirtualbox/recovery.php avancées en phpvirtualbox/recovery. L’intérêt de PhpVirtualBox réside éga- var $enableCustomIcons = true; php-diasbled ; puis, vous pour- lement dans quelques fonctionnalités rez lancer PhpVirtualBox et vous supplémentaires que l’on ne retrouve Ceci fait, il est possible d’éditer l’icône connecter avec l’identifiant et le pas dans l’interface classique de d’une machine virtuelle parmi les para- mot de passe par défaut, à savoir VirtualBox. Pour les activer, on ajou- mètres à définir (section Général). L’URI admin/admin. tera dans le fichier config.php : de l’icône peut être absolue ou relative. La configuration des utilisateurs var $enableAdvancedConfig = true; 5. En cas de mise à s’effectue dans le menu Fichier > (Cette ligne est d’ailleurs présente par Paramètres > Utilisateurs. À savoir jour... défaut dans le fichier, il ne reste qu’à que les utilisateurs qui ont le statut la décommenter). Si des mises à jour de PhpVirtualBox sont d’« admin » ont accès à la section disponibles, copiez simplement les nou- Users et de ce fait, pourront ajouter, Voici la liste des fonctionnalités veaux fichiers de l’application au même modifier ou supprimer des utilisateurs. apportées : emplacement que l’installation existante ; Une fois lancées, toutes les machines • un onglet Input, dans la section les précédents fichiers peuvent être écra- virtuelles sont accessibles via le bou- Général des paramètres ; il permet sés sans problème. On n’oubliera pas ton Console (Fig. 3) ; la fenêtre de de définir le type de clavier et de sou- d’éditer le nouveau fichier de configu- visualisation peut même être déta- ris/tablette utilisé (PS/2 ou USB) ; ration pour y renseigner les paramètres chée du reste de l’interface si besoin. • un timer haute précision (HPET) nécessaires (nom d’utilisateur et mot de Attention, il est nécessaire d’avoir ins- fait son apparition dans la sec- passe, langue de l’interface, etc.) et éga- tallé le pack d’extension d’Oracle au tion Système, ainsi qu’une option lement pour activer d’éventuelles nou- préalable pour bénéficier du bureau permettant de désactiver la synchro- velles fonctionnalités. www.linux-pratique.com Linux Pratique n°74 | 31 système & réseau Système de fichiers sous Linux et déploiement de Btrfs Mejri Issam Lorsque vous envisagez d’installer une distribution GNU/Linux, l’installateur commence classiquement par la création de deux ou de plusieurs partitions, ainsi que d’un système de fichiers qui doit obligatoirement être inscrit sur ces partitions. Le choix du système est parfois automatique, mais cela n’empêche pas que l’on puisse en choisir un qui réponde à ses besoins... Un système de fichiers est trans- fichiers plus performant. C’est ce qui • Minix : le premier système de parent pour l’utilisateur, mais ce qui a poussé la communauté Linux, en fichiers de Linux. Bien que limité, il importe le plus c’est de comprendre la 1992, à créer une interface, le VFS est pratique pour les systèmes de manière la plus adéquate de le confi- (Virtual File System), permettant au fichiers sur disquette ou en RAM ; gurer, afin d’avoir un système stable noyau Linux de s’adapter à n’importe on peut cependant le considérer et performant. quel type de système de fichiers. comme obsolète. Au système de fichiers Minix succéda • Ext : la version améliorée de Minix ; 1. Revenons un Ext/Ext2. Son développeur princi- il est aujourd’hui également obsolète pal est Rémy Card (voir interview et est remplacé par Ext2. peu en arrière... http://www.april.org/groupes/ entretiens/remy_card.html), un • Ext2 : le premier système de fichiers Les premières versions du noyau développeur français connu pour ses développé spécifiquement pour Linux ont été basées sur le système contributions au noyau Linux. Ext2 est Linux, d’un niveau de production de fichiers Minix. Minix est un sys- le système de fichiers révolutionnaire et aux normes Unix. Il est rapide et tème d’exploitation Unix créé en 1987 qui s’intégra au noyau Linux en 1993. nécessite moins d’écritures que les par le professeur Andrew Tanenbaum autres, il occasionne donc moins de l’université Vrijie d’Amsterdam. Ce En 1999, Ext2 a été à son tour amé- d’usure des supports de stockage, dernier utilisait ce micro-noyau pour lioré avec Ext3 (une version journa- notamment les disques SSD, les enseigner la théorie des systèmes lisée d’Ext2), introduit dans le noyau clés USB ou les cartes mémoire. d’exploitation à ses étudiants. Il publia en 2001. Les fichiers peuvent avoir jusqu’à le code source de Minix dans son une taille de 2 To (2048 Go), tandis fameux ouvrage « Operating System : 2. Les principaux qu’une partition peut atteindre 32 To, Design and Implementation ». voire 128 To, selon la taille des blocs Son adversaire, le finlandais Linus types de systèmes et l’architecture. Torvalds, lut avec grand intérêt le • Ext3 : le successeur de Ext2 depuis livre de Tanenbaum et commença de fichiers 1999. Il est journalisé et surtout, il en s’inspirant de Minix à écrire from L’interface VFS du noyau fait de Linux est entièrement compatible avec scratch un nouveau noyau plus connu un système d’exploitation capable Ext2. Le journal n’est autre qu’une aujourd’hui sous le nom de Linux. de supporter n’importe quel système extension de Ext2. Il est donc pos- de fichiers, pour peu que la société Minix était loin d’être parfait, il lui man- sible d’utiliser un système de fichiers qui l’a créé diffuse sa technologie en quait plusieurs fonctionnalités, ce qui Ext3 comme étant Ext2, avec les open source et développe le module le rendait inutilisable sur des ser- mêmes commandes, les mêmes adéquat. veurs de production ou des machines manipulations. Il est possible de à forte charge. Il était alors indispen- Voici une liste non exhaustive des sys- transformer en quelques secondes sable de migrer vers un système de tèmes de fichiers : un système Ext2 en Ext3, et vice 32 | Linux Pratique n°74 www.linux-pratique.com système & réseau versa. C’est l’un des systèmes de loppé par un ensemble de compa- que les données ne sont pas épar- fichiers de choix pour Linux, et le gnies, principalement Oracle. C’est pillées sur des blocs physiquement plus utilisé pour sa souplesse. ce système de fichiers que nous éloignés sur le système de fichiers ; allons vous faire découvrir dans cet on améliore ainsi les opérations de • Ext4 : le successeur de Ext3, intro- article. lecture/écriture. duit en 2006. Il est compatible avec son prédécesseur et incarne la toute Autre fonctionnalité révolutionnaire : première ébauche d’un système de la notion de copy-on-write. Si des fichiers « nouvelle génération » : il 3. Le système données sont écrites sur un bloc de permet notamment l’allocation par mémoire, alors ce dernier sera copié extent, permettant de minimiser la de fichiers Btrfs à un autre endroit du disque dur et fragmentation (voir plus loin). les nouvelles données seront enre- (Butter FS) gistrées sur la copie au lieu de l’être • ReiserFS : c’est le premier système sur l’original. Ainsi, si un fichier est de fichiers journalisé à être intégré Le système de fichiers Btrfs, déve- loppé principalement par la firme corrompu accidentellement, Btrfs à Linux, avant même Ext3. Sa force vous permet de récupérer une copie réside, outre dans son journal, dans Oracle, ainsi que par plusieurs contri- butions provenant de Red Hat, Intel exacte de ce dernier d’un autre l’organisation indexée des entrées emplacement ! Dans le jargon Btrfs, des répertoires et la manipulation et SUSE, a été créé pour pallier les limites des autres systèmes de fichiers on appelle cette technique le scrub- des fichiers de petite taille. Ses per- bing (nettoyage), un service permet- et pour répondre aux besoins des formances sont exceptionnelles en tant de traquer les corruptions au administrateurs, qui n’ont pas trouvé présence de milliers de fichiers, de sein du système de fichiers. faible à moyen volume ; il devient leur bonheur avec Ext3, ReiserFS... La notion de sous-volumes (subvo- plus lent sur des gros fichiers. Il est Les dernières versions du noyau Linux lumes) dans Btrfs permet d’avoir au redimensionnable à chaud. Malgré intègrent Btrfs, vous pouvez donc l’uti- sein du système de fichiers un arbre ses grandes qualités, ReiserFS liser nativement lors de la création de séparé contenant des répertoires est moins utilisé pour diverses rai- vos partitions pour accueillir vos don- et des fichiers, donnant la possibi- sons, la principale étant l’impos- nées personnelles, ou encore monter lité d’avoir diverses arborescences sibilité de convertir un système de la partition racine du système pour simultanément et donc une indé- fichiers Ext2/Ext3 en ReiserFS et qu’elle utilise Btrfs au lieu du « vieux » pendance totale par rapport au sys- vice versa. Ext3 ! tème principal. On peut ainsi créer • XFS : XFS est le plus ancien des La question qui vous vient à l’esprit un sous-volume et le monter ensuite systèmes de fichiers journali- en lisant ces lignes est peut-être la pour l’utiliser pour des besoins sés sous Unix. Créé par Silicon suivante : mais qu’est-ce que ce sys- particuliers. Graphics en 1993, il a été porté sous tème de fichiers a apporté de nou- La technique des sous-volumes Linux en 2001. Outre des capaci- veau par rapport à ses ancêtres ? La tés de stockage quasi illimitées (16 mène à une fonctionnalité intéres- réponse se trouve dans le paragraphe sante, longtemps attendue par les exbibytes !), il dispose d’un système suivant... de journalisation très performant et administrateurs paranoïaques : celle de mécanismes avancés comme la des instantanés ou snapshots en défragmentation en ligne, la possibi- 3.1 Fiche technique anglais. Un instantané n’est autre lité d’effectuer des snapshots (copie de Btrfs qu’une image du système de fichiers instantanée du système de fichiers à un instant donné. Si vous envisa- Je ne m’appesantirai pas sur les à un instant donné), le redimension- gez d’effectuer une opération au détails techniques, mais j’insisterai nement à chaud, la réservation des niveau de votre système, comme sur les principales fonctionnalités qui bandes passantes pour les entrées une mise à jour ou une migration peuvent vous servir au quotidien. et sorties... logicielle ou même un upgrade de Btrfs est basé sur la notion d’extent. votre distribution Linux, Btrfs vous • JFS : un système de fichiers journa- Un extent est une zone de stockage donne la possibilité de sauvegarder lisé issu de la technologie IBM pour contiguë, attribuée d’avance lors de votre système à l’aide des snapshots AIX. Il est disponible sous licence la création d’un fichier sur le système et de revenir en arrière (restauration) GPL. de fichiers. La taille de cette zone peut dans le cas où les opérations effec- tuées échouent et que votre système • Btrfs : ce système de fichiers, pro- atteindre des centaines de Mo (un noncé ButterFS, sera sûrement le nombre entier de blocs). Lors d’une devient instable. futur système de fichiers intégré nouvelle écriture sur le fichier (mise La disponibilité des données et l’évo- nativement dans la plupart des dis- à jour par exemple), les données sont lution des performances d’entrée/sor- tributions Linux les plus courantes. ajoutées dans l’extent. Cette fonc- tie sur disque sont aussi les points Ce système de fichiers, basé sur la tionnalité permet d’éliminer le disper- forts de Btrfs. En effet, vous pou- notion de copy-on-write, est déve- sement des fichiers et de s’assurer vez utiliser le RAID 1, ou RAID 0, www.linux-pratique.com Linux Pratique n°74 | 33 système & réseau Système de fichiers sous Linux et déploiement de Btrfs ou les deux à la fois pour le stockage de vos données et pour la description de celles-ci (métadonnées). La créa- # btrfs filesystem df /mnt/mybtrfs/ Data: total=8.00MiB, used=0.00 tion d’une partition Btrfs utilisant des disques en miroir avec System, DUP: total=8.00MiB, used=4.00KiB plus de deux disques SCSI par exemple devient alors un System: total=4.00MiB, used=0.00 jeu d’enfant. Metadata, DUP: total=61.56MiB, used=24.00KiB La conversion d’un type de système de fichiers vers Btrfs se Metadata: total=8.00MiB, used=0.00 fait en une simple commande ; on peut alors convertir notre partition montée sur /home de type Ext4 vers Btrfs et béné- ficier immédiatement des avantages de Btrfs ! 3.2.2 RAID 1 au niveau des données et métadonnées L’ajout d’un ou de plusieurs disque(s) à chaud, ainsi que le redimensionnement, sont également pris en charge par Pour assurer la disponibilité de vos données, en cas de perte Btrfs. Il est en outre possible de compresser les données d’un disque par exemple, Btrfs propose en natif l’utilisation lors de leur enregistrement sur le disque, ce qui permet de la technologie RAID (voir Linux Pratique n°70) ; si nous /dev/loop1 d’économiser de l’espace disque. disposons de deux disques par exemple ( et /dev/loop2), une seule commande réalise tout ceci après le démontage de /dev/loop1 : 3.2 ButterFS par la pratique Passons maintenant à la pratique, afin de vous permettre mkfs.btrfs -L BTRFS -m raid1 -d raid1 /dev/loop[1,2] de mieux assimiler ces nouvelles fonctionnalités. Nous SMALL VOLUME: forcing mixed metadata/data groups utiliserons ici la distribution openSUSE 12.1 (kernel 3.1), adding device /dev/loop2 id 2 installée avec la racine (/) et une partition /home de fs created label BTRFS on /dev/loop1 nodesize 4096 leafsize 4096 sectorsize 4096 size 1.59GiB type Btrfs. Btrfs v0.19+20120406 Pour manipuler le système de fichiers, il vaut mieux ne pas se servir des partitions existantes, qui risqueraient de deve- On constate que le système de fichiers est créé sur le péri- nir hors-service ; je vais donc manipuler les loop devices, qui phérique /dev/loop1 et la redondance de données et des permettent de créer des partitions à l’aide de fichiers dont métadonnées se trouve sur le périphérique possédant l’id les blocs sont vides : 2, soit /dev/loop2. A cet effet, c’est /dev/loop1 qu’on utilisera lors de l’opération du montage : # dd if=/dev/zero of=/newFs bs=4096k count=1000 # mount /dev/loop1 /mnt/mybtrfs/ On crée ensuite une partition /dev/loop1 : Vérifions si notre partition est bien montée et si le RAID est # losetup /dev/loop1 /newFs effectivement pris en charge : # btrfs filesystem df /mnt/mybtrfs/ 3.2.1 Premier système de fichiers Btrfs Data, RAID1: total=81.56MiB, used=0.00 Data: total=8.00MiB, used=0.00 # mkfs.btrfs -L BTRFS /dev/loop1 System, RAID1: total=8.00MiB, used=4.00KiB fs created label BTRFS on /dev/loop1 System: total=4.00MiB, used=0.00 nodesize 4096 leafsize 4096 sectorsize 4096 size 1.20GiB Metadata, RAID1: total=81.56MiB, used=24.00KiB Btrfs v0.19+20120406 Metadata: total=8.00MiB, used=0.00 Nous avons créé un système de fichiers de type Btrfs sur le Notre objectif est atteint et nos données, ainsi que nos méta- disque /dev/loop1 labellisé avec l’option -L. Procédons à données, sont à l’abri (ou presque). l’opération de montage : 3.2.3 Revenir au bon vieux temps... # mount /dev/loop1 /mnt/mybtrfs/ Une fonctionnalité intéressante de Btrfs est la possibilité de revenir en arrière (rollback) lors de la conversion d’un sys- Vérifions la réussite de l’opération : tème de fichiers Ext3/4 en Btrfs. # df -h -T /dev/loop1 Ma partition /home est de type Btrfs ; pour tester la conver- Filesystem Type Size Used Avail Use% Mounted on sion Btrfs, j’ai créé une partition /dev/sdb1 à partir d’un /dev/loop1 btrfs 1.3G 56K 1.1G 1% /mnt/mybtrfs disque /dev/sdb, puis j’ai formaté /dev/sdb1 en Ext4 pour essayer de basculer ensuite vers Btrfs. Voici les Nous disposons maintenant d’une partition montée au niveau étapes : de l’arborescence /mnt/mybtrfs et de type Btrfs comme # mkfs -t ext4 /dev/sdb1 prévu. Pour plus d’informations sur /mnt/mybtrfs : 34 | Linux Pratique n°74 www.linux-pratique.com système & réseau On sauvegarde la partition /home : Puis éditons le fichier /etc/fstab : # tar cvfP home.tar /home/ ## Nouvelle partition /home UUID=807751b6-97d6-413c-8b89-f9b3d5673c29 /home btrfs w,relatime Montage de /home sur la nouvelle partition : Redémarrez et assurez-vous que l’utilisateur accède à son # mount /dev/sdb1 /home/ répertoire personnel. Vérification : Lors de la conversion, Btrfs crée automatiquement une sau- vegarde (snapshot) de /home dans un sous-volume avec # df -h -T /home l’ancien Ext4, ce qui permet de revenir en arrière en cas de Filesystem Type Size Used Avail Use% Mounted on besoin. /dev/sdb1 ext4 7.9G 485M 7.1G 7% /home Restauration du contenu de /home : # btrfs subvol list /home/ ID 256 top level 5 path ext2_saved # tar xvfP home.tar /home/ # ls -l /home total 3 Redémarrez et connectez-vous en tant qu’utilisateur ordi- dr-xr-xr-x 1 root root 10 Jun 4 10:32 ext2_saved naire, puis assurez-vous que l’utilisateur accède à son réper- drwxr-xr-x 1 999 users 624 May 30 10:55 linux~ toire personnel. drwxr-xr-x 1 mejri users 668 Jun 4 10:14 mejri Maintenant, nous allons convertir notre partition Ext4 en Btrfs : La souplesse de Btrfs vous permet également de restaurer l’ancien Ext4 : # umount /dev/sdb1 # btrfs-convert /dev/sdb1 # btrfs-convert -r /dev/sdb1 creating btrfs metadata. rollback complete. creating ext2fs image file. cleaning up system chunk. Puis on remonte Ext4 : conversion complete. # mount -t ext4 /dev/sdb1 /home/ L’illustration suivante, issue du wiki du projet Btrfs, illustre la conversion de Ext3/4 vers Btrfs. Conclusion Un seul article n’est pas suffisant pour parcourir toutes les fonctionnalités de Btrfs, mais en installant ce système de fichiers sur votre machine et en exploitant la page de manuel de Btrfs (man btrfs) vous découvrirez d’autres secrets de ce nouveau-né, comme la compression des données, l’ajout de disques durs à la manière de LVM (Logical Volume Manager), ou encore le redimensionnement à chaud du sys- tème de fichiers. Bonne découverte ! À cette étape, nous rattachons /home à /dev/sdb1 qui dispose d’un ButterFS : Liens # mount -t btrfs /dev/sdb1 /home # df -h -T /home/ Page principale du projet Btrfs d’Oracle : Filesystem Type Size Used Avail Use% Mounted on http://oss.oracle.com/projects/btrfs/ /dev/sdb1 btrfs 8.0G 615M 5.3G 11% /home Comparatif de performances : http://oss.oracle.com/ Nous disposons à nouveau de notre ButterFS sur /home. projects/btrfs/dist/documentation/benchmark.html Changeons en conséquence /etc/fstab ; récupérons tout d’abord l’UUID : Le wiki du projet : https://btrfs.wiki.kernel.org/index.php/Main_Page # btrfs filesystem show Label: none uuid: 807751b6-97d6-413c-8b89-f9b3d5673c29 Une vidéo pleine d’humour d’Avis Miller d’Oracle, Total devices 1 FS bytes used 614.86MiB devid 1 size 8.00GiB used 8.00GiB path /dev/sdb1 principal développeur de Btrfs : http://www.youtube.com/watch?v=hxWuaozpe2I www.linux-pratique.com Linux Pratique n°74 | 35 système & réseau Plus d’espace disponible ? Redimensionnement via LVM Fleur Brosseau Vous mettez à jour votre système, téléchargez de nouveaux logiciels et là, une petite fenêtre de notification vous rappelle à l’ordre : « espace disque faible ». Ouch ! Vite, trouver une solution avant que le système devienne inutilisable... Heureusement, lors de l’installation, vous aviez eu la brillante idée de réaliser un partitionnement via LVM. La résolution de votre problème s’en trouve facilitée... 1. Le tour du propriétaire 1,3M /run 8,4M /sbin 1.1 Repérer les données volumineuses 4,0K /selinux 4,0K /srv Pour commencer, il vous faut situer précisément le problème. Pour cela, un rapide 0 /sys df -h vous permettra de visualiser où vous en êtes : 84K /tmp 5,7G /usr ~$ df -h 1,3G /var Sys. Fich. Taille Util. Dispo Uti% Monté sur 0 /vmlinuz rootfs 9,2G 7,6G 1,2G 88% / udev 10M 0 10M 0% /dev Les plus gros répertoires sont immé- tmpfs 203M 712K 202M 1% /run diatement repérés ; on ne tiendra bien /dev/mapper/group1-root 9,2G 7,6G 1,2G 88% / entendu pas compte de /home et de tmpfs 5,0M 0 5,0M 0% /run/lock /mnt, qui correspondent tous deux à tmpfs 406M 220K 406M 1% /tmp des points de montage. En revanche, tmpfs 406M 748K 405M 1% /run/shm les répertoires /usr et /var sont /dev/sda1 228M 19M 198M 9% /boot /dev/mapper/group1-home 904G 24G 835G 3% /home clairement ceux qui occupent le plus //192.168.20.10/taf 1,9T 94G 1,8T 6% /mnt/serveur de place. Rien de vraiment éton- nant puisqu’ils contiennent les pro- Ici, c’est la partition racine du système qui est incriminée. Les données person- grammes, les sources du noyau, les nelles des utilisateurs du système ne sont donc pas en cause... bibliothèques, les logs, etc. Ils pren- nent du volume quotidiennement, Pour affiner notre recherche, on pourra lancer la commande suivante, qui permet sans que l’utilisateur ne s’en rende de visualiser la taille de tous les fichiers et répertoires présents à la racine : vraiment compte... # du -sh /* 7,8M /bin 1.2 Nettoyage 19M /boot préliminaire 0 /dev 12M /etc Pour commencer, vous pouvez d’ores 24G /home et déjà identifier les éléments qui 0 /initrd.img occupent le plus de place sur votre 108M /lib disque et s’ils ne sont pas indispen- 16K /lost+found sables, les supprimer à grands coups 8,0K /media de rm. 40G /mnt On pourra également faire le ménage 141M /opt du côté des paquets dits « orphelins », 0 /proc grâce à deborphan (Debian et déri- 1,5M /root vées), package-cleanup (Fedora) 36 | Linux Pratique n°74 www.linux-pratique.com système & réseau ou urpme --auto-orphans (si Nous avons affaire ici à 2 volumes logiques (LV), nommés root et home, tous vous gérez vos paquets avec Urpmi). deux contenus dans le groupe de volumes nommé « group1 ». Nos différents sys- Attention, pensez à vérifier la liste des tèmes de fichiers sont tous formatés en Ext4. paquets orphelins avant de valider leur Si besoin, la commande suivante permet de visualiser le contenu d’un groupe de suppression définitive ! Certains, bien volumes (ici « group1 ») : qu’orphelins, peuvent s’avérer utiles... Pensez également à vider le cache # vgdisplay -v group1 des paquets avec (en root) : Ou de façon plus concise : # aptitude clean # vgs group1 pour la famille Debian et dérivées, VG #PV #LV #SN Attr VSize VFree puis : group1 1 3 0 wz--n- 931,27g 0 De même, la commande lvdisplay suivie du nom du groupe de volumes détaille # yum clean all les différents volumes logiques qu’il contient. De façon plus concise, on peut se pour un système sous Fedora, une renseigner via : commande permettant de supprimer à la fois tous les paquets du cache et # lvs group1 LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert les fichiers d’en-tête utilisés par Yum home group1 -wi-ao-- 918,10g pour résoudre les dépendances. root group1 -wi-ao-- 9,31g Et enfin, on utilisera : swap_1 group1 -wi-ao-- 3,86g # urpmi --clean Note pour les autres distributions basées Pour les opérations qui suivent, on prendra soin d’utiliser un système live, sur RPM. du type SystemRescueCd (http://www.sysresccd.org) ou Gparted Live Pour finir, si c’est votre partition home/ (http://gparted.sourceforge.net/livecd.php) par exemple, les partitions à modi- qui est pleine à craquer, vous pouvez fier devant être démontées avant toute modification. penser à vider le cache et les logs de Si vous utilisez SystemRescueCd, pensez à passer le paramètre setkmap=fr certaines applications (pour cela, fouillez au boot, afin de paramétrer un clavier en français (c’est quand même plus dans les répertoires cachés, par exemple pratique pour la suite...). ~/.cache/, ~/.local/share/, etc.). 2. Résoudre 2.1 Réduire un volume logique Retenez que dans un premier temps, il faut réduire la taille du système de fichiers le problème : (le contenu), avant de réduire la taille du volume logique (LV) le contenant. redimensionner On procède alors comme suit. On commence par vérifier le système de fichiers home une partition qui se trouve dans : # e2fsck -f /dev/mapper/group1-home Le constat : 9,2G sont alloués à la partition racine et 904G (dont 3 % La commande e2fsck est compatible avec les systèmes de fichiers Ext2, Ext3 et sont utilisés) sont alloués à la parti- Ext4 ; l’option -f permet de forcer la vérification, même si le système de fichiers tion /home. Nous avons clairement semble normal. une mauvaise répartition de l’es- Si aucune anomalie n’est décelée, on continue en réduisant la taille de ce système pace disque... C’est donc sur ces de fichiers à 500 Go : 2 partitions que nous allons agir. Concrètement, n’ayant plus de volume # resize2fs -p /dev/mapper/group1-home 500G physique disponible, on envisage ici de réduire /home à 500G et d’aug- L’option -p nous permet ici d’afficher une barre de progression de l’opération. menter la partition racine de 100G. [...] Comme vu plus haut, par chance notre Resizing the filesystem on /dev/mapper/group1-home to xxxxx blocks disque est partitionné avec LVM, dont [...] le principal intérêt réside justement The filesystem on /dev/mapper/group1-home is now xxxxx blocks long dans le fait de pouvoir aisément redi- mensionner et déplacer les différents Le système de fichiers réduit, nous pouvons à présent réduire la taille du volume volumes de stockage à tout moment. logique : www.linux-pratique.com Linux Pratique n°74 | 37 système & réseau Plus d'espace disponible ? Redimensionnement via LVM Note Notez que ceci est possible car l’espace disque libéré au chapitre précédent se trouve dans le même groupe de volumes que root (home et root appartiennent en effet au groupe group1). Si cela n’avait pas été le cas, il aurait fallu considéré l’espace disque disponible, y créer une nouvelle partition, puis ajou- ter cette dernière à notre groupe de volumes. Considérons un exemple : soit une partition /dev/sda3 créée sur l’espace disque disponible. Voici comment procéder : On crée un nouveau volume physique avec la nouvelle partition : # pvcreate /dev/sda3 Puis, on l’ajoute à notre groupe de volumes : # vgextend group1 /dev/sda3 # lvreduce -L500G /dev/mapper/group1-home # e2fsck -f /dev/mapper/group1-root Do you really want to reduce home ? (y/n) Et enfin, on procède au redimensionnement : Si tout se déroule bien, vous devriez obtenir le message : # resize2fs -p /dev/mapper/group1-root 100G [...] [...] Logical volume home successfully resized. Resizing the filesystem on /dev/mapper/group1-root to xxxxx blocks Spécifier une dimension : [...] The filesystem on /dev/mapper/group1-root is now xxxxx blocks la syntaxe à respecter long Avec l’option -L nous indiquons la taille désirée. Si la taille est précédée du signe +, cela signifie qu’il s’agit Ceci fait, on effectue une dernière vérification : d’une quantité à ajouter à la taille initiale. Sans le signe # lvs group1 + , comme dans notre exemple, il s’agit de la taille finale LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert souhaitée, à atteindre. home group1 -wi-a--- 500,00g Un coup d’œil à nos différents espaces disques et nous root group1 -wi-a--- 109,31g swap_1 group1 -wi-a--- 3,86g constatons que le LV home a bel et bien changé de taille : # lvs group1 On redémarre le système (et on n’oublie pas d’ôter le LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert CD-ROM du lecteur...) : home group1 -wi-a--- 500,00g root group1 -wi-a--- 9,31g # shutdown -r now swap_1 group1 -wi-a--- 3,86g On ouvre un terminal pour une ultime vérification : 2.2 Agrandir un volume logique ~$ df -h Même raisonnement que précédemment : on commence par Sys. fich. Taille Util. Dispo Uti% Monté sur rootfs 99G 7,6G 86G 9% / agrandir le contenant (le volume logique) avant d’étendre le udev 10M 0 10M 0% /dev contenu (le système de fichiers). tmpfs 203M 716K 202M 1% /run On agrandit donc notre LV root de 100G : /dev/mapper/group1-root 99G 7,6G 86G 9% / tmpfs 5,0M 0 5,0M 0% /run/lock # lvextend -L+100G /dev/mapper/group1-root tmpfs 406M 44K 406M 1% /tmp Extending logical volume root to 109.31 GiB tmpfs 406M 228K 406M 1% /run/shm Logical volume root successfully resized /dev/sda1 228M 19M 198M 9% /boot /dev/mapper/group1-home 493G 25G 444G 6% /home Une fois notre LV root agrandi, il ne reste qu’à agrandir le //192.168.20.10/taf 1,9T 94G 1,8T 6% /mnt/serveur système de fichiers racine. On commence par vérifier ce dernier : Aaaah, on respire :) 38 | Linux Pratique n°74 www.linux-pratique.com système & réseau www.linux-pratique.com Linux Pratique n°74 | 39 Web HTML 5 : structuration Sébastien Chazallet Le second opus de cette série d’articles sur HTML 5 va s’attacher à décrire les éléments permettant de structurer une page. 1. Structure générale d’un document HTML 5 1.2 Catégorisation des 1.1 Page blanche balises HTML 5 Auparavant, nous avions des balises Voici une page blanche écrite en HTML 5 : qui étaient des blocs ou des lignes. En fonction de cette nature, une disposi- tion particulière était utilisée pour la Tous les éléments de la catégorie 40 | Linux Pratique n°74 www.linux-pratique.com Web JavaScript, pour certains sujets. A ce titre, je vous renvoie 2. Metadata : vers l’article précédent, à propos des formulaires, qui sont en-têtes du document un cas d’utilisation classique. Un document HTML 5 porte la structure et le contenu. Il porte également des informations contextuelles ou métadon- 3. Sectioning – nées par le biais de balises meta. Ces dernières n’ont pas changé depuis les anciennes versions de HTML. Structuration de l’information Le style ou la mise en page est réalisée à l’aide de feuilles de 3.1 Structuration générale styles CSS. Idéalement, pour des questions de performance, il Ces ajouts viennent directement de l’expérience accumulée vaut mieux n’en avoir qu’une seule et l’avoir compressée, mais avec HTML. En effet, la plupart des sites sont structurelle- il n’est pas interdit d’en avoir plusieurs. De plus, il est conseillé ment organisés de la même manière. On voit tout d’abord la de recourir uniquement à des feuilles de styles externes : zone principale, qui met en forme le contenu de la page et de multiples autres zones, qui peuvent être un haut de page et un pied de page, une zone de navigation et une zone d’in- Il est possible de préciser un attribut media si l’on souhaite formations contextuelles. appliquer une feuille de styles à un média particulier : En XHTML, on utilisait des calques avec des identifiants • screen : écran d’ordinateur, média par défaut ; explicites et la CSS se chargeait de la mise en page. Avec • print : style dédié à l’impression ; HTML 5, la CSS se charge toujours de la mise en page, mais plutôt que d’utiliser de simples calques, il existe des balises • projection : adapté aux vidéo-projecteurs ; qui ont une sémantique. Ceci permet donc de standardiser • braille : adapté aux appareils Braille ; une approche qui existe depuis très longtemps. • aural : adapté aux synthétiseurs vocaux ; Voici un exemple de code XHTML à placer dans la balise body : • tty : adapté aux téléscripteurs ou téléimprimeurs : La gestion de l’interactivité passe par l’utilisation de code Voici la même présentation en HTML 5 : côté client, écrit en JavaScript, de préférence dans des fichiers externes : www.linux-pratique.com Linux Pratique n°74 | 41 Web HTML 5 : structuration 3.2 Structuration d’un contenu Une section contient généralement des paragraphes (mais pas seulement). L’utilisation de ces sections permet de Une page bien faite présente une information principale, regrouper des paragraphes au sein d’une même entité thé- entourée par tout ce que l’on a vu précédemment (haut matique. Cela peut être lié à une notion de chapitre, mais ce de page, bas de page, navigation et informations contex- n’est pas forcément le cas. tuelles). Cette information principale peut prendre la forme d’un article, un billet d’humeur, une présentation, ... Il est On peut par exemple imaginer une page qui contiendrait plu- également nécessaire de la structurer. Pour cela, une nou- sieurs onglets. Le contenu de chacun de ces onglets pourrait velle balise voit le jour : article. Elle peut en son sein être être regroupé dans une section. structurée comme une page de site : Vont être abordés maintenant des éléments complémen- taires à la structuration de contenu, en abordant la problé- 42 | Linux Pratique n°74 www.linux-pratique.com Web www.linux-pratique.com Linux Pratique n°74 | 43 Web Consultez les statistiques de votre site web avec AWStats Sébastien Chazallet On se propose de présenter une méthode pour mettre en place des statistiques de fréquentation d’un site web à partir des fichiers de logs d’Apache 2. Cependant, cette méthode devrait être applicable à d’autres serveurs. 1. Configuration des fichiers 44 | Linux Pratique n°74 www.linux-pratique.com Web Dans le cas d’un serveur hébergeant un seul site, il n’y a qu’un seul fichier 2. Installation du logiciel AWStats de logs qui est généré et la configura- Comme toujours, les gestionnaires de paquets font des miracles en rendant la vie tion par défaut proposée par le ges- beaucoup plus simple : tionnaire de paquets est correcte. D’autre part, de nombreuses appli- $ aptitude install awstats apg libgeo-ipfree-perl libnet-ip-perl libnet-dns-perl cations s’installent à l’aide d’un ges- liburi-perl apache2-utils tionnaire de paquets et ont leur propre On installe ici le logiciel qui nous intéresse, ainsi que des dépendances (non configuration qui est également bien obligatoires) qui sont utiles et qui permettent d’avoir le maximum d’informations. réalisée et qui permet de distinguer les logs de chaque application. Il faut maintenant préparer le terrain pour la construction du site généré par AWStats, qui va afficher les statistiques de chaque site hébergé par la machine. Dans notre cas, le fichier de logs qui D’abord, il faut créer un utilisateur pour le logiciel : nous intéresse est l’access.log. De plus, usuellement, Apache réalise une $ adduser --system --group --shell «/bin/sh» --no-create-home --home «/var/lib/ rotation des logs, ce qui signifie que awstats» awstats les fichiers de logs sont régulièrement renouvelés de manière à ce qu’ils ne Puis configurer correctement l’application : soient pas trop longs et donc plus faci- lement exploitables. Ainsi, access. $ vim /etc/awstats/awstats.conf log est le dernier fichier en date, alors que access.log.1 est la dernière LogFile=»/var/log/apache2/access.log» LogType=W sauvegarde et que les autres sont com- LogFormat=4 pressés de manière à ce qu’ils pren- LogSeparator=» « nent moins de place. SiteDomain=»monsite.org» Au passage, voici quelques trucs à HostAliases=»localhost 127.0.0.1» savoir sur l’utilisation de fichiers de DNSLookup=1 logs. Pour afficher le contenu d’un Le fichier de configuration contient environ 200 paramètres qui permettent de com- fichier à l’écran : plètement personnaliser l’application, depuis la technique de statistiques jusqu’à leur apparence (couleurs, titres des graphiques, ...). Il est même possible de définir cat access.log ses propres graphiques directement dans ce fichier de configuration. Pour afficher une sélection d’un fichier On peut aussi activer ou non la plupart des modules (ceux dont la ligne est pré- à l’écran : cédée du signe dièse ne sont pas essentiels ou sont inutiles pour la plupart des besoins) : grep www.linux-pratique.com Linux Pratique n°74 | 45 Web Consultez les statistiques de votre site web avec AWStats On précise le fichier exécutable : cpan[3]> install Geo::IPfree cpan[4]> install Geo::IP::PurePerl Concernant le module de géolocalisation, il utilise des Alias /awstats-icon/ /usr/share/awstats/icon/ bases de données qu’il faut télécharger (sauf pour celle Pour terminer, il faut générer un mot de passe pour que les ErrorLog ${APACHE_LOG_DIR}/error_stats.log On a maintenant un site opérationnel. Il est possible de s’y LogLevel warn connecter dès maintenant. Il n’y a aucune statistique à mon- CustomLog ${APACHE_LOG_DIR}/access_stats.log combined trer et tous les graphiques seront vides, mais le site sera techniquement fonctionnel. 46 | Linux Pratique n°74 www.linux-pratique.com Web 3. Lecture de tous les fichiers de logs Vos sites sont peut-être en exploitation depuis un certain temps et ainsi, beaucoup de fichiers de logs qu’il convient d’utiliser se sont accumulés. Ainsi, nous aurons les statis- tiques à partir de la date de création du premier fichier de logs. Pour cela, il faut y aller dans l’ordre. En effet, la com- mande qui permet d’ajouter le contenu d’un fichier de logs ne fonctionne pas si les logs sont plus vieux que ceux qui sont déjà enregistrés. Il faut donc commencer par les plus anciens pour terminer par le plus récent. Les plus anciens sont les fichiers compressés. Il faut faire un ls pour savoir quel est le numéro du fichier de logs le plus élevé (admettons que ce soit 52 pour nous), puis faire, dans l’ordre, ceci : $ for i in {52..2}; do zcat plone-access.log.$i.gz | /usr/lib/cgi- bin/awstats.pl -config=www.monsite.org -update -LogFile=-; done $ /usr/lib/cgi-bin/awstats.pl -config=www.monsite.org -update -LogFile=plone-access.log.1 $ /usr/lib/cgi-bin/awstats.pl -config=www.monsite.org -update La première ligne est une boucle qui va lire (avec zcat, comme vu précédemment) chaque fichier de logs en com- mençant par le plus vieux. La seconde ligne va lire le fichier de logs access.log.1 et la dernière ligne va lire le fichier de logs courant, qui est connu grâce à la configuration qui a été faite au chapitre précédent (on ne précise donc pas l’option -LogFile). On peut donc aller voir le site d’AWStats que l’on a configuré et l’on devrait voir les statistiques pour le site www.monsite. org. Il faut alors faire de même pour chaque application. 4. Mise à jour automatique des statistiques De manière à ce que les statistiques restent à jour, il faut faire en sorte que le script suivant soit appelé tous les jours (autant de scripts que de sites dont il faut générer les statis- tiques). Il faut donc mettre ceci dans une crontab : # m h dom mon dow command 0 5 * * * /usr/lib/cgi-bin/awstats.pl -config=www.monsite.org -update Précisons qu’il n’y a pas de risque qu’une information déjà lue soit ajoutée à nouveau, puisque le script ne prend en compte que les nouveaux enregistrements. Il faut ensuite ajuster l’appel du script avec la rotation des logs d’Apache 2. 5. Conclusion L’outil AWStats est très performant et produit des statistiques intéressantes, à la hauteur de ce à quoi on est en droit d’at- tendre. Sa prise en main n’est cependant pas aisée, mais avec les scripts fournis ici, on a une méthode simple à appli- quer, efficace et reproductible. www.linux-pratique.com Linux Pratique n°74 | 47 Geeks Raspberry Pi : mini PC, maxi possibilités ? Franck Barnier Grâce à la miniaturisation des composants électroniques, nous avons au fond de nos poches des téléphones de plus en plus performants. De véritables ordinateurs dotés des dernières technologies... Et le Raspberry Pi dans tout cela, me direz-vous ? C’est simplement un ordinateur qui emprunte la technologie des téléphones mobiles modernes ! Résultat : un ordinateur ultra-compact fonctionnant sous Linux. Grâce à ces capacités de décodage vidéo H264 en 1080p à 30 images par seconde, il est théoriquement capable de lire des films en full HD. A l’instar des téléphones portables, le Raspberry Pi gère la 3D grâce à l’OpenGL ES 2.0. En plus de l’audio en 5.1 fourni par la prise HDMI, il dispose d’une prise Jack 3,5 mm offrant un son 2.0. De même, une sortie vidéo composite est également disponible. Une simple alimentation de téléphone por- table équipée d’une prise mini USB capable de fournir 700 mA sous 5 volts est suffisante pour faire fonctionner le Raspberry Pi. Par contre, celui-ci est livré sans boîtier. Plusieurs sont déjà en vente auprès des revendeurs spécialisés. Le Raspberry Pi ayant pour but d’intéresser les utilisateurs et Fig. 1a : Le Raspberry Pi, un mini ordinateur de la taille d’un notamment les plus jeunes au développement, cette petite téléphone portable plateforme est ouverte vers l’extérieur grâce à plusieurs connecteurs. Par exemple, le connecteur S2 permettra de 1. Présentation relier un module caméra dédié (non disponible actuellement), avec lequel le Raspberry Pi est capable de capturer la vidéo Le Raspberry Pi est le fruit de David Braben. Son nom ne en full HD à 30 images par seconde et les photographies à vous dit peut-être rien, mais les plus anciens d’entre vous ont 40 méga-pixels ! Mais le plus intéressant pour les bidouilleurs certainement entendu parler ou même ont pu jouer au jeu est le connecteur GPIO (General Purpose Input/Output) réfé- de combat galactique Elite sur Amiga par exemple. Eh bien rencé P1 Monsieur David Braben est le papa de ce jeu, qui a connu ces sur le circuit imprimé. Il est composé de 26 contacts heures de gloire sur de nombreuses plateformes des années 80. Autant dire que ce n’est pas un nouveau venu dans le monde de l’informatique ! Son but était de créer un ordina- teur à bas prix, accessible à tous les enfants, afin de leur permettre de découvrir l’informatique et la programmation. D’abord fabriqué en Chine, la dernière version du Raspberry Pi est fabriquée dans une usine de Sony au pays de Galles. Cette décision, prise par la fondation, est la preuve que l’on peut encore être productif aujourd’hui en Europe. Imaginez une carte de crédit qui intégrerait un processeur ARM, une prise Ethernet, deux USB et une sortie HDMI. C’est exac- tement ce qu’est le Raspberry Pi ! Ce tout petit ordinateur est équipé d’un système mono-puce (System on Chip en anglais) Broadcom 2835 composé d’un processeur ARM v6 cadencé à 700 MHz associé à un processeur graphique Videocore 4, ainsi qu’à 256 Mo de mémoire vive d’une capacité. Cela fait peu et il n’est malheureusement pas possible d’augmenter cette dernière. Fig. 1b: Tout petit, mais tout de même bien équipé ! 48 | Linux Pratique n°74 www.linux-pratique.com Geeks hardwares existants. Au moment de la $ cd OpenELEC.tv rédaction de cet article, aucune image $ PROJECT=RPi ARCH=arm make ISO n’est disponible pour le Raspberry Pi. Par contre, il vous est tout à fait pos- Après de nombreux cafés et si tout sible de compiler la distribution com- s’est déroulé correctement, il ne vous plète. Pas de panique ! Pour cela, vous reste plus qu’à installer OpenELEC aurez besoin d’un PC relié à Internet sur la carte SD de votre Raspberry tournant sous Linux... et de beaucoup Pi. Pour cela, il vous faut au préalable de patience. En effet, la compilation sur préparer la carte SD, soit à l’aide d’une mon ordinateur portable avec proces- série de commandes en ligne, soit seur AMD Turion64 X2 à 2GHz a duré avec un logiciel comme GParted. Afin environ douze heures ! de gagner du temps, nous allons voir comment procéder avec ce dernier. 2.1.1.1 Compilation du système Il faut donc avant tout récupérer les 2.1.1.2 Partitionnement de la carte sources de la distribution à l’aide de mémoire la commande en ligne git : Connectez donc la carte à votre ordi- nateur. Vous pouvez également utili- Fig. 2 : Le connecteur GPIO $ git clone git://github.com/OpenELEC/ qui ouvre le Raspberry Pi au ser une carte micro SD. Dans ce cas, OpenELEC.tv.git monde réel ! un adaptateur pour lecteur de carte Une fois fait, un nouveau répertoire SD est alors indispensable pour l’in- qui offrent jusqu’à 17 entrées/sorties. Le nommé OpenELEC.tv contenant les terfacer au Raspberry Pi. Raspberry Pi ne fournissant pas la puis- sources sera présent sur votre disque Pour le test, le système a été installé sur sance nécessaire pour alimenter des dur. Avant de passer à la compila- une carte micro SD de 2 Go. Deux parti- composants tels que des moteurs ou tion, il est nécessaire que le paquet tions sont nécessaires. La première, de des lampes, il vous faudra soit créer une libxml-parser-perl soit présent type FAT32 recevra le système à pro- interface spécifique, soit par exemple sur votre système. Si ce n’est pas le prement parler, tandis que la seconde, utiliser le kit Gertboard proposé par le cas, installez-le : de type Ext4 sera réservée à XBMC. magasin en ligne Element14 pour pou- C’est sur celle-ci que seront sauvegar- voir tout piloter dans votre maison ! $ sudo apt-get install libxml-parser-perl dés les paramètres de configuration de XBMC, ainsi que les jaquettes des Certains paquets étant téléchargés et films et albums présents sur votre sys- 2. Quel système compilés « à la volée », vérifiez que la installer ? connexion Internet soit bien active afin tème. Celui-ci ne dispose pas de parti- que la compilation soit réalisée com- tion swap, mais d’un fichier de mémoire Le Raspberry Pi coûte environ 30 € plètement. De plus, il vous faut préci- virtuelle de 256Mo situé également sur hors frais de port et 40 € avec une ser que l’ordinateur sur lequel elle sera cette seconde partition. carte SD contenant la distribution par la suite installée est le Raspberry Sous GParted, créez donc une par- Raspbian pré-installée. Plusieurs dis- Pi équipé d’un processeur ARM en tition de 128Mo formatée en FAT32, tributions sont aujourd’hui disponibles procédant comme suit : ainsi qu’une partition utilisant le reste pour le Raspberry Pi et sont toutes adaptées à une utilisation particulière. 2.1 Créez votre centre multimédia Vous connaissez forcement XBMC, la référence des centres multimédias qui vous a déjà été présentée dans les colonnes de Linux Pratique. Les distri- butions OpenELEC, XBian et Raspbmc permettent justement de transformer le Raspberry Pi en centre multimédia. Nous allons voir si cela est vraiment utilisable. 2.1.1 OpenELEC La distribution OpenELEC propose des versions adaptées aux différents Fig. 3 : Mise en place des partitions à l’aide de GParted www.linux-pratique.com Linux Pratique n°74 | 49 Geeks Raspberry Pi : mini PC, maxi possibilités ? de la place formatée en Ext4. Ensuite, effectuez un clic droit sur la première partition Au bout de plusieurs minutes (durée et sélectionnez Étiquette. Appelez cette partition « System ». De la même manière, variable suivant votre connexion nommez la seconde partition « Storage ». Enfin, activez les drapeaux boot et lba de réseau), le système est installé et prêt la partition système et appliquez les paramètres que vous venez de définir. à fonctionner. Côté fluidité et rapidité de l’interface, Raspbmc s’en sort mieux 2.1.1.3 Installation du système sur la carte mémoire qu’OpenELEC ; par contre, lors de la Pour installer la distribution sur la carte, il va encore falloir saisir quelques lignes lecture de fichiers vidéo en 1080p, de commandes ! Eh oui, il faut vraiment mettre les mains dans le cambouis pour l’image a tendance à saccader de profiter de cette distribution ! Les deux partitions de la carte SD étant montées, temps en temps. Pour Raspbmc comme procédez donc dans un shell comme suit : pour OpenELEC, il apparaît indispen- sable d’overclocker le Raspberry Pi et $ cp build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-0671d60/arm128_start.elf /media/System/start.elf de mettre en place une partition swap $ cp build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-0671d60/bootcode.bin /media/System/ plus importante, afin d’obtenir une lec- $ cp build.OpenELEC-RPi.arm-devel/bcm2835-bootloader-0671d60/loader.bin /media/System/ ture fluide des films full HD. Dans les deux lignes de commandes qui suivent, les séries de chiffres contenues 2.1.3 XBian 0.6.2 dans les noms des fichiers générés indiquent la date et l’heure de la compilation, ainsi que la version. Il est donc normal que vos fichiers portent des noms différents Cette distribution permet également d’ob- de ceux indiqués ci-dessous : tenir un centre multimédia sous XBMC. Après avoir décompressé l’archive que $ sudo cp target/OpenELEC-RPi.arm-devel-20120707102054-r11501.kernel /media/System/kernel.img vous aurez téléchargée sur le site officiel, $ sudo cp target/OpenELEC-RPi.arm-devel-20120707102054-r11501.system /media/System/SYSTEM vous trouverez une image de la distribu- tion prête à être installée. Celle-ci est au Finalement, il reste à créer un fichier texte contenant les paramètres nécessaires format img. Les développeurs de XBian au lancement du système avec la ligne de commande suivante : proposent un outil fonctionnant sous Windows pour installer le système. Pour $ sudo echo «dwc_otg.lpm_enable=0 root=/dev/ram0 rdinit=/init boot=/dev/mmcblk0p1 disk=/dev/mmcblk0p2 ssh quiet» > /media/System/cmdline.txt nous, Linuxiens avertis, nous passerons par la commande en ligne dd. Attention, Voilà, vous en avez terminé avec l’installation d’OpenELEC ! Démontez les par- toutes les données présentes sur votre titions de la carte mémoire et insérez-la dans le connecteur du Raspberry Pi. Ce carte mémoire seront détruites ! Pour le dernier étant relié à un écran via la prise HDMI, connectez le chargeur micro USB. test, XBian a été installé sur une carte Si l’installation s’est déroulée sans encombre, vous devriez voir apparaître le logo MicroSD de 2Go en utilisant un adapta- de la distribution au bout de quelques instants. teur USB. Pour l’installer, il vous faut sai- sir la ligne de commande suivante dans 2.1.1.4 Performances du Raspberry Pi sous OpenELEC un terminal : Vous l’aurez constaté, l’installation demande un peu de travail, mais cela reste un $ dd bs=1M if=/chemin_d’accès_à_l’image/ exercice très intéressant. Par contre, même si le Raspberry Pi réussit à lire les films XBian0.6.2.img of=/dev/sdc en 720p sous OpenELEC, il montre ses limites lors de la lecture de fichiers vidéo en 1080p. En effet, l’image se fige constamment et rend la visualisation impos- Dans la ligne de commande, /dev/ sible. L’interface de XBMC est quant à elle utilisable, bien que relativement lente. sdc correspond à ma carte Micro SD. L’installation terminée, trois partitions 2.1.2 Raspbmc sont présentes sur votre carte. La pre- Autre distribution sous XBMC, autre mode d’installation. En effet, pour installer mière, formatée en Fat16, fait office de cette distribution, il faut récupérer un script Python sur le site officiel de la distri- partition /boot, le système complet bution avec la ligne de commandes suivante : étant présent sur la seconde partition for- matée en Ext4. La dernière, d’une taille $ wget http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py de 500Mo, est la partition swap. XBian se montre plus véloce que ses deux Puis, rendez le script exécutable : consœurs dès le démarrage ! La naviga- $ chmod +x install.py tion dans l’interface de XBMC est rapide et fluide, sauf dès que l’on accède à une Votre carte mémoire étant connectée à votre ordinateur, lancez le script (sudo médiathèque qui contient fonds d’écran ./install.py). Celui-ci sert à télécharger la distribution et à l’installer sur la carte et affiches de films (une fois la mise à mémoire directement depuis le Raspberry Pi. Une fois le script installé, il faut donc jour de la médiathèque effectuée). Par replacer la carte mémoire sur le Raspberry Pi et le mettre sous tension avec une contre, bonne surprise, sous XBian la connexion Internet active. Ainsi, le Raspberry Pi se connectera au serveur de la lecture de films en full HD est parfaite distribution et lancera l’installation de celle-ci. A l’issue, trois partitions sont créées, avec le son généré sur la prise HDMI. dont une swap de seulement 122 Mo. Cela s’explique notamment par le fait que 50 | Linux Pratique n°74 www.linux-pratique.com Geeks cette distribution utilise une partition swap de 500 Mo et que la fréquence du processeur est boostée à 840 MHz. Bon point supplémentaire : XBian dispose de tous les plugins de base pro- posés sur le site de dépôt de XBMC ! De plus, les plugins dispo- nibles sur le site passion-xbmc.fr comme ceux de M6, Canal+, Bref ou encore Têtes à claques.TV fonctionnent parfaitement. Enfin, la librairie libcec est installée d’origine sur le sys- tème. Celle-ci permet de piloter l’interface de XBMC avec la télécommande de la télévision à laquelle le Raspberry Pi est connecté via la prise HDMI ! Plus besoin de clavier et de sou- Fig. 4 : Le script « raspi-config » permet de paramétrer ris, le Raspberry Pi, ainsi que la télévision, sont commandés facilement le Raspberry Pi. avec une seule et même télécommande ! Pour cela, si ce n’est pas déjà fait, il suffit d’activer cette fonctionnalité depuis le menu LXDE. Par contre, même dans ce cas, je vous recommande de Système > Paramètres > Système > Périphériques de XBMC. À récupérer la dernière version disponible dans la section de télé- noter que cette librairie est maintenant présente d’origine sur les chargement de raspberrypi.org. Pour l’installer, utilisez la com- dernières versions de Raspbmc et d’OpenELEC. mande dd comme expliqué plus haut. Vous pourrez constater avec GParted que la carte SD n’est pas totalement utilisée. 2.2 Installez une distribution Profitez-en pour ajouter une partition swap de 500 Mo position- née au bout de la carte, puis pour étendre la partition racine sur classique toute la partie restant libre. Enfin, il faut penser à ajouter la ligne Ici aussi, plusieurs distributions sont disponibles et il y a fort suivante dans le fichier /etc/fstab, afin que la partition swap à parier que bon nombre vont encore voir le jour. Nous allons nouvellement créée soit reconnue par le système : donc vous en présenter quelques-unes qui nous semblent intéressantes. /dev/mmcblk0p3 none swap sw 0 0 Ces modifications réalisées, la carte peut être insérée dans le 2.2.1 Raspbian, la distribution officielle du connecteur du Raspberry Pi. Au premier démarrage, le script Raspberry Pi raspi-config est lancé afin de vous aider à paramétrer le Si vous commandez le Raspberry Pi avec une carte SD, c’est la système. Il peut être lancé manuellement a posteriori si la confi- distribution que vous trouverez sur celle-ci. Elle a été optimisée guration ne vous convient pas (sudo raspi-config). Il vous afin d’exploiter au maximum les capacités de son hardware. sera ainsi possible d’étendre la partition /root sur la totalité De plus, elle est légère et dotée de l’environnement graphique de la partie non utilisée de la carte SD, de modifier le mot de Fig. 5 : Rapide, peu gourmand et convivial, l’environnement Xfce fonctionne parfaitement sur le Raspberry Pi ! www.linux-pratique.com Linux Pratique n°74 | 51 Geeks Raspberry Pi : mini PC, maxi possibilités ? passe utilisateur, de régler l’overscan, 2.2.2 QtonPi 0.2 de configurer l’overclockage, de sélec- Un petit mot sur cette distribution qui tionner le type de clavier, ainsi que se veut être la plateforme de déve- de paramétrer la langue et le fuseau loppement d’applications Qt5. QtonPi horaire. La rubrique per- Memory Split dispose de tous les outils nécessaires met de définir la quantité de mémoire pour développer des applications utili- vive qui sera allouée au microproces- sant cette fameuse librairie incontour- seur et par conséquent, celle qui le sera nable sous Linux, comme sur d’autres au processeur graphique. Le choix du systèmes aujourd’hui. Une fois l’archive partage de la mémoire sera évidem- décompressée, vous trouverez trois ment fonction de l’utilisation que vous répertoires. Les deux premiers contien- ferez de votre Raspberry Pi. Vous nent des outils pour le développement, pourrez également choisir d’activer le ainsi que des exemples. C’est sous le serveur SSH au démarrage, ainsi que troisième, nommé sdcard-img, que de lancer l’environnement graphique vous trouverez l’archive contenant le automatiquement. système. Décompressez-la et instal- Fig. 6 : Berryboot, le système Si vous choisissez de ne pas lancer d’installation idéal pour les lez la distribution comme suit : débutants ! le serveur graphique automatique- ment, il vous faudra vous identifier $ dd bs=1M if=/chemin_d’accès_à_l’image/ sous le nom de pi et entrer le mot de qtonpi-sdcard-0.2.img of=/dev/sdc bus i2C (Inter Integrated Circuit) et SPI passe (raspberry par défaut) éven- (Serial Peripheral Interface) sont acti- tuellement personnalisé avec raspi- 2.2.3 Occidentalis v. 0.2 vés. Cela permet ainsi d’interfacer des config extensions répondant à ces normes de . Ensuite, si vous souhaitez C’est la distribution de tous ceux qui communication. Le support d’extensions travailler sous l’environnement gra- se passionnent pour la robotique, la startx telles que Horloge Temps Réel (RTC), phique, vous saisirez pour domotique ou qui souhaitent se lancer capteurs divers (température, baromètre, lancer LXDE. Livrée avec quelques dans toutes sortes d’expérimentations logiciels, il vous est tout à fait pos- boussole), convertisseur numérique/ana- électroniques. Dérivée de la Raspbian sible d’en installer d’autres, soit avec logique (DAC) ou encore carte pouvant Wheezy, Occidentalis est produite par la commande en ligne apt-get, soit piloter par exemple jusqu’à seize servo- Adafruit, une société spécialisée dans en installant au préalable Synaptic si moteurs a été intégré. la vente de matériel dédié à l’apprentis- vous préférez passer par une inter- sage et à la création électronique. C’est Cette distribution est donc tout à fait face graphique ($ sudo apt-get le royaume du Arduino, du Raspberry Pi adaptée à la réalisation de systèmes install synaptic). et autres micro-contrôleurs ou encore de embarqués dépourvus d’écran. Dans ce Niveau environnement graphique, tout ce qui touche à la robotique. De plus, cas, le système pourra être contrôlé à ssh il est tout à fait possible d’en chan- ce site vous aidera à vous familiariser distance en utilisant la commande . ger. Pour ma part, n’étant pas du tout avec le Raspberry Pi grâce à de nom- Pour installer l’image du système adepte de LXDE, j’ai décidé d’instal- breux didacticiels. L’un des principaux contenue dans l’archive, une carte ler mon environnement préféré : Xfce. avantages de Occidentalis est que les SD d’une capacité minimale de 4 Go Il présente l’avantage d’être assez peu gourmand en ressources, mais est bien plus convivial. Vous pouvez faire de même en sélectionnant le paquet xfce4 avec Synaptic, ou en saisissant les lignes de commandes suivantes : $ sudo apt-get update $ sudo apt-get install xfce4 Pour lancer l’environnement gra- phique, la commande à utiliser est alors startxfce4. Si vous avez choisi de lancer le serveur graphique automatiquement, il vous suffit de fer- mer la session en cours pour accé- der à l’écran d’identification par lequel vous pourrez sélectionner le nouvel Fig. 7 : RaspRazor, avec son bureau Qt et ses outils, est une distribution environnement installé. orientée programmation. 52 | Linux Pratique n°74 www.linux-pratique.com Geeks • RaspRazor : Cette distribution, orientée program- mation, est dérivée de Raspbian et dispose de l’environnement Razor-qt. Elle intègre quelques jeux classiques comme Supertux, ou des applications plus sérieuses telles que Scribus, GParted, FocusWriter ou EasyPaint. Côté développe- ment, les enfants sont notamment à l’honneur avec KidsRuby, logiciel doté d’une interface leur permettant d’aborder la programmation. • Linux Puppy : Voici la distribution la plus géné- Fig. 8 : La distribution Puppy, agréable à utiliser, est certainement la plus raliste avec tous les logiciels généraliste du lot. nécessaires pour une utilisation bureautique, tels que AbiWord, est nécessaire. Il faut saisir la ligne de Ensuite, il vous suffit de créer une Gnumeric, Chromium, Ayttm, commandes suivante : partition fat16 sur votre carte SD et mtPaint, XSane, GTK Aiksaurus, d’y transférer le contenu de l’archive. Leafpad, ePDFview, Inklite ou $ dd bs=1M if=/chemin_d’accès_à_l’image/ La suite est simple, la carte SD étant encore MPlayer. Toutes ces appli- Occidentalis_v02.img of=/dev/sdc connectée au Raspberry Pi et la cations sont évidemment moins connexion Internet active, Berryboot L’image faisant 2,6 Go, il faut ensuite complètes que par exemple va créer une partition fat qui fera étendre la taille de la partition sur la LibreOffice ou GIMP, mais elles office de répertoire /boot de votre totalité de la carte SD. Cela peut se présentent l’avantage d’être bien système, puis une partition Ext4 sur faire à l’aide du script raspi-config plus légères, donc plus adaptées au laquelle les distributions installées qui est automatiquement lancé au pre- Raspberry Pi. cohabiteront, chacune dans un réper- mier démarrage du système. toire à leur nom. L’interface graphique • SUGAR : liste les différentes distributions dis- Voici une distribution très originale. 2.2.4 Berryboot, l’installateur ponibles. Il vous suffit de sélection- Elle intègre l’interface graphique multi-distribution ! ner celle de votre choix et de valider SUGAR spécialement développée à Berryboot est un outil qui permet d’ins- pour qu’elle soit téléchargée et instal- l’attention des enfants dans le cadre taller plusieurs distributions sur votre lée sur la carte SD. À la fin, Berryboot du projet One Laptop Per Child. Raspberry Pi. Cela va de la distribu- indique la place restante sur la carte Son interface ludique permet un tion classique au centre multimédia, SD et permet d’ajouter une nouvelle accès facile aux logiciels éducatifs. en passant par la distribution orien- distribution ! Même si cette méthode De nombreux domaines sont cou- tée serveur. La première étape est n’est pas habituelle, elle n’en reste pas verts tels que l’algèbre, la géomé- de télécharger l’archive de Berryboot. moins simple et rapide ! trie, la logique ou la musique, mais Fig. 9-1 à 9-3 : Avec Sugar, nos chérubins évoluent dans un style d’interface commune à toutes les applications. www.linux-pratique.com Linux Pratique n°74 | 53 Geeks Raspberry Pi : mini PC, maxi possibilités ? malheureusement en anglais pour l’instant. Cette interface risque. Les fréquences normales du microprocesseur, de la est aujourd’hui disponible pour Linux, Windows et Mac. Ce mémoire et du processeur graphique sont respectivement beau projet se devait d’être disponible sur le Raspberry Pi, de 700, 400 et 250 MHz. Nous avons vu que certaines dis- qui est lui aussi destiné à l’apprentissage de l’informatique tributions, comme XBian, modifient ces fréquences afin de pour les plus jeunes. gagner en performance. Il y a plusieurs niveaux d’overclock • BerryTerminal : et certains entraînent l’augmentation de la tension d’alimen- tation du processeur. Cela n’est évidemment pas recom- Avec cette distribution, vous transformerez votre mandé de faire fonctionner le Raspberry Pi overclocké en Raspberry Pi en simple terminal. Ici en effet, les logi- continu. Le mieux, et afin de préserver la garantie, est de ciels ne sont pas présents en local sur la carte SD, mais faire varier dynamiquement les fréquences en fonction de la sur un serveur distant fonctionnant sous une distribution charge. De plus, si le SoC atteint la température limite fixée LTSP (Linux Terminal Server Project) comme par exemple par défaut à 85°C, les fréquences par défaut sont automa- Edubuntu qui peut être installée dans cette configuration. BerryTerminal est donc très adaptée par exemple au milieu tiquement appliquées afin de le protéger. Si vous souhaitez scolaire, car elle permet de mettre en place une salle infor- overclocker le Raspberry Pi, il est tout à fait possible de matique pour un coût relativement faible. placer un petit radiateur sur le SoC afin de l’aider à dis- siper la chaleur ! Voici un exemple de configuration per- mettant un overclockage dynamique du CPU de 700 MHz 3. Survitaminez votre à 1 GHz, de la SDRAM de 400 à 500 MHz et du GPU de 250 à 500 MHz : framboise ! 3.1 Mettez le firmware à jour # Overclockage dynamique du Raspberry Pi force_turbo=0 C’est en effet la première opération à réaliser. Pour cela, vous arm_freq= 1000 pouvez passer par le script rpi-update. Si celui-ci n’est pas arm_freq_min=700 présent par défaut sur votre distribution, il faut procéder comme sdram_freq=500 indiqué ci-dessous pour l’installer et le rendre exécutable : sdram_freq_min=400 gpu_freq=500 $ sudo apt-get install ca-certificates git-core gpu_freq_min=250 $ sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update over_voltage=6 $ sudo chmod +x /usr/bin/rpi-update over_voltage_sdram=0 Enfin, lancez le script : $ sudo rpi-update Bon à savoir ! Si la valeur de la variable turbo_force est fixée à 1, les fréquences et tensions seront maintenues aux niveaux maximums définis. Cette configuration peut détériorer l’électronique du Raspberry Pi et la garantie s’en trouvera invalidée. Lorsque le Raspberry Pi est connecté à un écran (télévi- sion ou moniteur) via la prise HDMI, il se peut que l’image n’occupe pas la totalité de l’écran. Il est possible de suppri- mer la bande noire périphérique. Pour cela, il faut avant tout Fig. 10 : Mise à jour du firmware en cours... essayer de désactiver l’overscan comme suit : disable_overscan=1 3.2 Paramétrage manuel Si votre écran ne supporte pas cette configura- Comme nous avons pu le voir, le système peut être confi- tion, il faudra plutôt jouer sur la valeur des variables guré à l’aide du script raspi-config. Certains paramètres overscan. Pour réduire la bande noire, il faut donner ne sont cependant pas accessibles depuis celui-ci. Il faut une valeur négative correspondant aux pixels à suppri- donc éditer le fichier config.txt qui se trouve sur la par- mer. De même, si l’image déborde de l’écran, il est pos- tition /boot du système afin d’optimiser le fonctionnement sible de la réduire afin de la recentrer correctement, mais du Raspberry Pi. cette fois-ci, la valeur de décalage est positive. L’extrait Nous savons qu’il est possible d’overclocker le Raspberry ci-dessous élargit l’image de 32 pixels sur chacun de Pi. Il ne faut pas perdre de vue que cela n’est pas sans ses côtés : 54 | Linux Pratique n°74 www.linux-pratique.com Geeks décodage vidéo. Ce sera également l’outil idéal pour inté- # Adaptation de l’image à la taille de l’écran resser les plus jeunes à la programmation ou à la création overscan_left=-32 par exemple de petits robots ! overscan_right=-32 overscan_top=-32 Nous aborderons certainement l’utilisation du Raspberry overscan_bottom=-32 Pi associé par exemple au Gertboard dans un pro- chain article. Enfin, sachez que ce type de petite plate- Connecté en HDMI, si le Raspberry Pi est allumé avant forme fait des émules, puisqu’il en existe de nombreuses l’écran ou avant que l’entrée HDMI de ce dernier soit active, autres telles que CuBox, Gooseberry, APC, PandaBoard, l’image restera désespérément noire. Pour y remédier, il suf- Cotton Candy ou XDroid. Le choix est large, d’autant que fit d’ajouter la ligne suivante qui permettra de brancher à le Raspberry Pi dispose souvent de performances infé- chaud la prise HDMI et obtenir l’image de l’ordinateur sans rieures, mais ce dernier présente l’avantage d’être le avoir à rebooter : moins onéreux, d’intégrer différents connecteurs d’exten- sions et surtout, de bénéficier d’un véritable engouement hdmi_force_hotplug=1 grâce à une communauté d’utilisateurs très actifs qui ne cesse de croître ! Outre les nombreux sites traitant du Par défaut, le format de l’image fournie par la sortie compo- Raspberry Pi, je vous recommande la lecture de la revue site est en NTSC. Par exemple, pour l’adapter aux écrans électronique mensuelle gratuite, The MagPi, entièrement PAL 16/9, il faut ajouter les paramètres suivants : dédiée à la petite framboise, qui n’en a pas fini de ramener sa fraise ! # Image au standard PAL sdtv_mode=2 # Image au format 16/9 sdtv_aspect=3 Liens Le Raspberry Pi permet de lire les flux vidéo encodés en Site officiel : MPEG2 et en VC-1 grâce à ses possibilités de décodage http://www.raspberrypi.org/ matériel. Mais, afin de pouvoir profiter de cette fonction- nalité, il faudra s’acquitter du prix de la licence de chacun Où acheter : de ces deux standards, respectivement 3,01€ et 1,50€. La • le Raspberry Pi : licence présentant le plus d’intérêt est la première, puisque http://www.element14.com/, http://uk.rs-online.com/ cette norme est fréquemment utilisée. Pour l’acquérir, ren- ou http://adafruit.com dez-vous sur la page Codec licenses du site raspberrypi.org. • le kit Gertboard : Il vous faudra indiquer le numéro de série du microprocesseur http://www.element14.com/community/groups/ de votre Raspberry Pi que vous obtiendrez grâce à la ligne de raspberry-pi/ commandes suivante : • des extensions et kits divers : http://adafruit.com/ $ cat /proc/cpuinfo category/105 Une fois fait, il vous suffit d’ajouter la clé de la licence que Où télécharger : vous aurez reçue dans le fichier config.txt comme • OpenELEC : http://openelec.tv/ l’exemple ci-dessous : • XBian : http://xbian.org/ decode_MPG2=0x84652173 • Raspbmc : http://www.raspbmc.com/ • Occidentalis : Comme vous le voyez, le Raspberry Pi peut être opti- http://learn.adafruit.com/ misé grâce aux différents paramètres disponibles et à bien adafruit-raspberry-pi-educational-linux-distro d’autres que vous pourrez découvrir si vous décidez de • QtonPi : http://qt-project.org/wiki/Qt-RaspberryPi/ l’acquérir ! • Berryboot : http://www.berryterminal.com/doku.php/ berryboot 4. Conclusion Site officiel de SUGAR : http://sugarlabs.org/ Vous l’aurez compris, le Raspberry Pi n’a pas grand-chose à Site officiel de Edubuntu : http://www.edubuntu.org/ voir avec les ordinateurs multi-cœurs disponibles sur le mar- ché. Par contre, pour environ 50€ avec une carte mémoire Site officiel de Razor-qt : http://razor-qt.org/ 4Go frais de port compris, vous disposerez d’une plateforme idéale pour le développement, la bidouille ou encore la mise La revue The MagPi : http://www.themagpi.com/ en place d’un centre multimédia grâce à ces capacités de www.linux-pratique.com Linux Pratique n°74 | 55 Geeks I3, le « tiling window manager » pour tous Jacques Haas Et si vous utilisiez un gestionnaire de fenêtres minimaliste, comme les power users ? Mais vous vous dites qu’il faut apprendre un langage de programmation pour le configurer, que cela prend un temps fou... Qu’à cela ne tienne, i3 est un gestionnaire avec des fichiers de configuration en langage naturel et aux raccourcis clavier intuitifs. Présentation de la version 4.2. Si vous disposez déjà d’un gestionnaire 1. Qu’est-ce qu’un 3. Pourquoi i3 ? de démarrage (gdm, lightdm,...), il suffit tiling window i3 est issu du gestionnaire de fenêtres de sélectionner i3 et d’entrer vos identi- wmii, qu’il rend plus léger et plus fiants pour vous connecter. Si ce n’est manager ? facile d’accès. i3 ne nécessite pas de pas le cas, avant de lancer une session Un tiling window manager est un ges- connaître un langage de programma- avec i3, ouvrez votre fichier .xinitrc tionnaire de fenêtres qui dispose les tion particulier pour être configuré, et insérez cette ligne : fenêtres en mosaïque, en utilisant contrairement à d’autres gestion- exec i3 tout l’espace disponible sur le bureau. naires de fenêtres (awesome en Lua, xmonad en Haskell, etc.). De plus, sa De la sorte, le positionnement des Si cela ne fonctionne pas et que vous configuration tient dans deux fichiers, fenêtres est fortement automatisé et utilisez les pilotes propriétaires Nvidia, comme nous le verrons plus loin. ne nécessite pas l’utilisation de la sou- ajoutez l’option --force-xinerama ris : tout se contrôle au clavier ! Cette en fin de ligne. famille de gestionnaires de fenêtres 4. Installation Au redémarrage, il suffit de taper xinit se distingue de la famille des gestion- ou startx et vous êtes dans i3. naires dynamiques, où les fenêtres Pour installer i3, dans Debian ou sont flottantes, comme c’est le cas Ubuntu, on se place dans une console dans Openbox et dans la majorité des en mode administrateur : 5. La connexion environnements de bureau (qui eux- # apt-get install i3 À la première ouverture de session, mêmes reposent sur un gestionnaire la fenêtre de configuration rapide s’af- de fenêtres). Ce méta-paquet installe le gestion- fiche (Fig. 1). Vous devez choisir une naire seul (i3-wm), la barre de statut touche de base pour l’ensemble des (i3-status) et un utilitaire de ver- raccourcis du gestionnaire de fenêtres. 2. Quels avantages ? rouillage de l’écran (i3-lock). La touche Windows gauche est un bon Le choix d’un gestionnaire de fenêtres par rapport à un environnement de bureau complet peut être dicté par des contraintes matérielles (les gestion- naires de fenêtres, moins gourmands en ressources que les environnements de bureau, tournent très bien sur des machines anciennes). Un gestionnaire de fenêtres, c’est aussi un moyen de construire son bureau avec juste les applications que l’on souhaite, pour un système plus rapide et avec moins de Fig. 1 : i3 lors du premier démarrage. L’assistant de configuration vous dépendances. facilite la vie... 56 | Linux Pratique n°74 www.linux-pratique.com Geeks choix : beaucoup de raccourcis par au-dessus de la rangée des lettres du On ajoute ensuite dans .i3/config : défaut utilisent les touches de la moi- haut du clavier (en qwerty, elles donnent tié gauche du clavier. Quelle que soit la directement les chiffres associés). Cela exec feh --bg-center ‘/chemin/vers/image’ touche que vous choisirez, nous appel- est valable de 1 à 9, mod+0 donnant Au prochain démarrage, feh utilisera lerons cette touche mod par la suite. accès à l’espace 10. le fichier spécifié comme fond d’écran (bg pour background) et centrera 6. Quelques Créer des raccourcis l’image (center). Bien sûr, feh n’est lanceurs d’applications qu’un choix parmi d’autres : Nitrogen raccourcis de base propose un service similaire (Fig. 2). La plupart des raccourcis fonction- Vous aimez bien dmenu, mais vous nent avec la touche mod accompa- travaillez toujours avec les mêmes 8. Créer une fenêtre gnée d’une autre touche. Par exemple, applications et voulez les lancer Quand vous ouvrez une fenêtre (ou mod+Entrée ouvre un terminal. encore plus vite ? Créez des rac- conteneur) dans un espace vide, celle- courcis clavier dédiés ! Prenons Pour se déplacer d’une fenêtre à ci occupe l’ensemble de l’espace dis- l’exemple d’un explorateur de l’autre, on tape . Pour ponible. Par défaut, si vous ouvrez mod+flèche fichiers, Thunar. Ouvrez le fichier déplacer une fenêtre par rapport aux une deuxième fenêtre dans ce même .i3/config et ajoutez : autres, on tape mod+shift+flèche. espace, celle-ci sera placée à droite de la première : l’écran sera coupé en deux. Pour passer une fenêtre en plein bindsym $mod+t exec /usr/bin/thunar écran, on tape mod+f (fullscreen). À la prochaine ouverture de ses- Pour fermer une fenêtre, c’est sion, la combinaison mod+t lan- mod+shift+a (la position de la touche dmenu, le lanceur cera une fenêtre de Thunar. Le [A] du clavier français est la touche [Q] principe vaut pour toutes les appli- d’applications du qwerty, pour quit). cations : indiquez la combinaison minimaliste Pour quitter la session (pour appliquer voulue et la localisation du binaire. des changements dans les fichiers de Avec le méta-paquet de base, i3 est configuration par exemple), on tape assez nu : les seuls moyens de lan- mod+shift+e. 7. Ajouter un fond cer des applications sont d’ouvrir Vous avez accès à dix espaces de tra- d’écran avec feh une fenêtre de terminal et de pro- vail, numérotés en bas à gauche dans grammer des raccourcis (voir plus la barre d’état. N’apparaissent que Par défaut, i3 affiche un simple loin). Il y a plus simple : dmenu, un l’espace en cours et les espaces qui fond noir au démarrage. Pas très lanceur qui apparaît à la demande contiennent des fenêtres. Pour se placer accueillant ! Pour y remédier, nous sous forme de barre en haut de dans un espace, faites mod+chiffre, pouvons utiliser feh. l’écran. Pour installer dmenu : chiffre étant l’une des touches du # apt-get install feh pavé numérique, ou l’une des touches # apt-get install dmenu Son lancement est déjà prévu par la configuration de i3, qui lui réserve le raccourci mod+d. Fig. 4 : dmenu est une simple barre en haut de l’écran. Il permet d’appeler les applications. La recherche incrémentale affiche les applications correspondantes : on peut taper un nom complet jusqu’à n’avoir qu’un résultat et taper sur Entrée, ou se déplacer avec les flèches gauche ou droite dans la sélection proposée puis appuyer sur Entrée. Cela vous paraît alambiqué ? Ce n’est qu’une impression. Le processus demande Fig. 2 : Exemple de fond d’écran utilisé avec i3, et deux fenêtres flottantes. juste un temps d’adaptation. L’image (Purple Eidolon) provient de la galerie Gnome Art. www.linux-pratique.com Linux Pratique n°74 | 57 Geeks I3, le « tiling window manager » pour tous Pour créer une fenêtre en-dessous de la fenêtre active, on passe en mode par défaut avec mod+e, on presse mod+v i3bar, la barre d’état (vertical), puis on ouvre la fenêtre voulue : un terminal, une application (voir plus loin). Pour placer une fenêtre à côté de Sous les fenêtres, on trouve i3bar, la barre d’état de i3. la fenêtre active, on remplace mod+v par mod+h (horizontal). Elle a plusieurs fonctions. C’est elle qui affiche les bou- tons des espaces de travail utilisés, les icônes de cer- 9. Changer de mode d’affichage taines applications ouvertes (Skype, Pidgin), mais aussi une ligne de statut qui affiche différents renseignements : Par défaut, les fenêtres sont placées côte-à-côte. On peut l’espace libre sur le disque dur, l’état de la connexion aussi les afficher sous forme d’onglets sur une ligne en haut réseau, le niveau de la batterie, ou encore l’heure. de l’écran, pour en garder une seule à l’écran à la fois. Pour cela, tapez mod+z. Pour voir les en-têtes de fenêtre s’entas- Comme pour tout le reste dans i3, la ligne d’état est inté- ser sous forme de pile, tapez mod+s. Pour revenir au mode gralement configurable. C’est là que i3status entre en par défaut, tapez mod+e. scène. Ce programme offre un choix de modules à affi- cher. i3status possède son propre fichier de configura- Pour changer le comportement par défaut, il suffit d’ajouter une tion, .i3status.conf, dont voici un extrait en exemple : ligne dans le fichier .i3/config. Pour l’affichage en onglets : general { workspace_layout tabbed colors = true interval = 5 } Pour l’affichage en tuiles : order += «ipv6» workspace_layout stacking order += «disk /» order += «run_watch DHCP» order += «run_watch VPN» order += «wireless wlan0» order += «ethernet eth0» order += «battery 0» order += «cpu_temperature 0» order += «load» order += «time» Suit un paragraphe de configuration pour chacun des modules ci-dessus. Pour désactiver les couleurs, il suffit Fig. 3 : Dans i3, l’affichage des fenêtres par défaut colors = true false (à gauche), en pile (au milieu) et en onglets (à droite). de changer le paramètre de en : tout s’affiche alors en blanc. L’option interval définit le temps entre deux rafraîchissements des données affi- 10. Faire flotter les fenêtres, chées, en secondes. modifier leur taille On notera l’absence d’indicateur de RAM ou de charge du processeur. Pour ceux d’entre vous qui souhaiteraient un i3 est un tiling window manager dynamique, c’est-à-dire qu’il rapport d’état plus conséquent, vous pouvez vous tourner gère aussi bien la disposition des fenêtres « en tuiles » que vers des solutions comme Conky, qui s’affichent directe- les fenêtres flottantes. Pour faire flotter une fenêtre, appuyez ment sur le bureau. sur . Vous pouvez déplacer la fenêtre de mod+shift+Espace Enfin, pour changer la couleur d’arrière-plan et celle de la manière classique à la souris en maintenant le clic gauche police, rendez-vous dans le fichier .i3/config : sur la bordure supérieure. En maintenant enfoncée la touche mod, vous pouvez faire de même, mais en cliquant n’importe bar { ou dans la fenêtre. status_command i3status } Pour redimensionner une fenêtre flottante, on entre dans le Sous la ligne status_command et alignée avec celle-ci, mode Resize avec mod+r. Ensuite, shift+flèche augmente ajoutez par exemple : la taille de la fenêtre dans la direction désirée, flèche la rogne sur le côté voulu. Pour sortir du mode Resize, on appuie sur colors { Entrée. On peut aussi cliquer sur les bordures de la fenêtre. background #000000 statusline #ffffff } 11. Changer l’aspect des Cela définit un arrière-plan noir pour une police blanche, mais toutes les couleurs de la palette sont possibles ! On fenêtres peut aussi changer les couleurs utilisées pour les boutons Le thème par défaut vous insupporte ? Pas de problème. Il d’espace de travail en ajoutant des lignes dédiées (voir suffit de changer les couleurs dans le fichier .i3/config, « Changer l’aspect des fenêtres »). en ajoutant des lignes de la forme : 58 | Linux Pratique n°74 www.linux-pratique.com Geeks TIPS colorclass border background text indicator La classe de couleur correspond au type de fenêtre dont on veut changer la Le téléchargement couleur (client.focused pour la fenêtre active, client.unfocused pour les fenêtres inactives, par exemple). Les quatre entrées suivantes sont les couleurs de MP3 sur pour la bordure, l’arrière-plan, le texte et la bordure séparant deux fenêtres d’un même conteneur. Un exemple pour les couleurs par défaut de la fenêtre active : Amazon client.focused #4c7899 #285577 #ffffff #2e9ef4 Pour l’achat en ligne de fichiers MP3, Amazon vous propose d’installer son Le principe est le même pour les boutons d’espace, avec les catégories focused_ programme propriétaire Amazon MP3 workspace, active_workspace, inactive_workspace et urgent_ Downloader sur votre ordinateur. Bien workspace. Par défaut, on a : qu’ils aient pensé à notre système d’ex- bar { ploitation préféré, les versions de ce pro- colors { gramme destinées aux distributions Linux background #000000 sont malheureusement obsolètes (Ubuntu statusline #ffffff 8.10, Debian 5, Fedora 9 et OpenSUSE 11.0) et impossibles à installer sur une focused_workspace #4c7899 #285577 #ffffff distribution récente, à cause des dépen- active_workspace #333333 #5f676a #ffffff dances qui ne sont bien entendu pas inactive_workspace #333333 #222222 #888888 satisfaites. urgent_workspace #2f343a #900000 #ffffff De ce fait, une rapide recherche sur le net } nous a conduits au projet clamz (http:// } code.google.com/p/clamz/). Il s’agit d’un programme en ligne de commandes, libre, permettant de télécharger les fichiers MP3 i3lock, pour verrouiller votre écran achetés sur la boutique Amazon. De plus, nous avons constaté avec plaisir que ce i3lock se lance simplement via dmenu : mod+d i3lock. L’affichage bascule programme se trouvait packagé dans alors sur un écran blanc. Pour débloquer l’ordinateur, il suffit de taper le mot les dépôts de Debian, Ubuntu, Fedora et de passe utilisateur. Bien qu’il n’y ait pas de champ de saisie, un pictogramme OpenSUSE ! Sous Debian et dérivées, il vous informe que le mot de passe est vérifié, puis débloque l’écran. suffira donc de l’installer comme suit : Vous pouvez choisir la couleur de l’écran en lançant i3lock depuis un terminal ~$ sudo aptitude install clamz avec l’option -c : Ceci fait, passez et validez votre com- $ i3lock -c ff0000 mande sur Amazon. Aussitôt, votre ges- pour avoir du rouge. De la même manière, on lance une image en ajoutant l’op- tionnaire de téléchargements vous invite tion -i (fonctionne avec un fichier .png) : à enregistrer un fichier AMZ (nommé « AmazonMP3-xxxxxxx.amz »). Il vous $ i3lock -i /chemin/vers/image.png suffit alors d’exécuter la commande sui- vante et le téléchargement commence automatiquement : 12. Conclusion ~$ clamz AmazonMP3-1346157990.amz Nous avons passé en revue le fonctionnement basique de i3. Ses raccourcis faciles Downloading «01 - Greenwashing.mp3» et sa configuration aisée en font un candidat idéal pour équiper une station de tra- vail minimaliste, une machine vieillissante, ou pour ceux qui souhaitent maîtriser Greenwashing [#################] 100% tous les paramètres d’un environnement qui répond totalement au clavier. Downloading «02 - Ladilafé.mp3» On apprécie vite de ne pas déplacer sa main vers la souris à tout propos. Une bonne piste pour gagner en efficacité et en légèreté, sans se prendre les pieds Ladilafé [#################] 100% dans les langages de programmation ! [...] Pour aller plus loin, penchez-vous sur le guide de l’utilisateur pour i3 : http://i3wm. 1 of 1 AMZ files downloaded successfully. org/docs/userguide.html. Une mine d’informations très complète et accessible aux néophytes. On y trouve d’autres personnalisations, par exemple comment renom- mer les espaces de travail, et bien plus encore... www.linux-pratique.com Linux Pratique n°74 | 59 DÉCISIONNEL Gestion de parc avec GLPI Benoît Benedetti GLPI (Gestion Libre de Parc Informatique) est un projet libre, français (d’où le nom), de gestion de parc. De nombreuses alternatives existent, libres, propriétaires, payantes, ..., mais GLPI est une valeur sûre grâce à ses nombreuses fonctionnalités. GLPI est une application PHP/MySQL, travail de Remi Collet [COLLET] et de ses dépôts de paquets, qui nous permet- qui dispose de nombreuses fonction- tront d’installer tous ces logiciels facilement, dans leur dernière version, et de les nalités pour gérer les ressources maintenir simplement à jour via le gestionnaire de paquets Yum. Ces dépôts sont d’une entreprise, quelle soit de grande compatibles Red Hat et il existe une version Fedora si vous préférez utiliser ces ou petite taille : distributions. Dans la suite, nous allons installer GLPI et ses pré-requis, en s’ins- • Gestion d’inventaire de matériel pirant en partie du tutoriel de Remi [TUTORIEL]. informatique (ordinateurs, impri- mantes, matériels réseau, consom- 1.1 Pré-requis mables, mais aussi les logiciels) ; • Helpdesk : système de tickets, rap- 1.1.1 Dépôts de paquets nécessaires port, enquête de satisfaction ; Comme indiqué sur la page de Remi [DEPOTS], il faut installer le dépôt EPEL, • Gestion des documents (contrats, avant son dépôt : licences) et des contacts ; • Système de base de connaissances $ sudo yum -y install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7. et de FAQ utilisateurs ; noarch.rpm $ sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm • Gestion de groupes, d’entités, authentification externe LDAP, SSO ; Une fois les dépôts installés, celui de Remi n’est pas activé par défaut. Modifiez • Création de budget, notifications. /etc/yum.repos.d/remi.repo : GLPI offre beaucoup de fonctionnali- [remi] tés, utiles aussi bien aux équipes infor- name=Les RPM de remi pour Enterprise Linux $releasever - $basearch matiques, helpdesk, utilisateurs, de #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/ management ou des finances. Vous mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror n’êtes pas obligé de toutes les utiliser, enabled=1 certaines installations ne profitent ... que de sa fonctionnalité d’inventaire matériel. Mais l’utilisation conjointe de Vous pouvez mettre à jour votre base de paquets, pour prendre en compte ces toutes ses fonctionnalités lui procure deux nouveaux dépôts : tout son intérêt : lier un ticket d’inter- vention à un matériel, gérer le nombre $ sudo yum -y update d’installations de logiciels par rapport aux contrats de licence achetés, etc. 1.1.2 MySQL Notre installation de GLPI va avoir besoin d’une base de données MySQL pour 1. Installation stocker ses informations. Commençons par installer le paquet du logiciel serveur Dans cet article, j’ai choisi d’utiliser de MySQL : une CentOS comme distribution Linux. En plus d’être une distribution serveur $ sudo yum install -y mysql-server stable, elle permet également d’instal- $ sudo chkconfig mysqld on ler simplement GLPI. GLPI étant une $ sudo service mysqld start application web, elle nécessite une Je vous invite à lancer le script de sécurisation mysql_secure_installation pile LAMP (Linux, Apache, MySQL et PHP) et bien sûr, les fichiers PHP de pour, entre autres, changer le mot de passe de l’utilisateur root (vide par défaut) : GLPI. Leur installation n’est pas com- $ sudo mysql_secure_installation pliquée, mais nous allons profiter du 60 | Linux Pratique n°74 www.linux-pratique.com DÉCISIONNEL Vous pouvez ensuite créer la base MySQL et l’utilisateur qui aura le droit de l’utiliser : 2. Prise en main 2.1 L’interface $ mysql -u root -p mysql> CREATE DATABASE IF NOT EXISTS `glpi` ; L’interface de GLPI peut paraître mysql> CREATE USER ‘glpi’@’%’ IDENTIFIED BY ‘glpisecret’; déroutante de prime abord, mais une mysql> GRANT USAGE ON *.* TO ‘glpi’@’%’ IDENTIFIED BY ‘glpisecret’; fois prise en main, elle permet de mysql> GRANT ALL PRIVILEGES ON `glpi`.* TO ‘glpi’@’%’; naviguer rapidement pour effectuer mysql> FLUSH PRIVILEGES; mysql> exit les différentes tâches. Nous ne pour- rons pas voir en détail toutes les fonc- Bien sûr, vous devriez utiliser d’autres noms de base, d’utilisateur et mot de passe, tionnalités de GLPI dans cet article. par sécurité. Savoir naviguer dans l’interface vous permettra d’aller plus loin dans les 1.2 Installation de GLPI concepts présentés. Lancez la commande yum suivante, pour vérifier que la dernière version stable Les différentes fonctions de GLPI ont de GLPI (la 83.4 lors de la rédaction de cet article) est bien disponible pour été regroupées en six groupes (Fig. 1). installation : La barre de navigation principale de l’interface permet de naviguer dans $ sudo yum info glpi.noarch Available Packages ces différents groupes : Name : glpi • Inventaire : pour créer et gérer tous Version : 0.83.4 les équipements de la base de GLPI ; Si tout est ok, vous pouvez installer GLPI : • Assistance : regroupe toutes les $ sudo yum -y install glpi fonctionnalités de helpdesk ; • Gestion : permet de gérer toutes La commande a aussi installé toutes les dépendances, dont Apache et une confi- les informations administratives et guration web pour GLPI, dans le fichier /etc/httpd/conf.d/glpi.conf. financières ; Redémarrez Apache pour prendre en compte cette configuration : • Outils : base de connaissances, $ sudo /etc/init.d/httpd restart FAQ, ... ; • : pour maintenir GLPI Vous pouvez maintenant ouvrir la page http://ip_serveur_centos/glpi dans votre Administration (utilisateurs, mises à jour, sauve- navigateur, pour terminer le processus d’installation, durant lequel vous aurez les gardes, journaux) ; écrans suivants : choix de la langue, accord de la licence, effectuer une instal- lation (et non une mise à jour), vérifications des pré-requis/dépendances. Entrez • Configuration : options de configura- ensuite les informations de connexion à la base créée précédemment (utilisateur tion générale de GLPI (options, noti- glpi, mot de passe glpisecret dans notre exemple) et choisissez la base glpi, fications, ...). puis Lancez l’installation. 2.1.1 Les menus Une fois l’installation terminée, vous êtes redirigé vers la page de connexion de Vous êtes connecté par défaut avec GLPI : connectez-vous en administrateur, avec le compte créé par défaut (glpi, un compte super-utilisateur glpi, qui mot de passe glpi). Vous arrivez sur le tableau de bord de ce super-utilisateur a accès à toute la configuration et tous (Fig. 1). Un avertissement vous invite à changer votre mot de passe par défaut, les menus de votre GLPI et affiche son dans vos préférences utilisateur, en haut à droite. tableau de bord qui contient un résumé de toutes ses tâches en cours. Nous allons revenir sur les possibilités de ce compte et les autres comptes dis- ponibles, plus loin. Commençons par prendre connaissance de l’interface. Le menu principal, toujours présent quelle que soit la page, se trouve tout en haut de l’interface et contient les catégories principales de GLPI décrites précédemment. Passez la souris au- dessus d’un des éléments du menu et Figure 1 un sous-menu affichera les différentes sections de cette catégorie. Rendez- vous à la section Administration > Utilisateurs. www.linux-pratique.com Linux Pratique n°74 | 61 DÉCISIONNEL Gestion de parc avec GLPI du contenu du tableau dans différents formats (PDF, CSV, ...). Encore au-dessus, nous arrivons à un dernier bandeau, qui permet d’effectuer Figure 2 concrètement des recherches. Les deux listes déroulantes vous permettent de définir les critères de recherche (élément et correspondance respectivement) ; la zone de texte vous permet de saisir le motif à rechercher. Seuls les éléments correspondant à la recherche apparaî- tront dans le tableau. Pour sortir de l’affi- chage de la recherche et revenir à celui par défaut, cliquez sur la petite croix à On se retrouve sur la page de la sec- recherche. Par défaut, aucun critère de droite du bandeau. Juste à côté, une tion qui liste les utilisateurs (Fig. 2). recherche n’est utilisé et la page affiche icône en forme de coche, avec un petit Quand vous êtes dans une section, les 20 premiers enregistrements de la point rouge, vous permet de sauvegar- deux menus secondaires sont utiles : section. Pour notre section utilisateurs der la recherche sous forme de marque- un menu grisé qui reprend les élé- (Fig. 2), nous avons bien listé tous les page, pour y accéder plus rapidement ments du sous-menu de la catégo- utilisateurs présents dans GLPI (4 par par la suite. Tout à gauche, le signe + rie en cours (ici, pour notre catégorie défaut). Comme décrit précédemment, permet de lier plusieurs éléments de Administration, on retrouve les sec- qu’il s’agisse d’ordinateurs ou de docu- recherche (avec des OU et ET logiques) tions Utilisateurs, Groupes,...), et juste ments, l’interface de GLPI reste la même. et l’icône poubelle est une recherche pré- en-dessous, un fil d’Ariane (Accueil > La page de recherche d’enregistrements enregistrée, qui affiche tous les enregis- Administration > Utilisateurs), qui per- ne déroge pas à la règle et nous allons la trements que vous auriez supprimés met de remonter jusqu’à la page d’ac- décrire pour les utilisateurs. (re-cliquez sur la poubelle pour basculer vers l’affichage normal). cueil. Et comme si ça ne suffisait pas, Une fois n’est pas coutume, nous par- vous avez encore, complètement à tirons de tout en bas : une simple liste 2.2.2 Page « Ajouter » droite du fil d’Ariane, une icône pour vous permet de paramétrer le nombre faire apparaître tous les menus et d’éléments à afficher (qui n’est pas très Avant d’ajouter un enregistrement, il nous sous-menus d’un coup. utile ici, nous n’avons que 4 éléments). reste à voir certains membres des menus Au-dessus, Tout cocher / Tout décocher supérieurs, qui ne pouvaient être présen- 2.2 Zone principale et la liste déroulante attenante, vous per- tés sans avoir introduit les éléments pré- Dans la zone principale, en-dessous des mettent d’effectuer un traitement sur les cédents. Juste à côté du fil d’Ariane, on menus, est affichée une liste des enre- éléments, par lot ou individuellement, trouve 4 boutons. Le dernier, à l’extrême gistrements de la section en cours, ici les en cochant la case à gauche des élé- droite, pour afficher tous les menus, a déjà utilisateurs. Dans une section, différentes ments que vous souhaitez traiter. Une été rencontré. Juste à gauche, le bouton pages sont disponibles pour interagir fois sélectionnés, choisissez dans la en forme de coche, permet d’afficher tous avec les éléments de cette section : page liste déroulante l’action à effectuer (sup- les marque-pages de recherche. Le signe de recherche, d’ajout, d’affichage indivi- pression, modification, ...), qui peut dif- loupe vous permet de retourner à la page duel d’un élément pour consultation ou férer suivant le type d’enregistrements de recherche par défaut. modification. Ces différentes pages et les et peut faire apparaître des listes dérou- Tout à gauche, cliquer sur le gros signe + interactions possibles avec les éléments lantes supplémentaires suivant l’opéra- vous amène sur la page d’ajout d’un élé- qu’elles offrent, sont disponibles et quasi- tion choisie. ment (d’un utilisateur ici). Cela revient à identiques depuis n’importe quelle sec- Au dessus, nous avons donc un tableau cliquer sur le gros bouton central Ajouter tion sélectionnée, quel que soit le type qui liste tous les éléments et leurs utilisateur : un tel bouton d’ajout ne sera d’enregistrement affiché. Nous allons en informations dans différentes colonnes. pas toujours disponible ; l’ajout d’un enre- faire le tour avec la section utilisateurs : En cliquant sur le nom d’un élément, gistrement via le signe + le sera toujours, les différents concepts évoqués vous on arrive sur la fiche individuelle d’un quel que soit le type d’enregistrement à serviront dans toutes les autres pages enregistrement, que nous verrons en ajouter. des autres sections. détail plus tard. Un petit signe +, en Lorsque vous ajoutez un élément, une haut à gauche du tableau, vous permet fenêtre vous permet de spécifier les 2.2.1 Page « Recherche » de sélectionner les colonnes à afficher informations principales, dépendantes Lorsque vous sélectionnez une sec- et leur ordre d’affichage. Au-dessus du du type de l’élément (pour un utilisateur : tion dans le sous-menu d’une catégo- tableau, vous pouvez encore paramé- son nom, son téléphone, son mot de rie (ici Administration > Utilisateurs), la trer le nombre d’éléments à afficher, passe, etc.). Rentrez ces informations (le page affichée par défaut est la page de ainsi qu’exporter l’affichage en cours nom d’utilisateur est la seule information 62 | Linux Pratique n°74 www.linux-pratique.com DÉCISIONNEL obligatoire lors de la création), puis cli- Mais si vous avez une base d’utilisa- sur le nom d’une entité pour accéder à quez sur Ajouter. La page va se rafraî- teurs importante, le mieux est de pro- ses options supplémentaires et modi- chir, les champs seront remis à zéro fiter de l’intégration de GLPI avec un fier son environnement propre. pour ajouter un nouvel enregistrement serveur LDAP ou Active Directory en Une fois une entité créée, il faut se rapidement, un message de confirma- place, depuis le menu Configuration > déconnecter, puis se reconnecter pour tion de création de l’élément apparaît. . Le Authentification > Annuaires LDAP que l’interface de GLPI prenne en Si vous cliquez sur le nom de l’élément menu Configuration > Authentification compte celle-ci. Un élément du menu nouvellement créé, vous êtes redirigé vous permet de paramétrer la syn- devrait faire son apparition indiquant vers sa page d’affichage individuel, qui chronisation lors de l’ajout ou la sup- l’entité en cours (par défaut Entité permet d’avoir accès à des informations pression d’un compte. Vous pouvez racine (arborescence)) pour tout utili- supplémentaires. également utiliser un serveur CAS sateur. Cliquez sur cet élément pour ou mail comme authentification. Vous afficher une fenêtre de dialogue de 2.2.3 Page d’affichage pouvez créer des groupes, dans sélection de l’entité. En double-cliquant , pour gérer individuel d’un élément Administration > Groupes sur une entité, vous êtes dans un mode vos utilisateurs. La configuration de Dans la page d’affichage individuel, où seuls les éléments lui appartenant l’authentification LDAP/AD vous per- quel que soit le type d’enregistrement s’affichent dans GLPI et toute nouvelle met d’ajouter automatiquement vos affiché, mises à part certaines informa- opération se fera dans cette entité. utilisateurs à un groupe existant GLPI, tions qui pourraient différer, l’utilisation Quand vous êtes dans ce mode, seul le en se basant sur leur appartenance à et la navigation sont encore et toujours nom de l’entité apparaît dans le menu. cohérentes dans GLPI. Dans ce type de un groupe LDAP/AD. page, GLPI sépare les différentes infor- Pour une entité contenant des entités filles mations de l’élément dans des onglets, 3.2 Entité (symbolisée par une icône en forme de dossier), vous pouvez également cliquer pour faciliter l’affichage : la majeure Le concept d’entité est très important sur la double-flèche, à droite de son nom partie est occupée par les informations dans GLPI. C’est un moyen de découper dans la boîte de dialogue. Dans ce mode, principales de l’élément, le contenu de votre organisation de manière hiérar- tous les éléments de l’entité en question l’onglet en cours apparaît dessous. Si chique (par site, par structure ou bâti- ET tous les éléments de ses entités filles vous souhaitez afficher toutes les infor- ment). C’est aussi un moyen de gérer seront accessibles. Pour vous signa- mations de l’élément, cliquez sur l’onglet plusieurs clients avec une installation, si ler que vous êtes dans ce mode, le mot Tous, à l’extrême droite. vous êtes par exemple un prestataire de « arborescence » suit le nom de l’entité services. Les entités sont accessibles Au-dessus de la liste des onglets, vous dans le menu. Un utilisateur peut paramé- dans Administration > Entités. La liste pouvez voir différents boutons. Le pre- trer dans quelle entité il est par défaut à la est vide, car aucune entité n’existe par mier sert à masquer les informations connexion, dans ses préférences. principales, pour n’afficher que les infor- défaut. En fait, il existe une entité par mations relatives à l’onglet en cours. défaut, l’entité « racine ». Spéciale, elle La création de nouvelles entités n’est Cliquez sur Liste vous ramène à la page est donc listée à part en cliquant sur le pas une obligation pour utiliser GLPI. de recherche principale. Si vous voulez bouton Entité racine et tout élément créé Comme expliqué plus haut, elle est afficher un autre élément, cliquez sur dans GLPI est enfant de cette entité. nécessaire seulement si vous vou- les petites flèches juste à côté de Liste, Lors de la création, l’information prin- lez compartimenter différentes enti- pour faire défiler les enregistrements cipale est de définir l’entité parente de tés réelles de votre organisation (site, disponibles de la section. l’entité en cours de création. Dans la département, clients), suivant des auto- risations (grâce par exemple aux pro- Pour un utilisateur, seules les infor- figure 3, on voit que j’ai créé trois enti- fils, que nous allons voir ci-après). mations principales doivent vous par- tés, celle nommée « Sous Entité A » ler pour l’instant (même si elles sont étant fille de « Entité A ». Vous pouvez, Définir des entités est critique, peut vides pour nos utilisateurs par défaut). tout comme pour un utilisateur, cliquer gêner l’utilisation de GLPI si elles sont Les informations supplémentaires des onglets vous parleront plus lorsque nous aurons présenté les fondamentaux de Figure 3 GLPI, dans les parties suivantes. 3. Concepts fondamentaux 3.1 Authentification Vous pouvez bien sûr ajouter vos utilisateurs un par un, via la sec- tion Utilisateurs vue précédemment. www.linux-pratique.com Linux Pratique n°74 | 63 DÉCISIONNEL Gestion de parc avec GLPI mal pensées et une modification s’avé- 3.4 Habilitation • post-only a le profil Self-service : c’est rera pénible. Commencez simple, sans un utilisateur de base, qui peut seule- On donne finalement les droits à un uti- entités, vos usages vous révéleront la ment créer des tickets. L’option d’inter- lisateur via une habilitation. Une habi- pertinence de leur utilisation. Je vous face simplifiée est activée sur ce profil. litation, c’est affecter un profil à un invite d’ailleurs à supprimer les entités utilisateur, sur une entité donnée. Cela Donner une habilitation manuellement à que vous auriez pu créer en suivant les s’effectue via la configuration de l’utilisa- un utilisateur, surtout si vous avez plu- exemples précédents, pour suivre tran- teur. Une habilitation peut être récursive sieurs habilitations différentes à donner quillement cet article. ou non. Autrement dit, les droits affec- à de nombreux utilisateurs, risque d’être tés à l’entité sont également effectifs sur rébarbative. Il existe deux mécanismes 3.3 Profils toutes ses sous-entités. Impossible par pour donner une habilitation automati- Un profil rassemble un ensemble d’auto- contre de définir des droits depuis une quement à un utilisateur. La première, via une règle (ou plusieurs règles si vous risations. Attribué ensuite à un utilisateur, entité fille, vers une entité parente. il permet de définir les fonctionnalités de avez plusieurs habilitations à donner). Vous pouvez donner une habilitation GLPI que l’utilisateur peut utiliser : gérer Nous allons revenir sur les règles dans manuellement, en vous rendant sur la la configuration, ajouter des équipe- la partie suivante. La seconde méthode, page d’enregistrement individuel d’un ments, administrer les utilisateurs, etc. À via le profil par défaut. Si vous allez sur utilisateur, onglet Habilitations, comme la page de configuration du profil l’origine au nombre de 4, les dernières Self- c’est le cas pour les 4 utilisateurs par service, vous verrez que l’option Profil versions de GLPI mettent à disposi- défaut. L’utilisateur glpi (avec lequel par défaut est activée à oui pour ce profil. tion 7 profils pré-configurés, répondant vous êtes normalement connecté) a pour Si un utilisateur ne s’est vu attribué aucun aux profils utilisateurs les plus courants profil Super-Admin et peut donc tout faire profil manuellement, ou via une règle, il dans une organisation, visibles dans dans l’application : administration de la lui est attribué le profil Self-Service par . La configura- Administration > Profils configuration, gestion des matériels, des défaut. Ça tombe bien, c’est le profil le tion d’un profil contient beaucoup d’op- tickets... Les trois autres utilisateurs par plus restrictif qui existe et que vous attri- tions, correspondant aux droits relatifs défaut et leur profil respectif sont : buerez à la majorité de vos usagers ! aux différentes fonctionnalités de GLPI (Fig. 4). Il existe également une option • tech a le profil Technician : il peut gérer 3.5 Les règles pour ne présenter qu’une interface sim- beaucoup des fonctionnalités de GLPI, Pour gérer automatiquement certains plifiée à l’utilisateur, pour qu’il n’ait accès mais n’a pas accès à sa configuration ; éléments de GLPI (les affecter automa- qu’à un jeu minimum de fonctionnalités • normal a le profil Observer : des- tiquement à une entité, ...), vous pouvez de GLPI. Vous pouvez modifier les profils tiné aux équipes de management, il créer des règles. Elles seront évaluées disponibles par défaut, même si je vous a accès en lecture à la majorité des à la connexion d’un utilisateur ou lors conseille plutôt de créer vos nouveaux informations de GLPI et peut créer de l’ajout d’un matériel, suivant la règle. profils spécifiques. des tickets ; Plusieurs types de règles existent, nous allons voir celles affectant les utilisateurs. Allez dans Administration > Règles > Règles d’affectation d’habilitations à un utilisateur. Habilitations au pluriel, Figure 4 car toutes les règles d’habilitations sont évaluées et toutes celles qui lui correspondent lui sont affectées. Vous pouvez donc avoir une règle qui donne l’habilitation technicien dans l’entité racine et une autre habilitation Super- Admin dans une sous-entité. Vous pouvez commencer par cliquer sur le bouton pour Tester le moteur de Règles et entrer un nom d’utilisateur au hasard dans le champ UserID, puis vali- dez : une seule règle d’habilitation est validée. C’est la règle Root, qui existe par défaut. Fermez la fenêtre de test et cliquez sur la règle Root pour voir son descriptif. Pour paramétrer une règle, vous avez 3 champs : son descriptif général, ses cri- tères et ses actions. Le descriptif permet de donner un nom à la règle et de l’activer. 64 | Linux Pratique n°74 www.linux-pratique.com DÉCISIONNEL Les critères permettent de définir des critères pour choisir sur quel(s) élément(s) (ici quel utilisateur), appli- quer la règle. Pour la règle Root, on sélectionne tout utilisateur avec une expression régulière sur l’UserID et le mail grâce à trois critères (on définit comment combiner les critères entre Figure 5 eux, via l’option Opérateur logique dans la partie de descriptif général). Pour les éléments sélectionnés par les important de matériels similaires, le mieux Tout comme pour un équipement créé, critères, on définit les actions à effec- est de créer un gabarit contenant les infor- un gabarit est modifiable et vous avez tuer : par exemple, ne pas importer les mations communes et de l’utiliser pour accès aux informations plus avancées comptes correspondant du LDAP, activer ajouter plus rapidement les matériels en dans la page du gabarit (cliquez sur le + ou non le compte, attribuer une entité, un question. Par exemple, imaginons que Gérer Gabarits, puis cliquez sur le gaba- profil et si ce dernier est récursif. Pour vous ayez plusieurs ordinateurs équiva- rit à modifier). notre règle Root, on assigne simplement lents à installer. Allez dans Inventaire > l’entité racine à tout utilisateur. Ajouter les informations avancées via Ordinateurs, cliquez sur le gros bouton + un gabarit, que ce soit pour un ou plu- Vous pouvez modifier cette règle par avec un drapeau rouge en fond Gérer les sieurs équipement(s), est pénible (ima- défaut, mais je vous invite à la lais- gabarits, puis Ajouter un gabarit. Une ginez pour un seul équipement, tel qu’un ser telle quelle et à créer vos propres page liste les informations principales, ordinateur, rentrer à la main tous les logi- règles. Vous pouvez par exemple créer équivalentes bien sûr à celles propo- ciels et leur version, un par un...). Il existe une règle avec un critère sur le groupe sées lors de l’ajout d’un ordinateur, plus des logiciels pour remonter de telles LDAP technicien et affecter à tous un champ pour nommer votre gabarit informations, grâce à un agent exécuté ses membres le profil tech sur l’entité (Fig. 5). Donnez-lui un nom, « Accueil » sur les ordinateurs à recenser. Mais, si racine. Lorsqu’une habilitation est don- par exemple. Nos postes à ajouter vont vous êtes dans une logique de gestion née à un utilisateur via une règle, dans avoir le même responsable technique, de parc de bout en bout, la création du l’onglet Habilitations de l’utilisateur, l’utilisateur tech : sélectionnez-le dans la périphérique en lui-même devrait se faire un (D) vient préciser que cette habili- liste déroulante correspondante. Ils vont de la manière décrite précédemment : le tation est donnée dynamiquement à la également avoir un nom équivalent, de la cycle de vie d’un matériel ne débute pas connexion à l’utilisateur, par une règle. forme « Accueil-PosteXX ». GLPI fournit à la remontée d’un agent externe, dont un système de remplissage automatique le rôle n’est pas de créer l’équipement 4. Fonctionnalités de n’importe quel champ, à l’aide d’une dans GLPI, mais de compléter et mettre chaîne de formatage à écrire entre des à jour ses informations. L’existence de <> 4.1 Inventaire balises . Vous pourrez trouver sur la l’équipement commence dès son achat, documentation officielle les différents achat qui est suivi de la création du maté- Ce menu permet d’ajouter et d’accéder caractères spéciaux utilisables dans une riel dans GLPI. GLPI se chargera de lier aux différents matériels de GLPI. Pour telle chaîne [GABARITS], comme pour les informations retournées par l’agent ajouter un matériel, allez dans son sous- générer une date automatiquement. Dans externe installé sur le matériel une fois menu, par exemple Ordinateurs et cliquez notre exemple, nous utiliserons le carac- en production, au matériel déjà existant sur le gros bouton +. Quel que soit le type # tère spécial d’incrémentation , pour défi- dans sa base. Dans un prochain article, de matériel (cartouches et consommables www.linux-pratique.com Linux Pratique n°74 | 65 DÉCISIONNEL Gestion de parc avec GLPI d’objet de GLPI : entité, matériel, ... d’inventaire principale du matériel en de questions/réponses, pour les équipes Une fois téléversés sur GLPI, ils sont question. Sélectionnez ensuite Modifier techniques. Ces contenus peuvent êtres stockés dans le répertoire files de dans la liste déroulante. Une nouvelle regroupés dans une catégorie et vous votre installation, à créer au besoin, liste apparaît, sélectionnez Budget. Dans pouvez les rendre lisibles pour des avec les droits adéquats (dans notre la dernière liste apparue, sélectionnez le utilisateurs au profil non-technique, cas d’utilisation, dans le dossier budget désiré, puis Valider. en ajoutant un élément de la base de /var/lib/glpi/files qui existe et connaissances à la FAQ. Que votre Documents, contrats, budgets, ... ont tous possède les bons droits). document soit juste dans la base de effet dans une entité. Une option vous per- connaissances, ou que vous l’ayez Un fournisseur vous permet de rensei- met éventuellement de définir leur portée ajouté à la FAQ, il ne sera visible que gner une entreprise, que vous liez à un comme effective ou non dans les entités de son créateur tant qu’aucune cible ne matériel de l’inventaire. Un contact est une filles de leur entité de création. Un sys- lui aura été affectée. personne physique, externe à vos utilisa- tème de notifications vous permet d’être teurs, que l’on lie à un fournisseur. Dans averti par mail avant la date d’expiration 4.4 Assistance Contrats, vous créez un contrat avec ses de la garantie du matériel. Ceci est confi- Le menu offre toutes les détails : date, coût, heure d’intervention, gurable dans le menu Configuration > Assistance fonctionnalités nécessaires à un service ainsi que l’alerte par e-mail de la recon- Notifications. duction. Vous pouvez uploader un contrat de helpdesk : système de tickets, cycle au format numérique (ce qui créera auto- 4.3 Outils de vie, statistiques,... Depuis les ver- matiquement un enregistrement de type sions récentes, GLPI est conforme ITIL Ce menu contient la gestion des notes, la « Document » dans GLPI), ou lier un v1 : gestion des accords de niveau de base de connaissances et FAQ, les réser- contrat à un document GLPI déjà existant. service (SLA), enquête de satisfaction, vations et les rapports. Dans le sous-menu Vous liez ensuite un contrat à un fournis- gestion d’incidents, règles métier, notifi- Réservations se trouvent les matériels dis- seur, à un matériel, ou aux deux. cations par mail. Comme pour tous les ponibles au prêt (si l’option a été activée autres composants de GLPI, vous n’êtes Créer un budget, c’est commencer dans leur page de configuration, onglet pas obligé d’utiliser toutes les fonction- par définir un montant et une date de Réservations). Le sous-menu Rapports nalités du menu Assistance et encore début et de fin d’activité du budget. permet d’afficher un résumé sur diffé- moins de fournir un helpdesk répondant Vous pouvez créer des gabarits éga- rentes informations concernant le matériel : aux bonnes pratiques ITIL. lement, avec des dates prédéfinies par prêts, informations financières, ... Très utile C’est dans le menu que vous pou- exemple, pour gagner du temps. Une pour les équipes de management, qui ont Tickets vez créer et gérer des tickets, en définis- fois un budget créé, il faut y ajouter des besoin d’une vision synthétique du maté- sant leur type : demande (« Je veux un équipements, si les informations finan- riel du parc. cières et administratives sont activées nouvel écran ») ou incident (« Mon poste Une note est un simple texte à caractère pour le matériel. Pour activer et/ou ren- a planté ») (Fig. 6). Pour créer un ticket, informatif. Privée à sa création, elle est ren- seigner ces informations, soit vous le vos utilisateurs ont plusieurs choix. Ils peu- due publique à certains utilisateurs via une faites individuellement par équipement, vent le faire par l’interface de GLPI s’ils ont cible : entité, groupe, profil ou utilisateur. dans l’onglet Gestion de l’équipement, un profil avec les droits d’accès au sys- soit vous le faites par lot, en sélection- La base de connaissances sert à créer tème de tickets. Le profil par défaut Self- nant les matériels désirés dans la liste des contenus plus avancés, sous forme service est parfait pour cet usage, surtout qu’il n’offre que l’interface simplifiée aux utilisateurs, pour qu’ils ne soient pas per- turbés et n’aient pas accès aux autres fonctionnalités de GLPI. À la page http:// ip_du_serveur_glpi/glpi/front/helpdesk. php, un ticket peut être également créé de manière anonyme, avec seulement un minimum d’informations, sans avoir à se connecter et entrer dans l’interface de GLPI. Pour simplifier encore l’utilisa- tion du système de tickets, GLPI peut être configuré pour créer un ticket à la récep- tion d’un mail sur une boîte mail spécia- lement prévue à cet effet (à paramétrer dans Configuration > Collecteurs). Un utilisateur n’aura même pas besoin de se Figure 6 connecter à GLPI et de savoir l’utiliser pour créer un ticket ! Comme autre option, un ticket peut être créé par un technicien suite à une demande en direct d’un utilisateur. 66 | Linux Pratique n°74 www.linux-pratique.com DÉCISIONNEL Un ticket peut être lié à un document et surtout à un maté- des opérations lors de l’ajout de logiciels ou de tickets. Par riel. Les tickets sont affichés aux personnes techniques en exemple, changer la priorité à très haute si votre Big Boss charge de leur gestion dans le menu Tickets bien sûr, mais est son créateur ;-). également dans le tableau de bord affiché par défaut à la Le sous-menu Dictionnaires permet de gérer un moteur de connexion. Les tickets sont classés selon leur priorité, cal- règles différent de celui du sous-menu Règles. Toutes les règles culée suivant leur urgence et leur impact : l’utilisateur définit de dictionnaires ont pour but de modifier automatiquement les l’urgence à la création, un personnel technique évalue l’im- champs des informations des matériels et des logiciels, voire pact, de très basse à très haute dans les deux cas. pour certains dictionnaires, d’empêcher l’ajout. Ces règles ont Un ticket a un cycle de vie, symbolisé par son statut, comme surtout un intérêt dans le cas de l’utilisation d’un agent externe, préconisé par ITIL (Information Technology Infrastructure lors de l’importation automatique des informations. Library). Il peut être nouveau, car nouvellement créé, attri- Notez que seulement dans le cas des règles d’habilitations bué par un technicien à lui-même ou un autre technicien, utilisateurs, les règles sont toutes évaluées. Pour les autres résolu par le technicien ou encore clos par l’utilisateur. À la types de règles, l’évaluation des règles s’arrête dès qu’une clôture, le technicien peut envoyer une enquête de satisfac- règle est rencontrée dont les critères correspondent au tic- tion à l’utilisateur concernant le traitement du ticket. ket, logiciel ou dictionnaire. Il vous faut donc créer et ordon- Tout au long de ce cycle de vie, plusieurs interactions sont pos- ner vos règles correctement pour ces types de règles. sibles avec le ticket par les techniciens et l’utilisateur. Ils peuvent créer un suivi pour indiquer l’évolution de la demande ou de l’inci- Le sous-menu Maintenance contient les opérations de main- dent. Le technicien peut créer une tâche à effectuer et la quanti- tenance de votre installation de GLPI : sauvegarde des don- fier en temps, pour garder une trace du temps passé sur le ticket, nées au format SQL ou XML, recherche et installation de ainsi que le coût horaire pour les prestataires de services. Dans mise à jour (dans notre cas, nous avons installé GLPI via le cas d’une demande d’un utilisateur (par exemple l’achat d’un yum, les mises à jour s’effectueront via celui-ci). Pour ce qui nouveau matériel), un technicien peut créer une demande de est des sauvegardes, une seule sauvegarde au format XML validation par une personne décisionnaire. Un onglet Solutions peut être conservée, alors que plusieurs sauvegardes SQL, permet d’indiquer la solution à l’utilisateur. Cette solution peut horodatées, sont possibles (Fig. 7). La restauration supprime se servir d’une entrée de la base de connaissances, ou être toute modification survenue après la sauvegarde restaurée. transformée en une telle entrée, pour une résolution future plus Réfléchissez bien avant une restauration ! rapide. Si l’utilisateur accepte la solution, le ticket est clos. Tous ces fichiers sont stockés dans le répertoire _dump de La notion de Problèmes dans GLPI suit la définition d’ITIL. Pour votre installation GLPI : cela, revenons précisément à celle d’un incident. Un incident est un événement qui arrive sur votre système d’information et $ sudo ls /var/lib/glpi/files/_dumps/ backup.xml glpi-0.83.4-2012-08-13-15-25.sql glpi-0.83.4-2012- qui dégrade sa qualité de service auprès de vos utilisateurs (PC 08-13-15-32.sql glpi-0.83.4-2012-08-13-15-41.sql inutilisable, site web en panne...). Une solution à cet incident, va être une tâche à accomplir pour rétablir au plus vite la qualité Attention qu’aucune personne mal intentionnée n’ait accès de service de votre système d’information (redémarrer le PC, le à ce dossier ! Notez également que les sauvegardes pré- processus du serveur web). Le problème, quant à lui, va être la cédentes s’exécutent manuellement et ne s’effectuent qu’au cause qui a provoqué l’incident. Créer une entrée de type pro- niveau de la base de données. Tous les documents uploadés blème dans GLPI, va permettre de résoudre celui-ci pour ne plus sont à sauvegarder par vos soins. Voici un script, plus que avoir d’incident. Un problème reprend donc les fondamentaux rudimentaire, pour sauvegarder vos documents et les don- d’un ticket, sauf qu’il n’est accessible qu’aux équipes techniques nées de la base GLPI : et qu’il est rattaché à un ou plusieurs ticket(s) d’incident. Le menu Assistance propose encore un menu de Planning # !/bin/bash pour afficher les tâches qui ont été planifiées sur un ticket, ou DATE=`date +%Y-%m-%d` les notes rendues publiques et ajoutées au planning (mise à mysqldump --databases glpi -p’montmotdepasse’ > /tmp/glpi-dump.sql jour du serveur web, ...). Statistiques permet d’avoir une vue tar cjf /backups/GLPI-${DATE}.tar.bz2 /tmp/glpi-dump.sql /var/lib/glpi/files rm -f /tmp/glpi-dump.sql synthétique des différents tickets créés. Tickets récurrents permet aux équipes techniques de créer des tickets à l’avance Sauvegardez-le dans le dossier /etc/cron.daily pour pour des tâches récurrentes (sauvegarde, mise à jour,...). qu’il soit exécuté automatiquement tous les soirs et donnez uniquement à root le droit de l’exécuter : 5. Menu Configuration $ sudo chmod u+rwx,go-rwx /etc/cron.daily/backup-glpi Nous avons déjà abordé les utilisateurs, les groupes, les entités, les profils et les règles en début d’article. Les infor- Vous pouvez aussi configurer une réplication de votre mations sur les fonctionnalités, acquises depuis, devraient base MySQL, dans le menu Configuration > Générales > vous permettre de les configurer plus en détails dans leurs Informations Système. Le dernier sous-menu Administration > onglets d’informations avancées. Des règles peuvent Journaux permet d’afficher un journal de toutes les transac- également être créées pour effectuer automatiquement tions effectuées dans GLPI, pour historique en cas de souci. www.linux-pratique.com Linux Pratique n°74 | 67 DÉCISIONNEL Gestion de parc avec GLPI gérer les commandes de matériels dans GLPI. Commencez 6. Menu Administration par installer et décompresser l’archive du greffon : Les intitulés correspondent aux valeurs qui sont sélectionnables dans $ wget -O /tmp/glpi-order-1.6.0.tar.gz https://forge.indepnet.net/ les listes déroulantes des informa- attachments/download/1101/glpi-order-1.6.0.tar.gz tions des différents enregistrements $ sudo tar xzf /tmp/glpi-order-1.6.0.tar.gz -C /usr/share/glpi/plugins/ qui peuvent être créés dans GLPI : $ sudo chown -R apache /usr/share/glpi/plugins/order/ équipements, logiciels, tickets... Vous pouvez par exemple Le greffon devrait être visible dans Configuration > Plugins. créer des intitulés pour les Statuts de Matériels, correspon- Reste à cliquer sur Installer, ce qui pour un plugin revient dant à vos statuts internes de gestion de matériel. Il seront généralement à ajouter automatiquement les champs néces- ensuite disponibles dans le champ Statut du matériel (Fig. 8). saires dans les tables de la base de données de GLPI, voire Le sous-menu Composants est similaire aux intitulés, sauf créer une table dédiée au greffon. Vous pouvez ensuite qu’il n’a pour but que de remplir les listes de composants Activer le greffon. À l’activation d’un plugin, au minimum deux dans l’onglet du même nom des matériels. Pour éviter les nouvelles pages sont disponibles dans l’interface de GLPI. doublons, GLPI offre un système de vérification de l’unicité Une page d’administration générale du plugin, toujours dans des champs lors de l’insertion d’un objet dans la base, dans Configuration > Plugins, en cliquant sur le nom du greffon le menu Administration > Contrôles. L’onglet Doublons per- (ici, cela permet de configurer la TVA, ou le cycle de vie d’une met de lister les doublons qui ont été détectés. commande). Et la deuxième page apparaît dans un sous- Actions automatiques contient l’ensemble des tâches que GLPI menu éponyme, de la section Outils du menu principal, pour peut exécuter automatiquement. Ces tâches sont pré-établies : utiliser effectivement le plugin (ici, créer des commandes). alerte sur les consommables, nettoyage des sessions utilisa- De nombreux plugins sont disponibles. Voici une liste de cron teurs. Pour être exécutées, un travail général doit être plugins intéressants : pdf, behaviors, order management, créé (il existe par défaut avec notre installation, dans /etc/ appliances inventory, webapplications inventory, human res- cron.d/glpi). Vous pouvez activer ou désactiver ces diffé- sources management, reports, manufacturers web imports, rences tâches et leur fréquence via l’interface de GLPI. webservices, monitoring, datainject. Le sous-menu Notifications permet de configurer l’envoi d’e- mails. Vous devrez bien sûr paramétrer un compte SMTP pour l’envoi d’e-mails dans Configuration des suivis par 7. Conclusion courriels. Un sous-menu existe, également appelé notifica- GLPI offre une pléthore de fonctionnalités, ce qui peut être tions, pour définir les cas où un e-mail est envoyé : pour les intimidant. Vous n’êtes pas obligé de toutes les utiliser, ou tickets, les alertes, les réservations. Un système de modèles pas tout de suite, le temps de l’apprivoiser. Intégré à votre existe pour formater l’e-mail suivant le mail à envoyer. système d’information, il est un outil puissant pour centraliser Dans le sous-menu Liens externes, vous pouvez créer des un maximum des tâches de gestion. liens pour les ajouter sur la page d’un matériel. La défini- Dans un prochain article, nous verrons comment coupler tion d’un lien peut contenir des mots-clés [LIENS], pour être GLPI avec OCS Inventory et FusionDirectory, pour l’impor- complétée automatiquement par GLPI dans la fiche du maté- tation d’informations de vos ordinateurs, la découverte de riel auquel il est affecté. Par exemple, le lien http://[IP], matériels réseau et le déploiement d’applications. créera un lien avec l’IP du matériel affiché, pour se rendre directement et rapidement depuis GLPI sur sa page web, s’il héberge un serveur web. Références [COLLET] http://blog.famillecollet.com/ 6.1 Plugins [TUTORIEL] GLPI vient avec de nombreuses fonctionnalités par défaut. http://blog.famillecollet.com/pages/OCS-GLPI Un mécanisme de greffons vous permet d’étendre GLPI avec des fonctionnalités supplémentaires. Vous pouvez créer [DEPOTS] http://blog.famillecollet.com/pages/Config vos plugins [PLUGINSDEV], ou plus simplement installer [GABARITS] un plugin développé par un tiers, à télécharger depuis le http://www.glpi-project.org/wiki/doku.php?id=fr:manuel: catalogue [PLUGINS]. admin:2_inventaire#gestion_des_gabarits Un plugin est une archive de fichiers PHP, à décompresser [LIENS] dans le répertoire plugins de votre installation. La plupart http://www.glpi-project.org/wiki/doku.php?id=fr:manuel: des plugins sont développés par des contributeurs à GLPI. admin:8_configuration#liens_externes_protocoles Surveillez toutefois leur provenance avant leur installation et si le plugin est compatible avec votre version de GLPI ! Je [PLUGINSDEV] vous conseille également de faire une sauvegarde de GLPI https://forge.indepnet.net/projects/show/plugins avant l’installation ou la mise à jour d’un plugin. Nous allons tester la procédure avec le greffon order, qui permet de [PLUGINS] http://plugins.glpi-project.org/ 68 | Linux Pratique n°74 www.linux-pratique.com Complétez votre collection des anciens numérosDÉCISIONNEL de... LINUX PRATIQUE LINUX PRATIQUE HORS-SÉRIE N° 67 N° 72 N° 73 HS N° 19 HS N° 24 du... au du numéro... ...au numéro Retrouvez tous les anciens numéros ainsi que nos offres spéciales sur notre site : http://www.ed-diamond.com Les 4 façons de commander ! Vous recherchez un numéro Par courrier Par téléphone En nous renvoyant ce bon de Entre 9h-12h & 14h-18h au 03 67 10 00 20 spécifique ? commande. (paiement C.B.) Par le Web Par fax Rendez-vous sur www.ed-diamond.com pour Sur notre site : Au 03 67 10 00 21 www.ed-diamond.com. (C.B. et/ou bon de commande administratif) consulter le sommaire détaillé de chaque magazine ! Bon de commande Linux Pratique Bon de commande Linux Pratique Hors-série Réf. Désignation Prix / Nos Réf. Désignation Prix / Nos LP N°67 Contrôlez vos machine à distance grâce à la technologie NX 5,95 € LPHS N°19 Apprenez à construire un vrai site web pour 40 €/an... 6,50 € LP N°68 FREENAS 8 - Compatible Windows, Mac OS et Linux et Multi-protocole 5,95 € LPHS N°20 Passez à la ligne de commandes ! 6,50 € LP N°69 Comment survivre à un crash système (sans paniquer) ? 5,95 € LPHS N°21 Partage de fichiers Windows et Linux 6,50 € LP N°70 Votre système d'information est menacé ? OpenVAS 5,95 € LPHS N°22 Tout pour optimiser votre système ! 6,50 € LP N°71 Envie d'écouter votre musique depuis n'importe où ? Utilisez AMPACHE 6,50 € LP N°72 Virtualisation et sauvegarde : Mise en place d'un serveur multifonction 6,50 € LPHS N°23 La programmation avec Python 6,50 € LP N°73 Déployez des clients légers avec LTSP ! 6,50 € LPHS N°24 Initiation à Javascript 6,50 € Bon de commande à remplir (ou photocopier) et à retourner aux Éditions Diamond - Linux Pratique - BP 20142 - 67603 Sélestat Cedex Référence Prix / No Qté Total Voici mes coordonnées postales : Nom : Exemple : LP N°71 6,50 € 1 6,50 € Prénom : Adresse : Code Postal : Ville : Téléphone : e-mail : Total : Je choisis de régler par : Frais de port France Métro. : +3,9 € Chèque bancaire ou postal à l’ordre des Éditions Diamond Carte bancaire n° Frais de port HORS France Métro. : +6 € Expire le : Total : Cryptogramme visuel : Je souhaite recevoir des infos des Edtions Diamond Date et signature obligatoire Je souhaite recevoir des infos des partenaires des Editions Diamond Retrouvez les sommaires et commandez tous nos magazines sur notre site : http://www.ed-diamond.comwww.linux-pratique.com Linux Pratique n°74 | 69 ComplétezDÉCISIONNEL votre collection de au tarif promotionnel de 2 €ttc par numéro* ! Les 4 façons de commander ! Vous recherchez un numéro Par courrier Par téléphone En nous renvoyant ce bon de Entre 9h-12h & 14h-18h au 03 67 10 00 20 spécifique ? commande. (paiement C.B.) Par le Web Par fax Rendez-vous sur www.ed-diamond.com pour Sur notre site : Au 03 67 10 00 21 www.ed-diamond.com. (C.B. et/ou bon de commande administratif) consulter le sommaire détaillé de chaque magazine ! Choisissez vos numéros dans le tableau ci-dessous : Linux Pratique N°21 KPovModeler N°46 Ubuntu Google Enlightement - La révolution gOS N°22 eDonkey, eMule, KaZaA - Partagez vos fichiers N°47 OpenOffice.org 2.4 - Plus rapide et tellement plus pratique ! N°27 Maîtrisez Firefox N°49 Ne réinstallez plus vos systèmes Linux et Vista/XP N°28 Chattez librement ! N°50 Comparatif exclusif ! 3 ULTRA-PORTABLES avec GNU/Linux PRÉ-INSTALLÉ N°29 Créez votre WEBLOG N°51 VOTRE MEDIA CENTER en toute simplicité grâce à ELISA ! N°30 Quoi de neuf côté ... VIDÉO ? N°52 KDE 4.2 - Toutes les nouvelles fonctionnalités passées au crible ! N°31 Tout sur Gnome 2.12 N°53 Envie d'obtenir plus de votre GNU/Linux ? - Essayez Debian 5.0 ! N°32 OpenOffice 2.0 N°54 Protégez vos disques des regards indiscrets ! N°33 Firefox 1.5 - Le dernier né de la mozilla corporation N°55 Synchronisez vos fichiers pour faciliter la cohabitation Linux/Windows/Mac ! N°34 Les nouveautés de Thunderbird 1.5 - Un concurrent sérieux pour Outlook N°56 GNOME 2.28, 2.30... 3.0 ! - En route pour une révolution du bureau N°35 Quel avenir pour les bureaux Linux N°57 VirtualBox - La solution pour utiliser simultanément plusieurs Linux et Windows ! N°36 ClamAV : Configurez simplement votre anti-virus N°58 Partagez facilement vos fichiers entre toutes vos machines Linux ou Windows N°37 XFCE 4.4 - Votre prochain bureau Linux ? N°59 Sauvez vos fichiers et restaurez votre système ! N°38 Mandriva passe à la 3D N°60 5 Gestionnaires de photos au banc d'essai ! N°39 Les nouvelles fonctionnalités de Firefox 2.0 - Le meilleur navigateur web ? N°61 Virtualisation avec KVM/QEMU N°40 Knoppix 5.11 - Enfin une solution de lecture/écriture sur disques Xp et Vista N°62 Diffusez la TV dans toute la maison ! N°41 Téléchargement peer to peer facile avec Bittorrent & KDE N°63 Composez votre bureau avec OPENBOX ! N°42 FEDORA 7 - Enfin un bureau 3D à la hauteur de vos attentes N°64 Optez pour la virtualisation avec le nouveau Virtualbox 4 N°43 KDE, GNOME, ENLIGHTEMENT - Quel sera votre prochain environnement de bureau ? N°65 Développez vos applications ANDROID avec le SDK N°44 Firefox 3.0 N°66 Découvrez TRIXBOX - un PBX "clés en main" chez vous ou dans votre entreprise N°45 KDE 4.0 Linux Pratique Hors-Série Hors-Série N°02 Testez des Logiciels Libres sans rien installer ! Hors-Série N°14 Maîtrisez la retouche d'image avec GIMP 2.4 - Vol.2 Hors-Série N°03 KDE 3.5 Hors-Série N°15 Dossier : Ununtu HARDY HERON 8.04 Hors-Série N°06 Changez de système d'exploitation : Découvrez Ubuntu Dapper Drake 6.06 Hors-Série N°16 35 Commandes pour tirer le meilleur de votre système GNU/Linux Hors-Série N°07 Le dessin vectoriel Libre par la pratique ! Hors-Série N°17 Créez votre site / blog avec Wordpress Hors-Série N°08 GNU/Linux et les Logiciels Libres en 80 questions - Vol.1 Hors-Série N°18 9 Cas où la ligne de commandes est indispensable Hors-Série N°09 Découvrez les principales fonctionnalités d'OpenOffice.org 2.0 Hors-Série N°12 Découvre la toute dernière version d'ubuntu : Ubuntu 7.10 GUTSY GIBBON Numéros Linux Pratique épuisés : * dans la limite des stocks disponibles. N°1 à N°20, N°23 à N°26, N°48 / HS-N°1, HS-N°4, HS-N°5 HS-N°10, HS-N°11 HS-N°13 Bon de commande à remplir (ou photocopier) et à retourner aux Éditions Diamond - GNU/Linux Magazine - BP 20142 - 67603 Sélestat Cedex Quantité Prix / No Total Voici mes coordonnées postales : Nom : x 2,00 € = Frais de port France Métro. : + 3,90 € Prénom : Frais de port HORS France Métro. : NOUS CONSULTER Adresse : Total : Je choisis de régler par : Chèque bancaire ou postal à l’ordre des Éditions Diamond Code Postal : Carte bancaire n° Expire le : Ville : Cryptogramme visuel : Téléphone : Date et signature obligatoire e-mail : Je souhaite recevoir des infos des Édtions Diamond 70 | Linux Pratique n°74 Je souhaite recevoir des infos des partenaires www.linux-pratique.comdes Éditions Diamond DÉCISIONNEL Le dessin assisté par ordinateur sous Linux avec LibreCAD et FreeCAD Jacques Haas En architecture ou en mécanique, les logiciels de dessin assisté par ordinateur en 2D et en 3D sont indispensables. À côté des poids lourds du secteur comme CATIA, AutoCAD ou SolidWorks, il existe des alternatives pour Linux. Petit tour d’horizon de quelques fonctionnalités de LibreCAD pour la 2D et de FreeCAD pour la 3D. 1. Introduction Le dessin assisté par ordinateur (ou DAO) est présent dans de nom- breuses branches de l’ingénierie, de l’électricité à la mécanique, en passant par l’architecture. La plupart des ingé- nieurs en mécanique se sont formés sur AutoCAD ou SolidWorks, mais le prix de ces solutions les rend inabor- dables pour un usage personnel. Les projets libres alternatifs aux solu- tions propriétaires voient le jour dès le début des années 2000, avec une ver- sion communautaire de QCad, logiciel Fig. 1 : Zone de dessin, calques, palette d’outils... Les habitués du DAO sont en de dessin en deux dimensions. Cette terrain connu avec LibreCAD. dernière donnera naissance à CADuntu, qui changera de nom pour donner 2.1 Les palettes cliquant dans Affichage > Barre d’outils > LibreCAD. Côté 3D, FreeCAD est un Pen Selection, qui affiche le panneau La barre des palettes comporte des bou- logiciel basé sur le noyau OpenCasCade de configuration idoine. On peut aussi tons pour chaque famille d’outils (droites, de Matra Datavision, qui éditait le logiciel masquer des calques ou les verrouiller. Euclid, entreprise rachetée par Dassault cercles, polygones...). La sélection d’un Systèmes, éditeur de CATIA. outil ouvre une nouvelle palette. En fonc- 2.3 La ligne de tion de l’outil, une flèche permet de reve- nir à la palette principale et une autre commandes 2. La 2D avec permet de valider les différentes étapes Vous pouvez tracer des formes en cli- de réalisation d’un objet (création d’un quant et en glissant le pointeur de la LibreCAD bloc par exemple). La touche [Esc] per- souris aux endroits désirés, mais aussi L’interface de LibreCAD est comparable met d’annuler la sélection d’un outil. spécifier ces points directement au cla- à celle des autres logiciels de DAO. vier. Quand vous sélectionnez un outil Le logiciel propose les fonctionnali- 2.2 Les calques (par exemple Cercle avec centre et tés de base du DAO (formes simples, Le dessin dans LibreCAD s’effectue sur rayon), des instructions apparaissent au- hachures, cotes, insertion de textes ou des calques, à la manière du travail sur dessus du champ de saisie de la ligne d’images). La fenêtre principale (Fig. 1) une image dans les logiciels de type de commandes. Vous pouvez y entrer les se compose d’une zone de dessin, de GIMP et Photoshop. Il est ainsi pos- coordonnées voulues (virgule écrite avec palettes, d’une fenêtre des calques et sible de définir la couleur, l’épaisseur et un point, coordonnées séparées par une d’un champ de ligne de commandes. le type de trait pour chaque calque en virgule), puis valider avec [Entrée]. www.linux-pratique.com Linux Pratique n°74 | 71 DÉCISIONNEL Le dessin assisté par ordinateur sous Linux avec LibreCAD et FreeCAD Formats d’importation/exportation des fichiers LibreCAD et FreeCAD peuvent tous deux manipuler les fichiers au format DXF, développé par Autodesk pour l’interopérabilité d’AutoCAD avec les autres logiciels de DAO. En dehors de ce format, LibreCAD gère notamment des formats généralistes (JPEG, PNG, TIF) ou orientés icônes (XPM, XBM, PPM, ICO). Quant à FreeCAD, il peut travailler avec un grand nombre de formats standards (STEP, IGES, OBJ, DXF, SVG, STL, DAE, IFC, OFF), ainsi qu’avec son format natif Fcstd. Fig. 2 : L’explorateur de bibliothèques donne accès aux 3. La 3D avec collections de pièces installées dans le répertoire dédié de LibreCAD. FreeCAD Bien que FreeCAD puisse servir pour 2.4 Les blocs et LibreCAD gère aussi les biblio- le dessin en deux dimensions, ce n’est modèles thèques de pièces déjà dessinées, pas son axe de développement prin- ou modèles (Fig. 2). Elles sont acces- cipal. Son atout majeur est la ges- Si vous utilisez souvent des sibles via le menu Affichage > Barre tion des dessins en 3D, au travers de ensembles de formes, vous pouvez d’outils > Explorateur de Librairies. modules adaptés selon les corps de les enregistrer tels quels sous forme Par défaut, le logiciel ne contient que métier et les tâches à accomplir. de blocs. Pour cela, cliquez sur l’ou- quelques modèles de démonstration. til Créer Bloc de la palette principale. Une bibliothèque plus conséquente Tout comme LibreCAD, FreeCAD Sélectionnez les composants de votre se trouve en libre téléchargement sur se présente avec une aire de travail bloc dans l’aire de dessin en mainte- le site de QCad, partlibrary (voir autour de laquelle s’articulent des nant la touche [Ctrl] et cliquez sur « Informations complémentaires » barres d’outils (Fig. 3). Ici, en plus, la flèche sous la palette principale. ci-après). Téléchargez l’archive .tar. FreeCAD propose un interpréteur Définissez un point de référence et gz et déplacez son contenu avec Python. nommez votre bloc. Vous pouvez les privilèges administrateur dans le maintenant le réutiliser via la fenêtre répertoire /usr/share/librecad/ 3.1 Les ateliers des blocs. library. Les tâches qu’il est possible d’accom- plir dans un programme de DAO en 3D sont diversifiées (esquisse, extrusion, rotation...). Dans FreeCAD, chacune de ces tâches majeures possède son propre mode d’édition, appelé atelier ou module. Il existe des modules pour le dessin 2D, la réalisation de meshes (volumes constitués de polygones en fil de fer), la conception de pièces 3D... Un module dédié aux architectes est actuellement en développement. 3.2 Macros et interpréteur Python Une fonctionnalité ou une forme géo- métrique de départ vous manque dans l’installation par défaut de LibreCAD ? Fig. 3 : L’interface de FreeCAD est remodelée en fonction du module utilisé : Vous réalisez souvent un enchaînement dessin, architecture... de tâches ? Vous pouvez enregistrer 72 | Linux Pratique n°74 www.linux-pratique.com DÉCISIONNEL 3.3 La ligne de commandes FreeCAD permet de créer des objets en 3D en mode gra- phique, mais il peut également être utilisé en ligne de com- mandes (Fig. 4). L’intérêt de ce mode de fonctionnement est de limiter l’usage de la mémoire vive. Un autre avantage est de pouvoir importer FreeCAD sous forme de module Python au sein d’un autre logiciel de DAO. Malgré l’absence d’inter- face graphique, tous les outils géométriques de FreeCAD restent utilisables. 3.4 Raytracing : pour les images 3D haute qualité FreeCAD peut exporter des projections de la 3D en 2D dans des fichiers au format SVG (pour le dessin vectoriel). Pour le rendu 3D, le module Raytracing utilise la technologie du lancer de rayon (reconstitution du trajet de la lumière pour reconstituer la réflexion et la réfraction) pour le rendu en images de synthèse dans des logiciels externes. À l’heure actuelle, seul le moteur de rendu POV-Ray est supporté. Fig. 4 : FreeCAD lancé en ligne de commandes, sous Windows. vos propres macros. Pour cela, allez dans le menu Macro > 4. Conclusion Enregistrement de macro. Pour gérer l’ensemble des macros, Nous avons abordé les solutions de dessin assisté par ordi- allez dans le menu Outils > Personnaliser, puis sur l’onglet nateur avec LibreCAD et FreeCAD. S’ils sont moins com- Macros. Pour exécuter une macro existante, cliquez sur le bloc- plets que leurs homologues propriétaires, ces logiciels sont notes de la barre d’outils dédiée aux macros. mûrs pour une utilisation personnelle. Dans le cadre profes- sionnel, c’est plus délicat. FreeCAD, bien qu’assez stable, est encore en version de développement (0.12) et de nom- Compatibilité des concurrents breuses fonctions sont en cours d’implémentation. Quant à Windows sous Wine LibreCAD, la version 2 en est à sa quatrième version alpha et ajoutera le support des hyperboles. Si vous avez besoin de fonctionnalités avancées que vous ne trouvez pas dans LibreCAD ou FreeCAD, vous avez la possibilité de faire tourner vos logiciels proprié- Informations complémentaires taires sous Linux grâce à la couche de compatibilité Wine. LibreCAD et FreeCAD sont tous deux également Cependant, la compatibilité et la qualité de l’utilisation disponibles sous Windows et sous Mac OS X. De dépendent grandement de la version utilisée. nombreux autres logiciels libres de DAO existent : Prenons l’exemple d’AutoCAD. Dans la base de données - Pour la 2D : QCad, PythonCAD, DraftSight des applications de Wine (voir « Informations complé- - Pour la 3D : HeeksCAD, OpenSCAD mentaires » ci-après), les utilisateurs indiquent un bon fonctionnement pour les éditions du début des années Le site du projet LibreCAD : 2000 jusqu’à la version 17.1. Les notes vont de platine http://librecad.org/cms/home.html (support parfait) à argent (problèmes qui n’affectent pas Le site du projet FreeCAD : l’usage normal du logiciel). http://sourceforge.net/apps/mediawiki/free-cad/index. Le support de SolidWorks dans Wine, lui, est beaucoup php?title=Main_Page plus aléatoire. À partir des versions éditées en 2008, le Page de téléchargement de QCad, où on trouve une retour des utilisateurs indique des problèmes de support bibliothèque de pièces pour LibreCAD : de certains caractères accentués, des problèmes gra- http://www.ribbonsoft.com/en/qcad-downloads-trial phiques ou une instabilité du logiciel. Il existe peu de retours pour l’usage de ces logiciels avec La base de données de Wine pour se tenir au courant la dernière version stable de Wine, la 1.4 (disponible dans de l’évolution du support des logiciels de DAO sous le dépôt d’Ubuntu 12.04). À vous de faire l’expérience ! Linux et partager ses expériences : http://appdb.winehq.org/ www.linux-pratique.com Linux Pratique n°74 | 73 DÉCISIONNEL Pas Nagios : pourquoi ? Sébastien Maccagnoni-Munch Après plusieurs années de travail avec Nagios, j’ai appris à ne plus préconiser ce produit dans toutes les situations... Voici pourquoi. Certes, Nagios est populaire : après tout, de routeurs), j’ai pu en voir les travers pour comprendre de manière uniforme les c’est l’un des outils de supervision open et freins, les aspects qui font que je ne erreurs remontées ou pour les exploiter de source les plus utilisés, peut-être le plus les préconise plus... manière automatique. utilisé. Nagios est souvent déjà en place 1.1 Codes d’état limités Typiquement, un outil additionnel ayant pour dans une infrastructure de supervision, il but de créer des graphiques (NagiosGraph L’état d’un élément surveillé est défini a même su séduire les aficionados de l’in- ou Centreon par exemple) devra être confi- par le code de retour du greffon uti- formatique fermée, parfois en complément guré et vérifié pour chacun des greffons lisé pour effectuer cette surveillance. de solutions commerciales onéreuses. remontant des informations à traiter. Différents logiciels se basent sur Nagios, Avec Nagios, ce code de retour ne que ce soit pour lui adjoindre des fonction- peut prendre que quatre valeurs : Solution... nalités (NagVis, Monarch...) ou en tant que • 0 : OK, pas d’erreur ; Pour s’assurer d’une homogénéité de moteur de supervision (Centreon...). • 1 : WARNING, alerte classique ; la présentation des informations retour- nées par les greffons, il est nécessaire de Mais quels sont les arguments en • 2 : CRITICAL, problème grave ; faveur de Nagios, lorsqu’il faut choisir vérifier, valider et éventuellement d’adap- • 3 : UNKNOWN, état inconnu. une solution de supervision ? C’est le ter chacun des greffons pour suivre une plus connu... C’est LA référence... On a Nagios ne propose aucun intermé- même règle prédéfinie. des compétences... On ne connaît rien diaire ; il n’est par exemple pas pos- 1.3 Configuration trop d’autre... Beaucoup de greffons ont été sible de remonter une information et développés... Existe-t-il des arguments de la mettre en avant sans qu’elle ne souple mettant en avant les spécificités tech- soit présentée comme un problème (ce Les possibilités de configuration de Nagios niques de Nagios lui-même, que d’autres serait à placer entre 0 et 1), il ne permet sont vastes ; la configuration peut être pla- outils n’auraient pas ? Je n’en ai jamais pas non plus de donner plus d’impor- cée dans un seul gros fichier ou éclatée réellement entendu... tance à certaines erreurs par rapport à dans des dizaines de petits, les différents d’autres sans les qualifier de critiques. éléments (services et hôtes) peuvent être Bien sûr, Nagios est une solution liés de différentes manières (création d’un acceptable. L’ordonnanceur est fiable, Solution... service héritant d’un modèle de service, les fichiers de configuration sont com- Il n’y a aucun moyen, avec Nagios, de duplication d’un service, lien direct d’un préhensibles, les technologies utilisées définir des états intermédiaires ; il faut modèle de service à un hôte, lien d’un ser- sont libres, les alertes sont transmises donc « faire avec » et se contenter de vice à un hôte ou à plusieurs hôtes, lien quand il le faut... Mais n’est-ce pas le deux niveaux d’alertes... d’un service à un groupe d’hôtes...). minimum que l’on peut attendre d’un outil de supervision ? 1.2 Hétérogénéité À première vue, cette flexibilité est un avan- tage : chacun peut de cette manière confi- Que l’on ne s’y trompe pas : cet article Un gros inconvénient de Nagios pro- vient en partie de son plus grand avan- gurer l’outil de la manière qu’il le souhaite, n’est pas une croisade contre Nagios, tage ; en effet, le nombre très important avec sa propre logique. Mais lorsqu’une mais uniquement un avis (partial, pro- de greffons disponibles (presque 2000 autre personne (ou parfois la même per- bablement) sur cet outil que beaucoup sont recensés sur MonitoringExchange) sonne, quelques mois plus tard) doit lire encensent - souvent sans en connaître et modifier cette configuration, la compré- a contribué à creuser l’hétérogénéité de les concurrents. hension en devient très complexe, surtout la présentation des données remontées sur une configuration ayant un « vécu » de dans Nagios. plusieurs années. 1. Les problèmes Le seul point commun entre les diffé- de Nagios rentes informations remontées reste l’in- Solution... dicateur d’état de l’élément surveillé, qui Pour ne pas obtenir rapidement une confi- Après avoir installé des dizaines d’in- peut prendre les quatre valeurs vues ci- guration « spaghetti », il faut donc fixer un frastructures Nagios ou Centreon dans dessus. Pour le reste, les greffons sont certain nombre de règles et s’y tenir sans des contextes toujours différents (de la libres de renvoyer les données sous le exception... Chose quasiment impossible simple supervision de cinq éléments à format qu’ils veulent, compliquant la dans une équipe informatique constam- la supervision d’un réseau de centaines tâche des administrateurs, que ce soit ment sous pression. 74 | Linux Pratique n°74 www.linux-pratique.com DÉCISIONNEL 1.4 Intelligence 1.5 Corrélation impossible Notons toutefois une amélioration du côté de Shinken : la version 1.2, fraîchement Le dernier point, le plus problématique à mon distribuée sortie (elle fait d’ailleurs l’objet du dernier avis, découle également de cette décentra- L’intelligence de Nagios est dans les GNU/Linux Magazine hors-série !), pro- lisation de l’intelligence dans les greffons : greffons ; ou, plus précisément, ce sont pose des fonctionnalités de corrélation ; chacun d’entre eux décide, dans son coin, ce les greffons qui décident de l’état d’un cela reste une « sur-couche » au sys- qu’est un problème et quand lever une alerte. élément surveillé, puis qui remontent tème de greffons provenant de Nagios : L’ordonnanceur Nagios lui-même ne prend cet état à l’ordonnanceur. ce n’est pas une fonctionnalité du même aucune décision et ne fait qu’orchestrer l’en- niveau que les autres indicateurs, mais Il y a quelques années, cette caractéris- semble, envoyant des messages lorsqu’un tique était un avantage. En effet, lorsqu’il greffon remonte une alerte. nous pouvons tout de même enfin accé- s’agit de surveiller plusieurs milliers d’in- der à de la supervision de plus haut niveau Pourtant, de nos jours, les besoins en super- dicateurs sur une petite dizaine de ser- avec une technologie basée sur les prin- vision deviennent plus pointus et certaines cipes de Nagios. veurs, cela permet de répartir la charge de alertes ne dépendent pas d’un seul indica- calcul et d’alléger le travail du serveur qui teur. On peut citer l’exemple simple du cluster héberge l’ordonnanceur. La supervision a de répartition de charge : sur un tel cluster, 3. Centreon ainsi pu entrer par la petite porte dans des un seul processeur chargé à 100 % ne cor- Centreon est un outil de supervision com- sociétés où la supervision était le parent respond pas nécessairement à une alerte, plet qui se base sur Nagios pour la partie pauvre de l’informatique (parfois sous la alors que si tous les processeurs de tous les ordonnancement et remontée d’alertes. forme d’une instance de Nagios installée serveurs sont chargés à plus de 90 %, cela Nous passerons outre ici les critiques, sur un simple PC de bureau qui traînait peut indiquer qu’il faut revoir le dimensionne- positives ou négatives, que l’on peut faire dans un coin), sans nécessiter la mise en ment de l’architecture ; avec Nagios, un tel sur Centreon (interface web, graphiques, œuvre d’un serveur complexe et onéreux. raisonnement n’est pas possible. vocabulaire, etc.) pour nous concentrer Mais aujourd’hui, ce qui était un avantage Solution... sur cette dépendance à Nagios. devient un inconvénient. Tout d’abord, Une telle corrélation est toutefois possible, J’ai eu l’occasion de discuter avec une n’importe quel serveur, même d’entrée de de deux manières différentes : soit en inter- partie de l’équipe technique de Merethis, gamme, est capable d’absorber la charge ceptant les informations remontées par les éditeur de Centreon, et il m’a été indiqué nécessaire pour superviser la même greffons et en les analysant pour ensuite que Centreon prévoit de développer son quantité d’indicateurs. Ensuite, n’oublions les remonter à Nagios, soit en utilisant des propre moteur afin d’être totalement indé- pas le travail de maintenance complémen- greffons se connectant aux différents ser- pendant de Nagios et de se défaire de ces taire à effectuer : si un greffon doit être veurs concernés et récupérant les données problématiques. Mais ce n’est malheu- modifié, cela doit être fait sur l’ensemble voulues. reusement pas encore le cas et Centreon des serveurs sur lequel il est installé ; on Dans les deux cas, cela nécessite le souffre encore aujourd’hui de cette dépen- multiplie donc le travail en cas de mise dance à Nagios. à jour ou de reconfiguration. Enfin, plus développement et la maintenance d’une grave encore, dans certaines sociétés les solution spécifique pour chaque situation équipes informatiques sont divisées et les rencontrée, avec les complexités que l’on 4. Nagios : oui, mais... peut deviner. intervenants n’ont accès qu’à un certain On l’aura compris, en tant que profes- nombre de serveurs, ce qui complexifie sionnel des solutions d’infrastructure grandement la tâche quand il s’agit de 2. Icinga, Shinken open source, je ne préconise pas l’utili- faire une telle mise à jour ou modification Icinga est un fork de Nagios, initié en raison sation inconditionnelle de Nagios. – ne parlons pas des prestataires qui ont des réticences du développeur initial pour Nagios est, somme toute, un outil de un engagement de supervision, mais qui intégrer des fonctionnalités voulues par la supervision parmi d’autres : Cacti, Hobbit, n’ont pas de droit d’accès « administra- communauté. Shinken est une ré-implémen- OpenNMS, SmokePing, Zabbix, Zenoss teur » aux serveurs des clients ! tation complète des principes de Nagios, et de nombreux autres... Chacun a ses Solution... entièrement compatible avec celui-ci. spécificités et son domaine d’application, Tout d’abord, Nagios et NRPE per- Dans les deux cas, il s’agit de conserver chaque situation demande à être étudiée mettent de transmettre aux greffons une compatibilité avec Nagios (notamment pour identifier le logiciel le plus adapté... des éléments de paramétrage, dans la avec sa configuration et ses greffons) tout Que ce soit Nagios ou l’un de ses nom- limite de ce qui aura été prévu : avec en offrant des fonctionnalités complémen- breux concurrents. une solution bien configurée, il n’est taires (interface web dynamique, perfor- Si je préconise Nagios, c’est à une donc pas nécessaire d’accéder aux ser- mances améliorées, etc.). équipe qui a besoin d’indicateurs extrê- veurs pour une simple modification de Mais dans les deux cas, les problèmes fon- mement spécifiques, qui a de toute façon seuil par exemple. Pour les nouvelles damentaux de Nagios que nous venons de besoin de faire beaucoup de développe- versions ou les changements impor- voir ne sont pas résolus, car ils provien- ments et qui a les capacités matérielles tants de configuration, certains mettent nent des principes mêmes de fonctionne- et humaines pour créer et maintenir les en place des infrastructures de déploie- ment de Nagios, de ses greffons et de sa greffons nécessaires : Nagios est un outil ment de configuration comme Puppet. configuration... de développeurs ! www.linux-pratique.com Linux Pratique n°74 | 75 Code Text-To-Speech avec Python, GStreamer et Google translate Robin David La démocratisation de « l’interaction naturelle » avec des outils comme le Kinect, ou Siri (Iris pour Android) apporte une nouvelle dimension au développement de logiciels et à la manière de les concevoir. C’est pourquoi, dans une moindre mesure, il peut être intéressant d’utiliser de la synthèse vocale pour faire parler ses applications ou ses scripts afin d’avertir un utilisateur qui n’est pas nécessairement devant son ordinateur. Ainsi, le « text-to-speech » ou TTS désigne une application ou une bibliothèque permettant de faire de la synthèse vocale (« speech synthesis »). Cet article présente une manière simple et efficace d’utiliser le synthétiseur de voix de Google translate pour faire du text-to-speech en Python. oogle translate existe depuis À cette adresse se trouve un fichier MP3 contenant la voix synthétisée de « Hello maintenant plus de 5 ans. Il world ». Il est donc possible de récupérer un fichier MP3 contenant n’importe quel G ne pouvait alors supporter texte dicté dans la langue de notre choix. L’intérêt d’une telle méthode et du TTS que l’anglais, l’allemand et l’espagnol ; en général est qu’il n’est pas nécessaire de pré-enregistrer le texte (ce qui peut le français n’étant disponible que de prendre beaucoup de place). De plus, comme on va le voir, il n’est pas nécessaire français à anglais. Aujourd’hui, on de télécharger le fichier MP3 au préalable pour le lire. compte 57 langues dont la dernière, l’espéranto, depuis février 2012. La fonction de TTS, elle, a été introduite 1. GStreamer en 2009 avec l’anglais, l’italien, le Afin de lire le fichier MP3, il faut trouver la bibliothèque appropriée et de pré- français et l’allemand. En novembre férence une bibliothèque qui puisse lire un media à partir d’une URL. Les 2010, Google ajoute le support de 27 deux grandes bibliothèques de gestion du son et de l’image sont GStreamer langues pour le TTS alors basé sur http://gstreamer.freedesktop.org/ et Xine http://www.xine-project.org/ eSpeak. Toujours en 2010, Google home. Mon choix s’est tourné vers GStreamer qui semblait plus facile d’utili- migre certaines langues vers un sation et assez largement utilisé par les différents composants de GNOME autre synthétiseur de voix développé et KDE. par l’entreprise SVOX (http://www. Pour continuer, il faut donc installer libgstreamer et le binding en Python nuance.com/for-business/by-solu- python-gst. La version actuelle est 0.10.36. Sur une Debian testing, l’installa- tion/automotive-products-and-solu- tion se fait comme suit : tions/index.htm). La fonction de TTS de Google est en constante évolution. $ aptitude install libgstreamer0.10-0 python-gst0.10 Depuis, certaines voix ont été rempla- cées par des voix de femmes. Le der- Lire un fichier à partir d’une URL est très simple car le chemin du fichier doit être nier changement en date est l’ajout du donné sous forme d’URI. thaï en février. Un « Hello world » parlé peut être fait avec les trois lignes suivantes : Il n’existe aucune API officielle pour le TTS de Google translate mais une import gst astuce permet quand même d’avoir player = gst.element_factory_make("playbin", "player") player.set_property(‘uri’, ‘http://translate.google.com/translate_ accès à la synthèse de voix grâce à l’URL tts?tl=en&q=Hello+world’) suivante : http://translate.google.com/ player.set_state(gst.STATE_PLAYING) translate_tts?tl=en&q=Hello+world. 76 | Linux Pratique n°74 www.linux-pratique.com Code Le code est simpliste mais fonctionnel. On initialise un objet Playbin (player), programme, le script se termine aus- puis on fournit l’URI du média à lire, et enfin, on lance la lecture. sitôt après et même si le texte n’a pas fini d’être dicté, tous les objets Python sont détruits et la voix se coupe 2. Création d’une application simple de brutalement. Text-To-Speech La solution à ce problème est de trou- En prenant en considération tous les éléments ci-dessus, il est maintenant pos- ver une manière d’attendre la fin de sible de développer un programme/module permettant de faire du text-to-speech. la lecture du stream. C’est ici que les choses se compliquent un peu. Les deux arguments de l’URL à moduler sont : Pour récupérer l’événement de la fin • La langue en entrée définie par le nom de variable tl. La valeur doit être le code du stream, il faut se connecter au à deux caractères de la langue. bus du player et ajouter un watcher • Le texte à parler donné par la variable q. pour lequel on donne un callback Voici le code minimal d’une implémentation : puis boucler ou attendre l’événement de fin de stream. Cela peut paraître #!/usr/bin/python assez compliqué mais cela est facile # -*- coding: utf-8 -*- grâce à toutes les méthodes fournies import sys par GStreamer (ou plutôt Glib). En import gst effet, toute l’architecture de signaux, de messages et de callbacks utilisés class pytts(): def _ _init_ _(self): par GStreamer s’articule autour de la self.player = None bibliothèque Glib dont on va utiliser les Gobject (http://en.wikipedia.org/ def say(self, text, lang="en"): wiki/GObject). Gobject est le système music_stream_uri = ‘http://translate.google.com/translate_tts?tl=’+lang+’&q=’ + text d’objet de Glib permettant un dialo- self.player = gst.element_factory_make("playbin", "player") gue entre objets avec les fonction- self.player.set_property(‘uri’, music_stream_uri) nalités d’échange de messages et de self.player.set_state(gst.STATE_PLAYING) signaux. Le message envoyé par le player if _ _name_ _=="_ _main_ _": (PlayBin) sur son bus de données input_string = sys.argv lors de la fin de la lecture est eos pour End Of Stream. On va donc connecter if len(input_string) < 3: ce signal avec une fonction pour que print("Usage: ./tts.py language_code Your text separated with spaces.") celle-ci soit appelée lors de l’envoi du sys.exit(1) message. Puis on va directement uti- liser la classe Mainloop de gobject input_string.pop(0) #Retire le nom du programme de la liste pour attendre un événement et ainsi lang = input_string[0] #Récupère le langage qui doit être le premier argument éviter de faire de l’attente active. input_string.pop(0) #On retire le code de la langue tts_string = ‘+’.join(input_string) Concrètement, on ajoute notre objet MainLoop dans le init : pytts().say(tts_string, lang) self.mainloop = gobject.MainLoop() sys.exit(0) On ajoute une méthode qui fera office Une classe pytts est créée, contenant tout le code relatif au text-to-speech. de callback : Cela permet d’utiliser le fichier comme un module. La classe pytts possède une méthode say qui prend en paramètre le texte et la langue. L’URL est créée avec def on_finish(self, bus, message): les paramètres en entrée puis passée en paramètre du player pour capter le flux. self.player.set_state(gst.STATE_NULL) self.mainloop.quit() Le main, quant à lui, vérifie le nombre de paramètres en entrée. Le premier para- mètre est défini comme étant le code de la langue, suivi du texte à prononcer. Cette fonction remet simplement le Enfin, un nouvel objet pytts est créé, pour lequel on appelle la méthode say. player à l’état Null et arrête la main- Ce script est fonctionnel en l’état lorsqu’il est utilisé en tant que module, mais pas loop pour se débloquer. Enfin, le code en tant que programme. La raison en est la suivante : l’appel à self.player. à ajouter à la suite de la méthode say set_state(gst.STATE_PLAYING) est non bloquant. Donc utilisé en tant que est : www.linux-pratique.com Linux Pratique n°74 | 77 Code Text-To-Speech avec Python, gstreamer et Google translate La requête complète est la suivante : GET /translate_tts?ie=UTF-8&q=Fran%C bus = self.player.get_bus() 3%A7ais&tl=fr&total=1&idx=0&textlen=8&prev=input. bus.add_signal_watch_full(1) total bus.connect("message::eos", Comme on peut le voir, beaucoup plus d’arguments sont envoyés, dont , idx textlen prev ie self.on_finish) , , , mais surtout . Cette variable définit le codage utilisé et per- self.mainloop.run() #Wait an event met, après différents tests, de corriger le problème de la prononciation. À noter que tous les autres arguments semblent facultatifs car le programme de test fonctionne très bien sans eux. Il suffit donc d’ajouter l’attribut ie=UTF-8 à l’URL envoyée On récupère le bus du player dans au player pour que la voix synthétisée interprète correctement les caractères la variable bus, pour lequel on va accentués. monitorer les signaux et connecter self.on_finish lors de la récep- #!/usr/bin/python tion de message:eos. Enfin, on # -*- coding: utf-8 -*- lance la mainloop pour attendre import sys l’événement. import gst import gobject Maintenant modifié, si on lance le from urllib2 import Request, urlopen script en tant que programme, celui- ci attendra la fin de la diction pour se class pytts(): terminer. def on_finish(self, bus, message): #Méthode de callback (appelé pour un « eos ») self.player.set_state(gst.STATE_NULL) self.mainloop.quit() 3. Gestion de def _ _init_ _(self): l’UTF-8 self.player = None Pendant les tests, un problème est self.mainloop = gobject.MainLoop() très vite apparu, celui de l’encodage des caractères. En effet, lorsqu’on def say(self, text, lang="en",volume=5.0): envoie le mot « Français » en spéci- music_stream_uri = ‘http://translate.google.com/translate_tts?’+’q=’+text+’&t fiant comme langage « fr », le résul- l=’+lang+"&ie=UTF-8" tat est un mot complètement déformé self.player = gst.element_factory_make("playbin", "player") à cause du « ç ». Cependant, avec self.player.set_property(‘uri’, music_stream_uri) self.player.set_property(‘volume’,volume) un navigateur sur Google translate, self.player.set_state(gst.STATE_PLAYING) lorsque l’on tape « Français » et que l’on clique sur Ecouter, le mot est bus = self.player.get_bus() bien prononcé. Il y a donc néces- bus.add_signal_watch_full(1) sairement une différence entre les bus.connect("message::eos", self.on_finish) deux fichiers MP3 et donc l’URL. self.mainloop.run() #Bloque ici Pour en être sûr, un petit Wireshark lors du clic sur le bouton m’a permis de voir quelle requête GET était faite def sayNB(self, text, lang="en",volume=5.0): #NB pour Non-Blocking en Ajax. Fig 1 : Cette image montre le résultat du sniff avec Wireshark et plus précisément la ligne faite par la requête GET en Ajax. 78 | Linux Pratique n°74 www.linux-pratique.com Code TIPS music_stream_uri = ‘http://translate.google.com/translate_tts?tl=’+lang+’&q=’ + text +"&ie=UTF-8" self.player = gst.element_factory_make("playbin", "player") Générez self.player.set_property(‘uri’, music_stream_uri) self.player.set_property(‘volume’,volume) rapidement les self.player.set_state(gst.STATE_PLAYING) def download(self, text, lang="en", filename="translate_tts.mp3"): squelettes de vos req = Request(url=’http://translate.google.com/translate_tts’) req.add_header(‘User-Agent’, ‘My agent !’) #Obligatoire sinon renvoie 403 Forbidden scripts ! req.add_data("tl="+lang+"&q="+text+"&ie=UTF-8") fin = urlopen(req) MakeProject (http://code.google.com/p/ mp3 = fin.read() fout = file(filename, "wb") makeproject/) est un programme qui fout.write(mp3) permet de générer automatiquement fout.close() les modèles, ou squelettes de vos nou- veaux projets, à partir des informations def setVolume(self, val): que vous saisirez dans la ligne de com- self.player.set_property(‘volume’,val) #Val from 0 to 1 (float) mandes. Le programme permet ainsi de créer des squelettes de scripts Bash, if _ _name_ _=="_ _main_ _": C, libc, Python, C++, libc++ et Perl ; input_string = sys.argv l’option -l permet d’afficher la liste des squelettes disponibles. if len(input_string) < 3: On pourra utiliser le programme comme print("Usage: ./tts.py language_code Your text separated with spaces.") suit : sys.exit(1) $ mkproject -s bash -t test input_string.pop(0) $ cd test lang = input_string[0] $ ls input_string.pop(0) aclocal.m4 autom4te.cache configure tts_string = ‘+’.join(input_string) COPYING install-sh Makefile.in mkproject.log README pytts().say(tts_string, lang) AUTHORS ChangeLog configure.ac INSTALL Makefile.am missing NEWS src sys.exit(0) Une seule commande et tous les fichiers Comme on peut le voir, le code du programme/module au complet est assez nécessaires sont créés ! L’option -s simple. Seule une méthode download permettant simplement de télécharger le permet de préciser le type de squelette fichier MP3 sans le lire a été ajoutée ; ainsi que la possibilité de modifier le volume souhaité ; l’option -t permet de donner dans say et sayNB (pour Non Bloquant). Le code est hébergé sur GitHub (https:// un nom à l’archive du projet. Ces deux github.com/RobinDavid/pytts). options sont obligatoires. De manière générale, les seules limitations dont souffre le programme sont De façon plus détaillée, on pourra saisir : inhérentes à Google. C’est-à-dire que pour l’utilisation, une connexion inter- net est obligatoire, sans quoi le programme ne fonctionne tout simplement pas. $ mkproject --skeleton=bash De plus, Google limite la fonction de text-to-speech à des textes ne dépas- --tarname=test --pkgname=»A test» sant pas 100 mots. Bien sûr, cela peut être contourné en découpant le texte --description=»A test package for mkproject» en portions de 100 mots, mais cela reste malgré tout gênant. Enfin, il n’est --author=»Someone» pas possible de changer la vitesse de diction ou même de genre de voix [email protected] (homme/femme). --homepage «http://nohomepage.org» 4. Conclusion Un man mkproject vous permettra de prendre connaissance des différentes Cet article a montré une manière aussi simple qu’originale de faire du text-to- options. Des squelettes supplémentaires speech sous Linux en utilisant Python comme support. Bien évidemment, le code pourront être ajoutés sous forme de peut tout à fait être porté en C ou n’importe quel autre langage puisque GStreamer scripts Bash dans /usr/local/share/ est une bibliothèque C et possède un binding pour la plupart des langages. De mkproject/skeletons/. cette manière, vos scripts et vos programmes vont enfin pouvoir donner de la voix et ce dans pas moins de 27 langues différentes. www.linux-pratique.com Linux Pratique n°74 | 79 Code Bonne pratique : préférer un UID à une clé incrémentale Stéphane Mourey Spontanément, lorsqu’on crée une structure de base de données, pour chaque table, les développeurs ont tendance à définir un champ qui sera incrémenté de 1 à chaque insertion comme clé primaire. Une autre option existe pourtant, plus élaborée, et présentant un grand intérêt : les UUID ou GUID. standard un type de champ « Unique par différents serveurs sans rencon- 1. Qu’est-ce qu’un Identifier » qui pourra être alimenté trer de conflit. Le second est une UUID? avec un GUID. sécurité renforcée. En effet, le prin- cipal défaut d’une clé incrémentale UUID est l’acronyme de « Universal Techniquement, les UUID sont codés est sa prédictibilité. Ce n’est pas une Unique IDentifier » : identifiant unique sur 128 bits et présentés à l’utilisa- faille en soi, mais il est souvent dif- universel, en français. On l’utilise teur sous la forme : 110E8400-E29B- ficile d’imaginer comment des infor- dans le monde UNIX à plusieurs 11D4-A716-446655440000. L’idée mations, a priori anodines, peuvent niveaux, pour identifier utilisateurs et est de générer un identifiant qui soit prendre toute leur importance dans le groupes par exemple. Microsoft l’ap- absolument unique sans aucune cadre d’une attaque bien construite. pelle GUID (Global Unique Identifier) considération du contexte. Pour y Par exemple, je peux peut-être, en et les deux termes sont suffisamment parvenir, dans la première version, on créant plusieurs utilisateurs d’affilée généralisés pour qu’on les considère utilisait une combinaison de l’adresse sur un site, découvrir stocké dans l’url comme synonymes. Microsoft utilise MAC, en principe unique pour chaque ou dans mes cookies, un paramètre les GUID de manière extensive, et on ordinateur et du nombre de dixièmes qui aura augmenté de 1 entre chaque en trouve absolument partout : dans de microsecondes depuis la première utilisateur créé. Dès lors, j’aurai vite la base des registres, dans l’Active date dans le calendrier grégorien. fait de m’imaginer qu’il s’agit de la clé Directory, dans les fichiers Office, ... Ainsi, un UUID ne pouvait avoir été primaire de la table des utilisateurs, Comme il s’agit d’un élément utilisé généré que par un et un seul ordi- et j’aurai un intérêt tout spécial pour de façon interne, la plupart des utili- nateur, charge à lui de ne pas en celui qui aura une clé de 1 et pour les sateurs, et même des programmeurs, produire plus d’un par dixième de autres utilisateurs avec une clé peu n’en ont souvent pas conscience : microseconde. Par la suite, il a été élevée : premiers utilisateurs, il y a de l’auteur du ver Melissa, un virus de décidé de ne pas utiliser l’adresse fortes chances qu’ils aient des droits macro Ms-Office, a d’ailleurs pu être MAC directement pour ne pas com- élevés. Du coup, il m’a semblé qu’une identifié grâce au GUID inclus dans promettre le producteur du UUID : bonne pratique serait d’abandonner son fichier d’origine et reproduit par hashages MD5 ou SHA-1, fonctions complètement les clés incrémentales le virus dans tous les documents pseudo-aléatoires ont été propo- pour des UID plus complexes. infectés sans qu’il en soit conscient. sés dans différentes RFC. D’autres En effet, à l’époque, Microsoft, sui- implémentations non-standards sont vant en cela la première spécifica- également apparues, rendant l’uni- 2. Une tion concernant les UUID de l’OSF cité universelle de l’UUID moins... (Open Software Foundation), uti- universelle. implémentation en lisait l’adresse MAC pour géné- Maintenant, quel est l’intérêt d’utili- rer les GUID. Ce n’est plus le cas ser un tel type de clé plutôt qu’une PHP aujourd’hui, pour préserver la vie pri- clé incrémentale ? Il y en a au moins La réputation de PHP en termes vée des utilisateurs. En deçà de l’OS, deux. Le premier est qu’un identifiant de sécurité n’est pour le moins pas on utilise également les GUID dans unique universel vous garantit que brillante (taper « PHP security reputa- les tables de partitions de type GPT. vous pourrez fusionner des tables tion » dans votre moteur de recherche Microsoft SQL Server propose en de structures identiques hébergées préféré, et rien que la lecture des 80 | Linux Pratique n°74 www.linux-pratique.com Code premiers résultats est édifiante). Alors pourquoi implémenter un élément de sécu- La méthode insert n’a été modifiée rité aussi élaboré en PHP plutôt que de choisir un autre langage ? Tout d’abord, que pour obtenir un uid depuis notre on n’a pas toujours le choix du langage avec lequel on doit travailler. Ensuite, nouvelle méthode avant l’enregistre- parce que c’est en PHP qu’il y a le plus de boulot, ce sera toujours un élément ment et non plus pour le récupérer de moins que pourra utiliser un éventuel attaquant. depuis le résultat de la dernière inser- Par contre, nous allons implémenter un UID, et non un UUID ou un GUID. Je veux tion (effectuée d’ordinaire avec une mysq_insert_id dire par là que, sans avoir un risque de collision plus important qu’avec les autres fonction du style méthodes existantes, la nôtre ne se référera pas à un algorithme normalisé dans selon votre base) après. Naturellement, un RFC et s’appuiera autant que possible sur les fonctionnalités déjà présentes il faudra également modifier la struc- dans PHP. Par ailleurs, nous abandonnerons également les tirets dans notre nota- ture de la base de données pour tion : celle-ci avait un sens pour la première implémentation de l’UUID et est res- prendre en compte le nouveau type de tée par force d’habitude, mais il n’y a aucune raison logique ou sémantique de la champ et passer d’un type entier à un conserver aujourd’hui. type chaîne de 32 caractères. Notre implémentation se placera immédiatement dans un contexte MVC, c’est-à- Passons maintenant au contenu de get_new_uid() dire que nous allons placer nos méthodes sur la classe mère de tous vos modèles. , qui est ce qui nous De la sorte, tous vos modèles vont en hériter. Si vous ne travaillez pas dans un intéresse vraiment. La première ligne tel contexte, vous n’aurez qu’à recopier cette méthode là où vous en avez besoin. commence par tester l’existence de la com_create_guid Ou, si vous utilisez PHP 5.4, à la placer dans un trait que vous appellerez dans fonction . Celle-ci toutes les classes dont vous avez besoin. est fournie par l’extension COM de PHP sous Windows et permet... de Dans le cadre MVC, nous supposons que vous avez une méthode insert sur générer des GUID. Du coup, pas la votre classe model dont héritent tous vos modèles. Cette méthode insert vous peine de se fatiguer plus si elle est dis- sert à créer un nouvel enregistrement en base de données. Si précédemment vous ponible, autant s’appuyer sur elle. On utilisiez une clé incrémentale, cette méthode ne se préoccupait de la clé primaire va simplement en retirer les tirets avec que pour en renvoyer la valeur à la fin du traitement pour montrer son succès et la fonction str_replace pour obtenir pour l’affecter à une propriété de l’objet. Il faudra ici apporter quelques modifica- un format identique avec celui que va tions : avant de faire l’enregistrement, il faudra récupérer un nouvel UID avant de donner notre fonction si elle n’est pas procéder à l’enregistrement. disponible. Notre génération d’UID se produit à la ligne suivante. session_start(); uniqid() class model { L’idée est se s’appuyer sur , static function get_new_uid() { une fonction de PHP qui génère un if (function_exists(‘com_create_guid’)) identifiant unique... ou presque. En return str_replace(‘-’,’’,com_create_guid()); effet, en consultant la documenta- return md5(session_id().uniqid(gethostname(),true)); tion de cette fonction, on découvre } que le résultat est intimement lié à la function insert() { microseconde où il est produit. On ne $this->uid = self::get_new_uid(); pourra pas se contenter de ce résul- // insérer ici le traitement d’enregistrement en base, faites tat. Le premier paramètre accepté // que la méthode retourne false en cas d’échec par la fonction sert justement à pla- return $this->uid; cer un préfixe. L’utilisation du nom } d’hôte obtenu par gethostname() } est idéale pour éviter tout conflit si des identifiants sont générés sur Notre code, avant même d’intervenir sur le modèle, commence par un plusieurs machines simultanément. session_start(). En effet, nous allons utiliser le mécanisme des sessions Attention : cette fonction n’est dis- de PHP pour déterminer notre UID, vous verrez un peu plus loin comment. Le ponible que depuis PHP 5.3! Il vous fait de mettre session_start() ne mange pas de pain et permet de s’as- faudra procéder autrement si votre surer que la session est bien démarrée lorsque notre code commencera à cible comprend des versions plus s’exécuter. anciennes. Le nom d’hôte appa- raissant dans l’url est insuffisant model Nous travaillons ensuite sur la classe qui, dans notre exemple, est la classe car absent en ligne de commande parente de tous les modèles de notre application et les changements devraient d’une part, et pouvant être partagé s’appliquer partout sans autre intervention. par plusieurs machines en cas de Sur cette classe, nous supposons qu’il existe une méthode insert qui permet répartition de charge d’autre part. d’ajouter un nouvel enregistrement en base de données. Nous ajoutons une nou- Le paramètre suivant de la fonction velle méthode get_new_uid. Nous déclarons cette dernière comme statique, car uniqid, que nous avons placé à son déroulement ne dépend absolument pas du contexte de l’objet. true sert à augmenter l’entropie de www.linux-pratique.com Linux Pratique n°74 | 81 Code Bonne pratique : préférer un UID à une clé incrémentale l’identifiant généré et sa longueur. Il côté, les SGDB libres fournissent des éléments pour vous simplifier la tâche, cha- est requis pour tout script destiné à cun à leur sauce. Nous allons voir ce qu’apportent sur ce sujet les trois grands fonctionner sous Cygwin à en croire systèmes de base de données du monde libre. la documentation. Nous avons concaténé le résul- 3.1 MySQL tat de uniqid() avec le résultat MySQL propose en standard deux fonctions permettant de générer des UUID : d’une autre fonction session_id. UUID() et UUID_SHORT(). La première aura l’avantage de suivre le format stan- Celui-ci est défini au moment de dard sans vous demander aucun travail. La seconde sera moins consommatrice l’exécution effective de session_ de ressources, tant en termes de temps de traitement que d’espace disque. star() et est un identifiant de ses- sion. Noter que cette instruction Il faudra simplement modifier légèrement la structure de la base pour que votre fonctionne également en ligne de colonne recevant l’identifiant accepte le format de vos UUID. Mieux vaut consulter commandes, il ne s’agit pas néces- la documentation avant de se lancer : https://dev.mysql.com/doc/refman/5.6/en/ sairement d’une session web. Cet miscellaneous-functions.html#function_uuid. identifiant est unique pour toute ses- Une requête d’insertion ressemblera alors à : sion en cours sur le serveur. Ainsi, en le concaténant à notre résultat INSERT INTO TABLE (uuid,...) VALUES (UUID(),...) précédent, nous obtenons un identi- fiant unique, même si d’autres iden- tifiants sont générés en même temps 3.2 SQLite sur la même machine. Par ailleurs, SQLite ne propose pas de base de fonction permettant de générer des UUID stan- l’identifiant de session permet d’intro- dards, mais la documentation (https://sqlite.org/lang_corefunc.html#randomblob) duire une nouvelle dose d’entropie à suggère une solution astucieuse utilisant la fonction randomblob en combinaison moindre frais. avec hex() qui permettra d’aboutir à un résultat satisfaisant. Notons en passant que si l’exten- Une requête d’insertion ressemblera alors à : sion OpenSSL de PHP est installée avec une version de PHP supérieure INSERT INTO TABLE (uuid,...) VALUES (hex(randomblob(16)),...) ou égale à 5.3, alors l’utilisation d’uniqid() peut être remplacée par openssl_random_pseudo_ 3.3 PostgreSQL bytes() qui vous permettra d’obte- PostgreSQL fournit en standard un type de données destiné à stocker des UUID nir un uid plus robuste encore à toute (voir http://www.postgresql.org/docs/9.2/static/datatype-uuid.html) mais pas de tentative de prédiction. fonction pour les générer. Pour cela, si votre application ne le gère pas elle- même, il conviendra de faire appel à une bibliothèque complémentaire, uuid- Voilà, nous avons donc maintenant une chaîne de caractères représen- ossp qu’il vous faudra installer (voir http://www.postgresql.org/docs/9.2/static/ tant un identifiant unique. Mais celui- uuid-ossp.html). ci n’a pas encore la longueur standard des UUID, à savoir 32 caractères (sans les tirets). Pour y parvenir, nous 4. Oui, mais... passons cette chaîne par l’algorithme Il sera particulièrement naïf de croire qu’utiliser des UUID, GUID ou UID plu- md5 à travers la fonction qui lui est tôt qu’une clé incrémentale n’a pas de coût. Difficile en effet de faire plus éco- dédiée. On peut lui préférer la fonction nomique que l’instruction ++. Plus vite générée, une clé incrémentale est aussi crypt qui fournira probablement un plus rapide à manipuler pour votre base de données : le tri n’est utile que si vous cryptage plus difficile à casser. Il ne importez des données brisant la séquence, l’espace nécessaire en mémoire et reste plus qu’à renvoyer tout ça pour sur le disque est réduit au strict minimum. Une clé incrémentale est également enregistrement. plus facile à comprendre et à manipuler par l’esprit humain. Il est plus facile pour nous de parcourir une table et de comprendre son historique quand elle utilise une 3. Une clé incrémentale. Une manière de pallier partiellement le problème des performances est d’utili- implémentation ser des UID croissants dits séquentiels. S’ils n’auront pas la simplicité d’une clé incrémentale, ils permettront au moins de trier les enregistrements presque aussi par le SGDB facilement. Il n’est pas très compliqué d’y parvenir : il suffit de modifier votre algo- Notre implémentation en PHP a rithme pour qu’il commence par une séquence liée directement au moment où il l’avantage d’être indépendante de la est produit, par exemple en utilisant la fonction php microtime. Mais vous y per- base de données choisie. D’un autre dez en termes de sécurité. 82 | Linux Pratique n°74 www.linux-pratique.com Actuellement Découvrez la en kiosque ! nouvelle formule iel N°28 Linux Essent ▪ 16 pages supplémentaires ▪ un nouveau format... ▪ de nouvelles rubriques : Windows/Linux, Écosystème du Libre, Culture... disponible chez votre marchand de journaux jusqu'au 30 novembre 2012 et sur : www.ed-diamond.com ssentiel °3 de Linux E hors-série n le 14 décembre en kiosque ! l'essentiel pour bien débuter avec Découvrez toutes les nouveautés de GIMP 2.8, comment tirer parti des fonctionnalités de base GIMP ! du logiciel, ainsi qu'une série de tutoriels qui vous permettront de retoucher vos photos et de réaliser des créations originales ! Sous réserve de toutes modifications. À découvrir chez votre marchand de journaux dès le 14 décembre 2012 ! Venez découvrir notre kiosque numérique ! Rendez-vous sur diamond.izibookstore.com et retrouvez GNU/Linux Magazine, MISC, Linux Pratique et Linux Essentiel en version PDF !!! Achetez le magazine en PDF et feuilletez-le sur votre ordinateur, votre tablette ou votre smartphone ! Plus d’informations sur : diamond.izibookstore.comSchémas
les informations auxquelles on peut s’attendre pour un pied Schéma narratif
relative à la page entière, de celle d’un article à l’aide du Situation initiale
article > header { } Perturbation
Toujours pour améliorer la sémantique (mais également pour Déroulement
qu’il s’agit de la date de publication de l’article et un attribut Résolution
aaaa-mm-jjThh:mm : Situation finale
Schéma actanciel
divisé en plusieurs sections à l’aide de la balise éponyme : Destinateur
Destinataire
Adjuvant
Opposant
Quête
Perturbation
Déroulement
Résolution
Situation finale
rarchie claire de ce qui est représenté. Ainsi, si l’on voulait Schéma actanciel
• Perturbation Destinateur
• Situation finale Destinataire
Adjuvant
• Opposant Opposant
Quête
meilleur endroit par rapport à la structuration du contenu, Schémas
qui doivent améliorer la sémantique, améliorer la lisibilité à Schéma narratif
tique aux calques avec la balise et permettent également Situation initiale
sémantiques.