Académique Documents
Professionnel Documents
Culture Documents
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.
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).
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.
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.
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
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.
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
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
15
16
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 }
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
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);
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
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
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.
26
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
} 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 à la recherche sont : <br/><br/>'; rechercheTable('machinesphysiques',$recherche); echo'</p>'; echo'<p> Les machines logiques correspondant à la recherche sont : <br/><br/>'; rechercheTable('machineslogiques',$recherche); echo'</p>'; echo'<p> Les groupes de machines physiques correspondant à la recherche sont : <br/><br/>'; rechercheTable('groupesmachinesphysiques',$recherche); echo'</p>'; }
32
else { echo'<p><br/><br/>Bienvenue dans le référentiel serveur de DII.<br/><br/> Veuillez naviguer dans les différents menus à partir des liens à gauche.</p>'; }
33