Вы находитесь на странице: 1из 33

Nicolas BENOIT

Projet tutor de ralisation technique en Licence Rseaux et Tlcoms Promotion 2010

Ralisation dun rfrentiel serveur

Matre dapprentissage : Jean Marc PARIS

Sommaire

Sommaire ................................................................................................................................... 2 Rsum ....................................................................................................................................... 3 Intitul de la mission .................................................................................................................. 4 Introduction Prsentation de la mission .................................................................................. 5 Informatique CDC .................................................................................................................. 5 Le Service Infrastructure ........................................................................................................ 5 Pourquoi un rfrentiel serveur ? ........................................................................................... 5 Dfinition du cahier des charges ................................................................................................ 7 Fonctionnalits ....................................................................................................................... 7 Schma de la base de donnes ................................................................................................ 8 Choix technologiques ............................................................................................................. 9 Diffrentes versions ................................................................................................................ 9 Estimation du planning........................................................................................................... 9 Ralisation dun prototype sans donnes ................................................................................. 10 Cration des tables de la base de donnes ............................................................................ 10 Schma de navigation........................................................................................................... 11 Fiche de serveur physique ................................................................................................ 13 Fiche de serveur logique .................................................................................................. 13 Fiche de groupe de serveurs physiques ............................................................................ 14 Schma des pages de code.................................................................................................... 15 Transmission des variables................................................................................................... 16 Fonctionnement de la page index ......................................................................................... 17 Fonctions daffichage et dcriture ...................................................................................... 18 Fonctions de vrification ...................................................................................................... 18 Extraction des donnes ............................................................................................................. 20 Choix des sources ................................................................................................................. 20 Intrt du format .csv ........................................................................................................... 20 Mise au format des donnes ................................................................................................. 21 MAGIC ............................................................................................................................. 21 UAM................................................................................................................................. 21 Fichiers tableur ................................................................................................................. 22 Mise en production ................................................................................................................... 23 Choix de sassocier avec Vision-DPI ................................................................................... 24 Adaptation de linterface graphique ..................................................................................... 25 Migration sur les serveurs .................................................................................................... 26 Conclusion et volutions futures .............................................................................................. 27 Glossaire ................................................................................................................................... 28 Bibliographie ............................................................................................................................ 29 Annexes .................................................................................................................................... 30 Annexe 1 .............................................................................................................................. 30 Annexe 2 .............................................................................................................................. 31

Rsum
Ma mission au sein dInformatique CDC (socit informatique de la Caisse des Dpts et Consignations) tait de mettre au point un rfrentiel serveur, une application reliant les machines physiques (serveurs rels en salle) et les machines logiques (systmes dexploitation ou machines virtuelles) pour rpondre au besoin des quipes. Aprs avoir consult les diffrentes quipes concernes par loutil, je dcidais de mettre au point la solution en utilisant une architecture WAMP (Windows, Apache, MySQL, PHP). Il me fallu dabord crer un noyau applicatif sans donnes, puis mettre au point limportation de donnes et finalement, pour la version en production de loutil, massocier avec un autre outil existant pour crer un logiciel complet.

My mission as apprentice in Informatique CDC (the IT company of la Caisse des Dpts et Consignations) was to build a server referential. The aim of this software is to link up the physical machines (true servers) with logical machines (operating systems or virtual machines) to help several teams in their every-day work. After asking the concerned teams, I decided to use a WAMP (Windows, Apache, MySQL, PHP) structure to build the application. The first part of the development was to build a core without data, after I had to work on the importation of the data and finally I associated my application with another one in aim to make a really complete tool.

Intitul de la mission
Mettre au point (de la conception du Modle Conceptuel de Donnes la ralisation technique) un rfrentiel portant sur lensemble du parc de serveurs sous la responsabilit du dpartement.

Introduction Prsentation de la mission


Informatique CDC
Ma mission sest droule au sein dInformatique CDC sur le site dArcueil. Comme son nom lindique, Informatique CDC est le prestataire interne en informatique de la Caisse des Dpts et Consignations. Cest donc Informatique CDC entre autres de grer le parc informatique des diffrentes filiales de la caisse (on peut citer principalement les Caisses dEpargnes et CNP Assurances dans les domaines financiers et bancaires) ainsi que le dveloppement dapplications.

Le Service Infrastructure
La mission tait rattache plus prcisment au service Infrastructure appartenant au dpartement DPI (Direction de la Production Informatique). En opposition principalement du dpartement DEI (Direction des Etudes Informatiques) en charge du dveloppement, le dpartement DPI est charg de proposer les infrastructures servant de bases aux diffrentes applications internes et appartenant aux entreprises clientes, de vrifier leur bon fonctionnement constant et dinstaller les diffrents services dont pourraient avoir besoin les applications pour fonctionner (bases de donnes, serveur application ou web, anti virus). Mon matre dapprentissage, monsieur Jean-Marc PARIS est le chef de service correspondant aux serveurs et au stockage. La mission de ce service est de grer les serveurs dInformatique CDC (commander le matriel pour rpondre aux demandes, surveiller quotidiennement que tous les serveurs fonctionnent, adapter la puissance des serveurs surchargs et rcuprer les surplus des serveurs sous-chargs).

Pourquoi un rfrentiel serveur ?


Bien que cela puisse encore se trouver, il est de plus en plus rare de dcider dinstaller une unique machine logique sur une machine physique (voir le glossaire pour la dfinition prcise de ces deux termes), la norme tant devenue dinstaller un grand nombre de machines virtuelles sur des serveurs de grosse taille ou sur des clusters. La gestion sen retrouve simplifie et on adapte bien mieux la charge des serveurs (si une seule machine virtuelle est surcharge elle va prendre temporairement et automatiquement de la ressource celles qui sont sous-charges au mme instant). Il existe un outil de gestion des possessions de lentreprise qui contient entre autres toutes les donnes des serveurs physiques (nom, quantit de ressources, emplacement en salle) et un autre outil recense automatiquement les donnes des machines logiques (nom, ressources alloues, nom du systme dexploitation, logiciels installs). Nous avons donc ainsi sparment un rfrentiel de serveurs physiques et un rfrentiel de serveurs logiques mais il faut un autre outil pour faire la liaison entre les deux. Sans cet outil, il serait par exemple extrmement fastidieux en cas de panne dune machine logique de

retrouver en salle le serveur physique associ pour par exemple le redmarrer. Cette liaison existait bien entendu, mais par lintermdiaire de fichiers Excel grs de manire totalement manuelle et par celle dun outil (le rfrentiel MAGIC) assez critiqu par les quipes lutilisant (il ncessitait entre autres une saisie manuelle fastidieuse de toutes les donnes mme si ces donnes taient dj prsentes dans lun des autres rfrentiels et demandait des informations qui ntaient au final que trs rarement consultes). De plus, ce projet de nouveau rfrentiel serveur sinscrit dans une stratgie globale de lentreprise qui est de sapprocher des recommandations ITIL qui demandent entre autre la constitution dun puits de donnes.

Dfinition du cahier des charges


Fonctionnalits
La fonctionnalit principale tait simple : relier les serveurs physiques et les serveurs logiques. La question tait de savoir prcisment ce que contiendrait loutil et comment seraitil mis jour. Le but tant que loutil soit le plus jour possible et permette de faire gagner en productivit, on me fit passer une journe au sein de chaque quipe pour comprendre son rle et demander chacun ce quil attendait du rfrentiel. Plusieurs choses ressortirent de ces entretiens. Tout dabord, si la problmatique principale tait de relier les serveurs physiques aux serveurs logiques, ce quattendent les quipes est plus prcisment de relier les machines aux applications. Les deux questions auxquelles le rfrentiel devra le plus souvent rpondre seront Si ce serveur tombe, quelles seront les applications impactes ? et sa rciproque Si cette application est arrte, o se trouvent les ressources libres ? . Ensuite, il ressortit que le principal dfaut de lancien rfrentiel tait quil tait ncessaire de renseigner pour chaque serveur physique ou logique la majorit de ses donnes la main, alors que ces donnes existaient dj dans dautres outils. Il fut donc dcid que loutil devrait rcuprer ses donnes automatiquement ou en devenir la source officielle afin dviter absolument toute redondance dans la saisie. Et pour finir, nous dcidmes dinclure le concept de groupe de machines physiques. Lide tant que parfois lorsquune machine physique tombe les machines logiques alloues sont automatiquement prises en charges par le reste du groupe. On peut trouver cela par exemple dans le cas de blade centers et de clusters (voir le glossaire pour la dfinition de ces termes).

Schma de la base de donnes

Chaque machine logique est associe une unique machine physique et accessoirement au groupe de machines physiques auquel est rattache sa machine physique. Par contre une machine physique peut tre associe plusieurs machines logiques ainsi qu plusieurs groupes de machines physiques. La base de donnes comporte donc quatre tables. Trois contenant les informations sur les principales entits (machines physiques, logiques et les groupes de machines physiques) et la dernire assurant la liaison n n entre les machines physiques et les groupes de machines physiques. Il ny a pas besoin dautres tables de liaison vu que les relations entre les machines logiques et soit les machines physiques soit les groupes de machines physiques sont des relations 1 n.

Choix technologiques
Il fallait crer un outil reli une base de donnes et aisment accessible distance un nombre dutilisateurs simultan peu important (presque jamais plus dune vingtaine). De plus, les donnes ne sont pas particulirement confidentielles, en nombre plutt rduit (quelques milliers de lignes) dans une architecture simple de quatre tables. Jai donc choisis une architecture WAMP (Windows Apache Mysql PHP) qui ne propose peut tre pas des performances fantastiques mais qui savre largement suffisante pour les contraintes du projet. De plus, mit part pour le systme dexploitation, cette architecture est entirement gratuite. Ce fut larchitecture utilise en dveloppement car jy tais familier, sur la version de production je du madapter larchitecture LAMP, mais le code PHP tant indpendant du systme dexploitation il na suffit que de tester sil ny avait pas de lgers disfonctionnements.

Diffrentes versions
Le rfrentiel MAGIC tant encore en activit jusqu mars la priorit tait plus de sortir un produit fonctionnel et prvu pour supporter les volutions futures que davoir le plus vite possible une version incomplte et peu adaptable. Il fut dcid que je me concentre dabord sur un prototype vierge de donnes, puis dy intgrer les ajouts de donnes et aprs seulement de passer le produit en production alors que MAGIC serait arrt.

Estimation du planning
Dcouverte de lentreprise prsentation de la mission et faire le tour des quipes : 3 semaines. Rdaction du cahier des charges de la solution : 1 semaine. Conception dune version sans donnes : 3 semaines. Conception dune version rcuprant les donnes manuellement : 3 semaines. Mise en production : 1 semaine. Automatisation des mises jour : 3 semaines. Faire voluer la solution pour satisfaire au mieux aux quipes : jusqu la fin de la mission.

Ralisation dun prototype sans donnes


Cration des tables de la base de donnes
Histoire de pouvoir tester le code PHP, je dcidais de mettre dans les tables le nom de chaque entit et deux lments choisis arbitrairement. Le format final des donnes ntant pas encore dfinit, je choisi pour plus de simplicit de garder les champs en tant que chanes de caractres (VARCHAR) alors que dans la version finale les donnes seront probablement entres numriquement. Jai pris la prcaution de dfinir en tant que clefs uniques les noms des machines physiques, logiques et groupes de machines physique pour tre certain quil ny est pas de redondance ou de machines diffrentes portant le mme nom, ce qui ne devrait jamais arriver. Le prototype du code SQL tait au final celui-ci (vous pouvez retrouver le code complet en annexe 1) :

Structure de la table groupesmachinesphysiques Nom : Chane de caractres Description : Texte Clef unique : Nom Structure de la table liaisongroupesmachinesphysiques ID : Entier MachinePhysique : Chane de caractres GroupeMachinesPhysiques : Chane de caractres Clef primaire : ID Structure de la table machineslogiques Nom : Chane de caractres MachinePhysique : Chane de caractres GroupeMachinesPhysiques : Chane de caractres NombreProcesseurs : Chane de caractres Memoire : Chane de caractres Clef unique : Nom Structure de la table machinesphysiques Nom : Chane de caractres NombreProcesseurs : Chane de caractres Memoire : Chane de caractres Clef unique : Nom

10

Schma de navigation
Le but du rfrentiel est de partir dun serveur physique pour arriver la liste des applications et inversement. Le plus simple tait donc de mettre en entre une page dindex proposant laccs aux listes des serveurs physiques et logiques, de slectionner dans la liste le serveur qui vous intresse et une fois le serveur slectionn daccder une fiche contenant les informations du serveur (logique ou physique) ainsi que des liens directs vers les fiches des entits associes (on peut accder au serveur physique depuis le serveur logique et partir du serveur physique on peut accder tous les serveurs logiques quil hberge). Depuis lindex il est galement possible daccder la liste des groupes de machines physiques, la fiche de chacun de ces groupes permettant daccder toutes les machines physiques du groupe ainsi qu tous les serveurs logiques associs ces machines physiques. Un champ de recherche est galement prvu pour accder plus rapidement une ressource. Ci-dessous, un schma rsumant les possibilits de navigation offertes lutilisateur :

11

Liste de serveurs

Cette page recense lintgralit des serveurs logiques, il existe bien sr une page quivalente pour les serveurs logiques. Si lon est sur du nom du serveur que lon recherche, il est possible de taper son nom dans le champ de recherche en haut gauche.

12

Fiche de serveur physique

Cette page regroupe les diffrentes caractristiques du serveur physique. On peut galement aller directement vers les fiches des serveurs logiques hbergs par cette machine ainsi qu la fiche du groupe de machines physiques auquel ce serveur appartient.

Fiche de serveur logique

Cette fiche recense de mme les caractristiques du serveur logique et permet daccder aux fiches du serveur physique et du groupe de machines physiques associs. On peut aussi retrouver les applications installes sur cette machine logique (reprsentes par leur code application).

13

Fiche de groupe de serveurs physiques

Et enfin voici un exemple de fiche de groupe de machines physiques, elle permet daccder directement toutes les machines physiques et toutes les machines logiques y appartenant.

14

Schma des pages de code


Vu quau final il ny a que peu de dcrans foncirement diffrents afficher (la fiche dune machine physique nest pas si loigne que celle dune machine logique et de mme pour les listes), jai fais le choix de regrouper toute la navigation dans la page dindex et de faire appel des fonctions qui ont t ranges dans diffrentes pages pour plus de comprhension. Cidessous un schma pour reprsenter plus facilement la situation :

15

Transmission des variables


Comme dans tout langage de programmation, le langage PHP utilise des variables. Par contre, vu que chaque page web peut tre plus ou moins considre comme un programme part, il faut rsoudre la problmatique de la transmission des variables dune page lautre. Par exemple, si je veux accder la fiche concernant le serveur DSAPR0042 je vais le chercher dans la liste des serveurs et cliquer dessus. En cliquant, je vais charger une nouvelle page web, tous les traitements qui ont pu tre fait en PHP avant sont donc perdus moins que je transmette les variables. Il existe trois principaux moyens de transmettre une variable en PHP (adresses, formulaires, les cookies et les sessions) : Les adresses. Ladresse www.exemple.com/page2.php?reponse=42 prcise que la variable $reponse vaut 42. Mais cette mthode a un dfaut vident : le visiteur voit les variables transmises. Pour utiliser cette solution, il est largement conseill dutiliser un cryptage ou faire vhiculer uniquement des donnes peu sensibles. Les formulaires. Il est possible en HTML de dfinir des zones de texte (vous en utilisez quand vous renseignez votre identifiant ou votre mot de passe sur un site). Chaque champ de texte ou lment du formulaire est nomm, ce nom sera celui de la variable transmise la page cense traiter le formulaire. Cette mthode est trs pratique, mais on ne passe dune page une autre par un formulaire que dans des situations prcises. Les cookies. Il est possible avec une fonction PHP simple de stocker une variable sur lordinateur du visiteur pour la rcuprer plus tard, cest un cookie. Problme, mme si lenvoi de variable est relativement simple, cela reste assez lourd lorsquil y a beaucoup de variables transmettre. De plus, en raison du fait quil sagit dcrire sur lordinateur du visiteur, celui-ci a accs au contenu des variables et peut ventuellement les modifier dans le but de se faire passer pour un autre. Les sessions. Cest la mthode la plus simple quand on veut faire passer des informations aussi gnriques que le login du visiteur. Une fois que lon a ouvert la session (il suffit dutiliser la fonction session_start(); lentre sur le site) la variable est utilise directement, si ce nest que lon ncrira pas $reponse mais $_SESSION[reponse] ; qui ne change pas normment de choses en pratique. Ici, il ny a pas rellement de problme de discrtion, lutilisateur peut voir les variables qui sont transmises, il y a de temps en temps des formulaires (pour modifier les donnes dun serveur par exemple), il ny a rien besoin de stocker sur lordinateur de lutilisateur car nimporte qui a le mme accs au rfrentiel et les sessions ne sont adaptes que lorsque chaque utilisateur est repr par un identifiant. Jai donc dcid de transmettre la plupart des informations travers les adresses et dutiliser des formulaires quand ce serait le mieux adapt.

16

Fonctionnement de la page index


Comme montr sur le schma et expliqu, la page centrale constamment appele est la page index.php. Ainsi, toute page du site est quivalente ceci :

Les parties au dessus, au dessous et sur les cots ne changent jamais et sont rdiges en dur en HTML et CSS (les langages de base du web mais qui contrairement PHP sont totalement statiques). La partie affichage se rsume en fait une srie de tests et un appel de fonctions dont voici le rsum (le terme entit reprsente ici un serveur physique, un serveur logique ou un groupe de machines physiques) : Si on demande un affichage { Si un nom dentit est spcifi { Rcuprer le nom de lentit Rcuprer le type de lentit (Serveur physique, serveur logique ou groupe de machines physiques) Afficher la fiche de lentit } Sinon { Rcuprer le type dentit demand Afficher la liste de toutes les entits du type demand }

} Si lon demande une criture (modification) { Rcuprer le nom de lentit modifier Rcuprer le type de lentit modifier Modifier lentit

17

} Si lon demande une suppression { Rcuprer le nom de lentit supprimer Rcuprer le type de lentit supprimer Supprimer lentit } Si on a fait une recherche { Afficher les rsultats de la recherche } Sinon { Afficher le message de bienvenue }

Vous pouvez retrouver le code en lui mme en annexe 2.

Fonctions daffichage et dcriture


PHP permet denvoyer des requtes une base de donnes en utilisant le langage SQL classique. Ainsi, dans le cas dun affichage, le code PHP rcupre ce qui doit tre affich (les variables du nom de lentit et son type sont rcuprs travers ladresse) avant de lancer une simple commande SQL SELECT. Et dans le cas de lcriture, en plus de ce qui est rcupr pour un affichage, PHP rcupre le nouveau contenu des champs du formulaire, fait appel aux fonctions de vrification et envoie une commande SQL UPDATE.

Fonctions de vrification
Le but des fonctions de vrification est de sassurer que les donnes prsentes dans le rfrentiel sont cohrentes, elles sont appeles chaque fois que les donnes associes une machine logique sont modifies travers le rfrentiel. Les quatre fonctions prsentes dans le fichier fonctionsVerification.php sont les suivantes : VerificationNomUnique Cette fonction vrifie lors de lajout dun nouveau serveur, dun nouveau groupe de serveur ou dun renommage que le nom de lentit nest pas dj utilis. Cette vrification est faite de

18

part la dclaration des noms en tant que clefs uniques dans la base de donne, mais le traitement de lerreur est fait plus en douceur ainsi (affichage dun message signalant dans la page plutt quune alerte provenant de la base de donnes). VerificationMachineDansGroupe Une machine logique est dfinie par la machine physique o elle est installe mais aussi par le groupe de machines auquel elle appartient. Cette fonction sassure de vrifier que la machine physique dsigne appartient bien au groupe de machines. VerificationMachinePhysiqueExiste VerificationGroupeMachinesPhysiqueExiste Ces deux fonctions vrifient que la machine physique et le groupe de machines physiques renseigns comme contenant la machine logique sont dj bien prsents dans le rfrentiel.

Si lune de ces quatre fonction dtecte un problme, la modification de la machine logique est annule et le problme signal lutilisateur.

19

Extraction des donnes


Le but lors de cette tape tait davoir une version fonctionnelle du rfrentiel afin que les quipes puissent en tester les possibilits et rflchir dventuelles modifications ou amliorations, il y avait donc ncessit daller chercher de vraies donnes. Mais il tait aussi intressant de ne pas perdre de temps programmer une version totalement indpendante de la version finale. Ainsi, sil ne pouvait me suffire de ne faire quune extraction des donnes un instant t, mon code devait tre le plus susceptible possible dtre rutilis dans la version finale o les donnes seraient mises jour rgulirement.

Choix des sources


Il me fallu dabord choisir les sources de donnes en tenant particulirement compte de la problmatique dcrite prcdemment : il fallait que les sources choisies soient le plus susceptibles possible dtre les sources dapprovisionnement de donnes finales. Du cot des machines logiques, plusieurs outils sont installs sur les serveurs pour remonter diffrentes informations et la plupart remontent des donnes susceptibles de mintresser. Mais un sortait du lot, UAM de Sigda. Il avait t dcid que ce serait probablement le futur rfrentiel en matire de machines logiques et tait en cours dvolution pour fonctionner sur tous les serveurs et remonter lintgralit des donnes utiles aux quipes. Ce fut donc logiquement que je dcidais dutiliser cet outil pour me servir de source dinformation. Pour ce qui tait des machines physiques, il me fallut choisir deux sources diffrentes pour lunivers Windows et lunivers UNIX car ces donnes sont remplies la main par deux quipes diffrentes. De plus, UAM remontant exclusivement des informations sur les machines logiques, il fallait que mes sources dinformation contiennent la liaison entre la machine physique et la machine logique. Pour Windows, le plus simple tait de rcuprer les donnes de lancien rfrentiel, MAGIC, qui tait encore ce moment l la rfrence pour lunivers de Microsoft. Pour UNIX, je dus me rsoudre prendre comme source dapprovisionnement les fichiers tableur mis jour manuellement par les quipes. Mais comme vous allez le voir plus loin, cela ne signifiait en aucun cas que je dus me rsoudre renseigner les donnes la main (le millier de machines tant allgrement dpass, ce ntait de toutes faons pas une solution envisageable).

Intrt du format .csv


Le format .csv allait le format que jallais le plus manipuler pendant cette phase de renseignement des donnes. Un fichier .csv est en fait un tableur extrmement simplifi. On peut louvrir en tant que tel avec Excel ou Calc de la suite openoffice par exemple, mais si on louvre en tant que fichier texte, on remarque que le contenu de chaque cellule est spar par un point virgule et chaque

20

ligne par un retour chariot (dautres signes de ponctuation peuvent tre choisis, cest intgralement paramtrable que ce soit lors de la cration du .csv comme de sa lecture). Dans mon cas, cela se passa donc ainsi : Cot rcupration des informations : - Lextraction de la base de donnes MAGIC me fut fournie en tant quun gros .csv. - Loutil dUAM servant lexportation de donnes propose de faire cette exportation dans ce format. - Tout fichier tableur peut tre enregistr en tant que .csv (pour vous en rendre compte, ouvrez un tableur et cliquez sur enregistrez sous, vous remarquerez dans le menu droulant des formats que le .csv est propos). Et ct traitement, PHP propose une palette de fonctions prvues pour traiter les fichiers .csv. Ainsi, je pouvais slectionner en PHP les donnes qui mintressaient, les traiter et les organiser comme cela mentendait. Voici un petit bout de code pour illustrer ces fonctionnalits (les mots derrires les caractres // sont des commentaires expliquant le code sans linfluencer) : if (($handle = fopen("rapport.csv", "r")) !== FALSE) //Si le fichier rapport.csv souvre correctement { while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) //Tant quil y a des lignes { $DernierRetour = $data[1]; //$DernierRetour contient le contenu de la premire case $Fonction=$data[3]; //$Fonction contient le contenu de la troisime case //On peut alors travailler sur la variable $DernierRetour $mois=(int)substr($DernierRetour, 3, 2); $annee=(int)substr($DernierRetour, 6, 2);

Mise au format des donnes

MAGIC
La base de donne t extraite et tant donn quelle ne sera plus mise jour il suffisait de traiter le .csv comme voulu une unique fois.

UAM
Un accs au serveur dadministration de loutil ma t donn, la version spciale dUAM installe sur ce serveur (contrairement aux versions auxquelles on peut accder depuis nos postes de travail qui permettent seulement daller voir les informations) a comme fonctionnalit de permettre de mettre en place des extractions de donnes rgulires.

21

Jeu donc chercher quels champs mintressaient et choisir une extraction au format .csv, .csv qui devait par la suite tre trait en PHP. Actuellement, la mise jour automatique ntant pas encore fonctionnelle, je fais des exportations de .csv la main. Il me suffira de rendre la gnration du .csv automatique et rgulire sur un emplacement accessible depuis le serveur contenant le rfrentiel et la mise jour sera entirement automatique.

Fichiers tableur
Ce fut lextraction la plus complique. Comme crit plus haut, transformer un fichier Excel ou calc en .csv nest pas une difficult. Par contre, ces fichiers ont ts crits par des humains pour des humains. Du coup, de nombreuses exceptions existent dans les donnes (dans une mme cellule, si le formalisme de base est nommachinephysique (nommachinelogique) il va par exemple pas avoir le mme nombre despaces ou si les machines logiques sappellent toujours dsap1, dsap2 il ne va y avoir crit que dsap1, 2, 3 Je du donc reprendre une bonne partie des fichiers pour les normer et quils soient ainsi traits correctement par le code PHP. Jai nanmoins dialogu avec les quipes et si jamais les tableurs devenaient une source dinformations officielle du rfrentiel ils sen tiendraient un formalisme rigoureux.

22

Mise en production
Une fois la version incluant les donnes termine et teste jeus la prsenter aux chefs de services dont les quipes taient susceptibles dutiliser loutil. Ceux-ci validrent la solution et MAGIC tant sur le point dtre arrt il tait temps de passer le rfrentiel en production. Chez Informatique CDC il peut y avoir jusqu quatre tapes dans la cration dun outil : le dveloppement, la recette, la pr-production et la production, chacune de ces tapes tant mise en place sur des serveurs diffrents (plus ou approche de la production plus le serveur est assembl avec des composants fiables et rapides et plus sa disponibilit est garantie, c'est-dire quun serveur de production sera beaucoup plus rapidement identifi comme dfectueux et rpar quun serveur de dveloppement). Le rfrentiel nayant t jusqu prsent en dveloppement la problmatique de la recherche dun nouveau serveur simposait.

23

Choix de sassocier avec Vision-DPI


Le problme ntait pas rellement de trouver des ressources disponibles pour installer le rfrentiel, surtout que celui-ci ne ncessite que peu de puissance pour fonctionner dans sa version actuelle, mais plutt dassurer une cohrence avec dautres outils. Cest ainsi que plutt que dinstaller ma ralisation sur un serveur ddi elle seule, nous dcidmes de nous associer avec Vision-DPI. Vision-DPI est un outil en cours de dveloppement par une quipe (mais dj pass en production depuis plusieurs mois) et qui assure la fonction de rfrentiel infrastructures, c'est--dire quil va donner tous les renseignements au niveau des logiciels installs sur les machines logiques (serveurs webs, serveurs dapplications, bases de donnes). Nos deux rfrentiels assembls au sein dun mme outil donnent ainsi rapidement accs la plupart des informations utiles au quotidien aux quipes. Le leur donnant la vision logicielle et le mien la vision serveur. En pratique, aucun des deux outils nutilise un seul serveur pour des soucis dorganisation. Ci-dessous un schma reprsentant larchitecture choisie pour hberger les solutions (mon outil est indiqu par les lettres DII et Vision-DPI par DIA pour reprsenter nos services respectifs) :

A noter quau final les deux outils ont fusionns au point que Vision-DPI soit devenu le nom reprsentant la somme des deux. Mon outil sappelle Vision DPI-DII et le leur Vision DPIDIA.

24

Adaptation de linterface graphique


Avant mme de penser installer le rfrentiel sur les serveurs finaux, il me fallu tout de mme lui donner une vritable interface graphique. En effet, pour le dveloppement je me contentais dafficher les informations plus ou moins en brut en texte noir sur blanc sans rellement penser une interface pratique. Pour vous donner une ide, voici une page du rfrentiel alors que le dveloppement tait fraichement termin :

Lors de la cration dun site Internet il y a deux principaux moyens pour concevoir linterface graphique. Soit il faut toutes les commandes HTML et CSS la main soit on utilise un logiciel pour sen charger.

25

Tout faire la main est loin dtre aberrant, on a ainsi une libert immense en matire de conception et on peut faire appel toutes les possibilits offertes par ces langages. Par contre, cest beaucoup long. On va ainsi utiliser cette solution lors de la conception de sites trs riches graphiquement (par exemple des sites commerciaux accessibles sur lInternet public). Dans notre cas, il suffisait davoir une interface fonctionnelle. Lquipe en charge de la conception de Vision DPI a donc prfr cette possibilit en utilisant le logiciel Dreamweaver de la socit Adobe trs pris des amateurs en conception Web et cest logiquement que jai fait de mme. De plus, lquipe avait conu des modles de pages que je pus adapter rapidement, cela eut de plus lavantage de donner aux deux rfrentiels une interface proche ce qui tait plus cohrent vu quils allaient au final faire partie dune seule et mme application. Vous pouvez voir le rsultat final dans les captures dcran proposes dans les chapitres prcdents.

Migration sur les serveurs


La principale diffrence mon niveau entre le serveur de dveloppement et les serveurs de production fut le passage dun environnement en Windows serveur un environnement Linux. Il ny eut pas rellement de difficults lors de cette tape, le langage PHP tant indpendant du systme dexploitation sur lequel le serveur web est install. Il me suffit de refaire mes tests une fois linstallation faite pour vrifier que la version du serveur web installe ne forait pas quelques changements dans le code.

26

Conclusion et volutions futures


Le rfrentiel est maintenant en production, il ne manque qu mettre en place la mise jour automatique des donnes, ce qui est prvu pour cet t. Finalement, ce ne seront pas les fichiers Excel qui seront mis contribution pour renseigner ltat du parc de machines physiques mais un rfrentiel de gestion de stocks qui bien que contenant de nombreuses donnes qui me sont inutiles (celles rfrant au matriel de bureau par exemple) est suffisamment renseign au niveau des serveurs. Ce que jai ralis nest quune premire pierre pour mettre en place une mthode de gestion du parc serveur plus respectueuse des recommandations ITIL. Si pour linstant Vision DPIDII ne contient que des donnes directement lies aux machines physiques, logiques, la manire dont elles fonctionnent en groupe et quelles applications elles supportent, il est prvu que soient rajouts par la suite des donnes rfrant au stockage (le stockage tant assur par un SAN), au rseau voire mme des lments comptables (tels que les diffrentes dates de fin de garantie et la puissance rellement utilise en vue daider la facturation aux clients). La mission est pour linstant considre comme un succs. Jai russi mettre en place un outil cr pour et la demande prcise des quipes recensant les informations ncessaires au quotidien. Cette mission ma montr une difficult diffrente de celle que javais connue habituellement lors dautres projets personnels ou en entreprise. Alors que normalement le dfi est plutt au niveau du dveloppement en lui-mme et des problmes de code, ici ce fut au niveau de la rponse au besoin et de la communication. Russir saisir et synthtiser ce que je voulais une demi-douzaine dquipes simultanment et sadapter aux opportunits (trouver les bons outils pour sapprovisionner en donne et sassocier Vision-DPI) fut trs intressant.

27

Glossaire
Machine Physique : Une machine physique est tout simplement le serveur rel prsent en salle des machines. Il peut tre de type tour (de plus en plus rarement), rack (quand il y a besoin de beaucoup de puissance pour une application prcise) ou de plus en plus frquemment en lame. Pour savoir ce que reprsentent ces trois types de serveurs, reportez vous la dfinition de Blade center. Machine Logique : Une machine logique reprsente un systme logique. Le plus souvent, il va soit sagir dun ou plusieurs systmes dexploitations installs directement sur une machine physique (tel que Windows sur lordinateur dun particulier ventuellement associ un Mac OS ou un Linux) ou bien dune machine virtuelle installe sur un cluster. Cluster : Aussi appel grappe de serveurs ou ferme de calcul, le cluster permet de rassembler la puissance de plusieurs serveurs pour en faire une sorte de trs gros serveur. Si un serveur tombe sa charge est directement transmise aux autres qui continuent sans interruption. La notion de groupe de serveurs physiques trouve donc son sens, si une machine logique est rattache un serveur physique faisant partie dun cluster, linformation la plus intressante nest plus tellement la machine isole. Blade center : Ou rack de lames. Parmi les diffrents types de serveurs il y a principalement les serveurs en tour (qui ont la forme de lunit centrale dun ordinateur de bureau classique), les serveurs en rack aussi appels familirement pizzas en raison de leur ressemblance avec une boite de pizza et les lames. Une lame est un serveur qui va quasiment se rsumer une simple carte mre prvue pour sinstaller en gnral par douze dans un rack de lames qui assure lalimentation lectrique, la connexion rseau et le refroidissement de lensemble. Cela permet daccumuler un grand nombre de serveurs sur un espace rduit et de limiter le nombre de cbles, vu quil suffit d peine plus de branchements pour une douzaines de lames que pour un unique serveur tour ou en rack. SAN : Storage Area Network. Plutt que dinstaller des disques durs sparment sur chaque machine physique, ce qui empche une optimisation des besoins rels de chaque application, le SAN va centraliser un grand nombre de disques durs et le mettre disposition sur le rseau. Ainsi, on peut ne donner que quelques gigas une application peu gourmande et plusieurs tras une autre comme sil ne sagissait que dun unique gros disque dur. Serveur web ou dapplication : Ces dnominations peuvent porter confusion, ce que lon appelle un serveur web ou un serveur dapplication peut tre la machine physique/logique qui fournit la puissance pour faire fonctionner lapplication ou bien le logiciel qui a cette tache (le serveur web associ PHP est par exemple le plus souvent Apache). Cest dans ce second sens quil fallait prendre les expressions lors du chapitre traitant de Vision-DPI.

28

Bibliographie
Pour tout ce qui tait des besoins en matire de codage en PHP jai pris comme rfrence la documentation officielle en ligne http://php.net Les problmatiques envers la base de donnes MySQL ce fut la documentation officielle en ligne http://www.mysql.com/ En cas de problme malgr les documentations je me permettais de demander de laide (sans prciser lenjeu global de lapplication) sur les forums du site franais quasi rfrence http://www.developpez.com/

29

Annexes

Annexe 1
--- Table structure for table `groupesmachinesphysiques` -CREATE TABLE IF NOT EXISTS `groupesmachinesphysiques` ( `Nom` varchar(255) NOT NULL, `Description` text NOT NULL, UNIQUE KEY `NomGroupe` (`Nom`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- ---------------------------------------------------------- Table structure for table `liaisongroupesmachinesphysiques` -CREATE TABLE IF NOT EXISTS `liaisongroupesmachinesphysiques` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `MachinePhysique` varchar(255) NOT NULL, `GroupeMachinesPhysiques` varchar(255) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; -- ---------------------------------------------------------- Table structure for table `machineslogiques` -CREATE TABLE IF NOT EXISTS `machineslogiques` ( `Nom` varchar(255) NOT NULL, `MachinePhysique` varchar(255) NOT NULL, `GroupeMachinesPhysiques` varchar(255) NOT NULL, `NombreProcesseurs` varchar(255) NOT NULL, `Memoire` varchar(255) NOT NULL, UNIQUE KEY `NomMachineLogique` (`Nom`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- ---------------------------------------------------------

30

-- Table structure for table `machinesphysiques` -CREATE TABLE IF NOT EXISTS `machinesphysiques` ( `Nom` varchar(255) NOT NULL, `NombreProcesseurs` varchar(255) NOT NULL, `Memoire` varchar(255) NOT NULL, UNIQUE KEY `NomMachinePhysique` (`Nom`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Annexe 2
if(isset($_GET['affichage'])) { if(isset($_GET['nom'])) { $nom = $_GET['nom']; if($_GET['table']=='machineslogiques' || $_GET['table']=='machinesphysiques' || $_GET['table']=='groupesmachinesphysiques') { $table = $_GET['table']; afficherOccurence($table,$nom); } } elseif(!isset($_GET['nom'])) { if($_GET['table']=='machineslogiques' || $_GET['table']=='machinesphysiques' || $_GET['table']=='groupesmachinesphysiques') { $table = $_GET['table']; if($_GET['table']=='machineslogiques') afficherListe('machineslogiques','*'); elseif($_GET['table']=='machinesphysiques') afficherListe('machinesphysiques','*'); elseif($_GET['table']=='groupesmachinesphysiques') afficherListe('groupesmachinesphysiques','*'); } } } elseif(isset($_GET['ecriture'])) {

31

if(($_GET['table']=='machineslogiques' || $_GET['table']=='machinesphysiques' || $_GET['table']=='groupesmachinesphysiques')) { $table = $_GET['table']; if(isset($_GET['nom'])) { $nom = $_GET['nom']; ecrireEntite($table,$nom); } }

} elseif(isset($_GET['suppression'])) { $table = $_GET['table']; $nom = $_GET['nom']; if($table=='machineslogiques' || $table=='machinesphysiques') supprimerServeur($table,$nom); elseif($table=='groupesmachinesphysiques') supprimerGroupeMachinesPhysiques($nom); } elseif(isset($_GET['recherche'])) { $recherche=$_GET['recherche']; echo'<p> Les machines physiques correspondant &agrave; la recherche sont : <br/><br/>'; rechercheTable('machinesphysiques',$recherche); echo'</p>'; echo'<p> Les machines logiques correspondant &agrave; la recherche sont : <br/><br/>'; rechercheTable('machineslogiques',$recherche); echo'</p>'; echo'<p> Les groupes de machines physiques correspondant &agrave; la recherche sont : <br/><br/>'; rechercheTable('groupesmachinesphysiques',$recherche); echo'</p>'; }

32

else { echo'<p><br/><br/>Bienvenue dans le r&eacute;f&eacute;rentiel serveur de DII.<br/><br/> Veuillez naviguer dans les diff&eacute;rents menus &agrave; partir des liens &agrave; gauche.</p>'; }

33

Вам также может понравиться