|
|
@ -10,7 +10,7 @@ |
|
|
|
%packages |
|
|
|
\usepackage[utf8]{inputenc} |
|
|
|
\usepackage[francais]{babel} |
|
|
|
\usepackage{graphicx}\graphicspath{{pictures/}} |
|
|
|
\usepackage{graphicx}\graphicspath{{pix/}} |
|
|
|
\usepackage{float} |
|
|
|
\usepackage[T1]{fontenc} |
|
|
|
\usepackage{color} |
|
|
@ -44,12 +44,52 @@ |
|
|
|
\includepdf[pages={1}]{Couvertures.pdf} |
|
|
|
|
|
|
|
\tableofcontents |
|
|
|
\listoffigures |
|
|
|
|
|
|
|
\chapter*{Introduction} |
|
|
|
\addcontentsline{toc}{chapter}{Introduction} |
|
|
|
\par |
|
|
|
Le cursus UTBM que je suis me mène à devoir partir en stage, et celui-ci est mon deuxième. Le premier était un simple |
|
|
|
stage ouvrier d'un mois, mais celui-ci, le ST40, s'étend sur un semestre, tout comme le dernier que j'aurai à effectuer |
|
|
|
au Printemps 2017. |
|
|
|
\par |
|
|
|
Lorsque j'ai postulé auprès de plusieurs entreprises pour décrocher un stage au Printemps dernier, \textbf{Faurecia} est une de |
|
|
|
celles à m'avoir répondu. J'ai donc eu un entretien avec M. Jean-Noël Gueutal, qui s'était très bien passé, et le sujet |
|
|
|
m'avait alors beaucoup interessé. Mais très peu de temps après, le sujet a du changer pour de multiples raisons, et je |
|
|
|
restais quelque peu sceptique quant à l'interêt de ce stage. Les procédures étant engagées, j'ai tout de même signé ma |
|
|
|
convention, et le 7 Septembre 2015, je me suis présenté au Centre Technique de Seloncourt pour débuter ma période de stage |
|
|
|
qui devait durer jusqu'au 19 Février 2016. |
|
|
|
\par |
|
|
|
C'est Jean-Noël qui m'a accueilli, et lorsque Mme Murielle Mathieu, ma tutrice, m'a pris en charge, j'ai alors commencé |
|
|
|
à découvrir ce qu'on attendait de moi au travers du sujet que l'on m'avait proposé. Cela s'annoncait peu technique, mais |
|
|
|
toutefois fort enrichissant, car j'allais découvrir les dessous du fonctionnement de l'informatique d'une grande |
|
|
|
entreprise, dont le domaine d'activité est tout autre que ce que je connaissais. |
|
|
|
\par |
|
|
|
Par la suite, j'ai donc eu à m'intégrer entre plusieurs équipes afin d'accomplir en premier lieu un travail enrichissant |
|
|
|
pour ma connaissance de l'entreprise, et dans un second temps une tâche très épanouissante d'un point de vue technique. |
|
|
|
\vskip 1em |
|
|
|
\par |
|
|
|
C'est cette double mission qui va donc être détaillée dans ce rapport. |
|
|
|
|
|
|
|
\chapter*{Remerciements} |
|
|
|
\addcontentsline{toc}{chapter}{Remerciements} |
|
|
|
\par |
|
|
|
Je tiens avant tout à addresser mes remerciements aux nombreuses personnes avec qui j'ai travaillé pendant ces derniers |
|
|
|
mois. |
|
|
|
\par |
|
|
|
Plus spécifiquement, je tiens à remercier Mme. Murielle Mathieu pour avoir été ma tutrice tout au long de ce stage, et |
|
|
|
pour m'avoir fait confiance dans les missions qu'elle a pu me confier. |
|
|
|
\par |
|
|
|
Je remercie également M. Jean-Noël Gueutal pour m'avoir proposé ce stage, et pour m'avoir fait découvrir l'entreprise |
|
|
|
durant mes débuts chez \textbf{Faurecia}. Son équipe, avec entre autre Vincent et Yves m'a également permis d'avoir un |
|
|
|
environnement de travail sous GNU/Linux avec lequel j'ai pu être efficace très rapidement, doit également être |
|
|
|
remerciée. |
|
|
|
\par |
|
|
|
Merci aussi à Mohamed, pour m'avoir aidé dans ma mission concernant le monitoring, et merci à Joël pour ses conseils |
|
|
|
des plus utiles sur le développement de \textbf{Sappin}. |
|
|
|
\par |
|
|
|
Enfin, merci à tous les collègues avec qui j'ai pu passer des bons moments pendant les pauses de midi, notamment |
|
|
|
l'équipe du PLM avec qui j'ai pu tous les jours aller boire un thé en échangeant sur les sujets les plus variés. |
|
|
|
|
|
|
|
\chapter{Faurecia} |
|
|
|
\section{Un groupe mondial} |
|
|
@ -81,6 +121,12 @@ se renouveler, et se maintenir à la pointe dans chacun de leur domaine d'expert |
|
|
|
\par |
|
|
|
Il peut être interessant de voir quelques chiffres pour mieux se représenter l'impact de \textbf{Faurecia} au niveau |
|
|
|
mondial dans le secteur de l'automobile. |
|
|
|
\begin{figure}[H] |
|
|
|
\centering |
|
|
|
\includegraphics[width=1\linewidth]{repartition_faurecia_monde.png} |
|
|
|
\caption{Repartition des sites de \textbf{Faurecia}} |
|
|
|
Janvier 2015 |
|
|
|
\end{figure} |
|
|
|
\par |
|
|
|
Présent dans 34 pays, avec plus de 330 sites de production, la société n'a pas de mal à traiter directement avec des |
|
|
|
constructeurs du monde entier. |
|
|
@ -116,6 +162,12 @@ secteurs en pleine expansion: |
|
|
|
\item 27 sites de production / 3 centres de R\&D |
|
|
|
\end{itemize} |
|
|
|
\end{description} |
|
|
|
\begin{figure}[H] |
|
|
|
\centering |
|
|
|
\includegraphics[width=1\linewidth]{repartition_vente_faurecia.png} |
|
|
|
\caption{Repartition des ventes de \textbf{Faurecia}} |
|
|
|
Mars 2015 |
|
|
|
\end{figure} |
|
|
|
|
|
|
|
\subsection{Présentation des activités} |
|
|
|
\par |
|
|
@ -175,34 +227,34 @@ Cette activité est présente dans 9 pays avec 32 sites de production et 9 centr |
|
|
|
\section{Le centre technique de Seloncourt} |
|
|
|
\par |
|
|
|
Construit en 1998, le Centre Technique de Seloncourt servait à l'origine comme plateforme de tests des différents |
|
|
|
produits Faurecia. On y trouvait entre autre une catapulte pour tester les sièges, mais aussi du benchmarking et de |
|
|
|
produits \textbf{Faurecia}. On y trouvait entre autre une catapulte pour tester les sièges, mais aussi du benchmarking et de |
|
|
|
l'analyse de la concurrence. |
|
|
|
\par |
|
|
|
En 2001, le site devient un centre informatique, accueillant plusieurs services, dont le Centre de Support Informatique |
|
|
|
de \textbf{Faurecia} jusqu'en 2014, mais aussi les équipes Système, Application de Production, Applications |
|
|
|
Just-In-Time, ou encore des Centres de Compétence Windows, et même AS/400! |
|
|
|
Just-In-Time, ou encore des Centres de Compétence \emph{Windows}, et même \emph{AS/400}! |
|
|
|
|
|
|
|
\section{Mon service: Global Infrastructure and Systems Operations} |
|
|
|
\subsection{Un service de GIS} |
|
|
|
\subsection{Un service de \textbf{GIS}} |
|
|
|
\par |
|
|
|
L'informatique est, au sein de \textbf{Faurecia}, un service transversal et central. Tout les autres services en ont |
|
|
|
besoin, et cela permet de maintenir une cohérence entre les différents Business Groups au niveau des méthodes et des |
|
|
|
outils informatiques. |
|
|
|
\par |
|
|
|
Ce service global est assuré par GIS (Group Information System), qui est composé de plus de 1100 personnes réparties au |
|
|
|
travers le monde, pour assurer une disponibilité 24H/24. Deux types de services existent et collaborent au sein de GIS: |
|
|
|
Ce service global est assuré par \textbf{GIS} (Group Information System), qui est composé de plus de 1100 personnes réparties au |
|
|
|
travers le monde, pour assurer une disponibilité 24H/24. Deux types de services existent et collaborent au sein de \textbf{GIS}: |
|
|
|
les services centraux et les services locaux. |
|
|
|
\par |
|
|
|
Les services locaux sont en charge de l'informatique sur chaque site. En revanche, les services centraux peuvent être |
|
|
|
répartis sur plusieurs sites, et sont en charge de la gestion, l'exploitation, le support, et tout ce qui grative autour |
|
|
|
des applications utilisées à grande échelle par le groupe, comme les réseaux, la messagerie, l'ERP, les applications de |
|
|
|
des applications utilisées à grande échelle par le groupe, comme les réseaux, la messagerie, l'\textbf{ERP}, les applications de |
|
|
|
finance, de gestion des programmes clients, ou encore de la sécurité. |
|
|
|
|
|
|
|
\subsection{Rôle dans Faurecia} |
|
|
|
\subsection{Rôle dans \textbf{Faurecia}} |
|
|
|
\par |
|
|
|
GISO (Global Infrastructure and Systems Operations) est le service dont je dépendais pendant mon stage. Il est |
|
|
|
\textbf{GISO} (Global Infrastructure and Systems Operations) est le service dont je dépendais pendant mon stage. Il est |
|
|
|
responsable de la disponibilité des applications centrales, et de leur sécurité, c'est à dire que les applications dont |
|
|
|
GISO est en charge doivent être toujours opérationnelles, sans aucune défaillance visible pour les utilisateurs. |
|
|
|
\textbf{GISO} est en charge doivent être toujours opérationnelles, sans aucune défaillance visible pour les utilisateurs. |
|
|
|
\par |
|
|
|
Il doit aussi fournir un support pour ces applications en permanence, tout en étant prêt à réagir en cas de problème, ou |
|
|
|
que ce dernier soit dans l'infrastructure. C'est donc une tâche relativement lourde de responsabilité, car cela a des |
|
|
@ -210,51 +262,51 @@ répercussion sur l'ensemble de la production mondiale de \textbf{Faurecia}. |
|
|
|
|
|
|
|
\subsection{Activités} |
|
|
|
\par |
|
|
|
Le service GISO est divisé en trois équipes: |
|
|
|
Le service \textbf{GISO} est divisé en trois équipes: |
|
|
|
\begin{description} |
|
|
|
\item[Monitoring] qui assure la surveillance des machines et applications via des outils de monitoring tel |
|
|
|
\emph{Nagios}. |
|
|
|
\item[Systems] qui gère les infrastructures mise en œuvre pour supporter les applications centrales. Cela comporte |
|
|
|
par exemple les serveurs, physiques ou virtuels, les systèmes de clusters, le réseaux, etc... |
|
|
|
\item[Applications] qui gère les applications que les utilisateurs des sites de production et R\&D vont utiliser, |
|
|
|
comme par exemple l'ERP \emph{SAP}. |
|
|
|
comme par exemple l'\textbf{ERP} \emph{SAP}. |
|
|
|
\end{description} |
|
|
|
|
|
|
|
\chapter{Context du stage} |
|
|
|
\section{SAP} |
|
|
|
\subsection{Qu'est-ce qu'un ERP?} |
|
|
|
\subsection{Qu'est-ce qu'un \textbf{ERP}?} |
|
|
|
\par |
|
|
|
Un ERP (Enterprise Resource Planning) est un progiciel, c'est à dire un ensemble de logiciels n'en constituant qu'un |
|
|
|
Un \textbf{ERP} (Enterprise Resource Planning) est un progiciel, c'est à dire un ensemble de logiciels n'en constituant qu'un |
|
|
|
seul, et capable de répondre au besoin d'une entreprise dans autant de domaines qu'il a de modules. Les plus courants de |
|
|
|
ces modules sont généralement les achats, les stocks, la production, les ventes, la distribution, les salaires, la |
|
|
|
comptabilité, les finances et la trésorerie. |
|
|
|
\par |
|
|
|
Pour faire simple, l'ERP est l'application centrale entre les très nombreux et divers services d'une entreprise. Les |
|
|
|
Pour faire simple, l'\textbf{ERP} est l'application centrale entre les très nombreux et divers services d'une entreprise. Les |
|
|
|
ouvriers sur les chaînes de fabrication, les comptables, les ingénieurs de recherche et développement, et beaucoup |
|
|
|
d'autre personnes sont amené à utiliser l'ERP pour synchroniser toutes les informations à partir d'un outil unique et |
|
|
|
d'autre personnes sont amené à utiliser l'\textbf{ERP} pour synchroniser toutes les informations à partir d'un outil unique et |
|
|
|
global. |
|
|
|
\par |
|
|
|
SAP (Systems, Applications and Products for data processing) est un des ERP les plus connus. Son architecture modulaire |
|
|
|
\textbf{SAP} (Systems, Applications and Products for data processing) est un des \textbf{ERP} les plus connus. Son architecture modulaire |
|
|
|
et multi-fonctionnelle en font un outil d'une grande flexibilité pouvant s'adapter à la majorité des entreprises. De |
|
|
|
plus, si des fonctionnalités viennent à manquer il est toujours possible de les développer à l'aide de son environnement |
|
|
|
de développement et du language ABAP qu'il intègre. |
|
|
|
de développement et du language \emph{ABAP} qu'il intègre. |
|
|
|
|
|
|
|
\subsection{SAP chez Faurecia} |
|
|
|
\subsection{SAP chez \textbf{Faurecia}} |
|
|
|
\subsubsection{Déploiement et historique} |
|
|
|
\par |
|
|
|
Le déploiement de SAP au sein de Faurecia remonte à 2009, avec le lancement du projet FCS (Faurecia Core System). |
|
|
|
Le déploiement de \textbf{SAP} au sein de \textbf{Faurecia} remonte à 2009, avec le lancement du projet \textbf{FCS} (Faurecia Core System). |
|
|
|
L'application est mise en place dans un centre de données informatiques en Allemagne, à Hagenbach (HGB). L'entreprise |
|
|
|
bénéficie alors d'un ERP commun à toutes les usines, soit plus de 183 sites à travers le monde, pour environ 41500 |
|
|
|
bénéficie alors d'un \textbf{ERP} commun à toutes les usines, soit plus de 183 sites à travers le monde, pour environ 41500 |
|
|
|
utilisateurs quotidiens. |
|
|
|
\par |
|
|
|
Les conséquences de l'utilisation de SAP sont nombreuses, en bien comme en mal. Il apporte certes, entre autre, |
|
|
|
Les conséquences de l'utilisation de \textbf{SAP} sont nombreuses, en bien comme en mal. Il apporte certes, entre autre, |
|
|
|
l'avantage d'être centralisé, c'est à dire que tout le monde a le même outil, et on évite ainsi les problèmes de |
|
|
|
synchronisation de production, mais en revanche, cela apporte un point très critique pour la gestion informatique de cet |
|
|
|
ERP. En effet, la moindre indisponibilité ralenti, voir stoppe la production, ce qui empêche alors de livrer les |
|
|
|
\textbf{ERP}. En effet, la moindre indisponibilité ralenti, voir stoppe la production, ce qui empêche alors de livrer les |
|
|
|
clients, et a donc des conséquences financières directes. |
|
|
|
\subsubsection{Architecture} |
|
|
|
\par |
|
|
|
La quasi totalité des modules SAP existants sont utilisés chez Faurecia: |
|
|
|
La quasi totalité des modules \textbf{SAP} existants sont utilisés chez \textbf{Faurecia}: |
|
|
|
\begin{description} |
|
|
|
\item[ECC] logistique, gestion comptable et ressources humaines |
|
|
|
\item[PI/PO] échange de fichiers (clients/fournisseurs en interne et en externe) |
|
|
@ -277,7 +329,7 @@ De plus, pour chaque module, plusieurs environnements, c'est à dire plusieurs i |
|
|
|
(physique, applicative et données) identique à l’environnement de production |
|
|
|
\item[Production] permet de délivrer les fonctionnalités aux utilisateurs |
|
|
|
\end{description} |
|
|
|
% TODO ajouter landscape SAP en annexe |
|
|
|
% TODO ajouter landscape \textbf{SAP} en annexe |
|
|
|
\vskip 3mm |
|
|
|
L'environnement de production étant utilisé en permanence par les utilisateurs finaux, c'est celui qui est le plus |
|
|
|
critique, contrairement aux autres, qui ne servent globalement que pour des tests. |
|
|
@ -286,42 +338,42 @@ critique, contrairement aux autres, qui ne servent globalement que pour des test |
|
|
|
\subsection{Origine} |
|
|
|
\par |
|
|
|
\textbf{FCS Business Continuity} (FCS BC) est le projet sur lequel j'ai travaillé pendant mon stage. Il a été démarré en Juin 2015, |
|
|
|
à la suite de plusieurs incidents au niveau de SAP. Ces incidents étaient d'ordre technique, liés principalement aux |
|
|
|
à la suite de plusieurs incidents au niveau de \textbf{SAP}. Ces incidents étaient d'ordre technique, liés principalement aux |
|
|
|
serveurs, et la versions des logiciels utilisés dessus. La décision fût donc prise de mettre en place une sécurisation |
|
|
|
de l'ERP, et le projet FCS BC fûr confié à Murielle. |
|
|
|
de l'\textbf{ERP}, et le projet \textbf{FCS BC} fûr confié à Murielle. |
|
|
|
|
|
|
|
\subsection{Objectifs du projet} |
|
|
|
\par |
|
|
|
Il a pour but de supprimer les activités informatiques centrales du site de Hagenbach pour les transférer à Marcoussis |
|
|
|
(EDC), et de sécuriser les environnements SAP. Cela passe par plusieurs points critiques: |
|
|
|
(EDC), et de sécuriser les environnements \textbf{SAP}. Cela passe par plusieurs points critiques: |
|
|
|
\begin{itemize} |
|
|
|
\item Transférer les environnements SAP hébergés à Hagenbach dans le Data Center de Marcoussis |
|
|
|
\item Transférer les environnements \textbf{SAP} hébergés à Hagenbach dans le Data Center de Marcoussis |
|
|
|
\item Mettre en place une séparation physique et logique des environnements transférés entre les différentes régions |
|
|
|
géographiques de Faurecia (Europe/Asie/Amérique/Central) |
|
|
|
\item Déplacer les environnements SAP hors production dans le nouveau Data Center de Clichy (depuis HGB et/ou depuis |
|
|
|
géographiques de \textbf{Faurecia} (Europe/Asie/Amérique/Central) |
|
|
|
\item Déplacer les environnements \textbf{SAP} hors production dans le nouveau Data Center de Clichy (depuis HGB et/ou depuis |
|
|
|
EDC) |
|
|
|
\end{itemize} |
|
|
|
\vskip 3mm |
|
|
|
\par |
|
|
|
Ce projet apporte plusieurs avantages non négligeables: |
|
|
|
\begin{itemize} |
|
|
|
\item Éviter de perdre tous les modules SAP de toutes les régions en cas de problème en les séparant tant |
|
|
|
\item Éviter de perdre tous les modules \textbf{SAP} de toutes les régions en cas de problème en les séparant tant |
|
|
|
physiquement que logiquement |
|
|
|
\item Réduire les impacts pour les sites de production FAURECIA: |
|
|
|
\item Réduire les impacts pour les sites de production \textbf{Faurecia}: |
|
|
|
\begin{itemize} |
|
|
|
\item Limite du périmètre affecté en cas de problème |
|
|
|
\item Être capable de planifier des opérations plus facilement région par région |
|
|
|
\end{itemize} |
|
|
|
\item Standardiser les serveurs et solutions informatiques SAP quelque soit la région géographique qu'ils supportent |
|
|
|
\item Sécuriser la production FAURECIA avec une solution de reprise d'activité disponible dans un Data Center distant |
|
|
|
\item Standardiser les serveurs et solutions informatiques \textbf{SAP} quelque soit la région géographique qu'ils supportent |
|
|
|
\item Sécuriser la production \textbf{Faurecia} avec une solution de reprise d'activité disponible dans un Data Center distant |
|
|
|
\item Libérer le site d'Hagenbach des contraintes liées à un Data Center |
|
|
|
\end{itemize} |
|
|
|
|
|
|
|
\subsection{Ma position dans FCSBC} |
|
|
|
\subsection{Ma position dans \textbf{FCS}BC} |
|
|
|
\par |
|
|
|
Mon rôle dans le projet Business Continuity a été d'assurer le suivi du monitoring pendant les phases de déplacement (ou |
|
|
|
\emph{move}) des environnements SAP. J'étais une sorte de point central entre Murielle, qui coordonnait le projet, |
|
|
|
l'équipe système qui s'occupait de déplacer les machines, l'équipe SAP qui déplacait les applications une fois que les |
|
|
|
\textbf{move}) des environnements \textbf{SAP}. J'étais une sorte de point central entre Murielle, qui coordonnait le projet, |
|
|
|
l'équipe système qui s'occupait de déplacer les machines, l'équipe \textbf{SAP} qui déplacait les applications une fois que les |
|
|
|
nouvelles machines étaient en place, et l'équipe monitoring, qui s'occupait de la configuration de \emph{Nagios}. |
|
|
|
|
|
|
|
\section{Nagios} |
|
|
@ -335,7 +387,7 @@ qui tournent sur ces dernières. |
|
|
|
Surveiller, c'est une chose, mais le rôle du monitoring est aussi beaucoup de prévenir, lorsque quelque chose ne va pas. |
|
|
|
Dans ce cas, des mails sont généralement envoyés automatiquement, mais on peut aussi faire beaucoup plus, comme par |
|
|
|
exemple déclancher des scripts qui vont tenter d'autoréparer le système. |
|
|
|
\subsection{Nagios chez Faurecia} |
|
|
|
\subsection{Nagios chez \textbf{Faurecia}} |
|
|
|
\subsubsection{Nagios} |
|
|
|
\par |
|
|
|
\emph{Nagios} est une solution libre et open-source de monitoring apparut en 1996, et qui a depuis fait ses preuves dans |
|
|
@ -366,8 +418,8 @@ J'ai été équipé d'un laptop de prêt au début, installé avec \emph{Windows |
|
|
|
accéder à ma messagerie fonctionnant avec \emph{Outlook} exclusivement. J'ai gardé ce laptop jusqu'à la fin de mon stage |
|
|
|
uniquement pour la messagerie.\\ |
|
|
|
En revanche, j'ai rapidement demandé à être équipé d'un système \emph{Linux}, et j'ai donc dès le deuxième jour récupéré |
|
|
|
la tour d'un ancien stagiaire sur laquelle j'ai pu installer Ubuntu 14.04 avec Awesome WM. Deux mois plus tard, j'ai pu |
|
|
|
troquer cette tour contre un laptop beaucoup plus récent, celui d'un salarié qui quittait Faurecia, sur lequel j'ai pu |
|
|
|
la tour d'un ancien stagiaire sur laquelle j'ai pu installer \emph{Ubuntu 14.04} avec \emph{Awesome WM}. Deux mois plus tard, j'ai pu |
|
|
|
troquer cette tour contre un laptop beaucoup plus récent, celui d'un salarié qui quittait \textbf{Faurecia}, sur lequel j'ai pu |
|
|
|
remettre ce même système. |
|
|
|
\par |
|
|
|
En bref, j'ai pu travailler avec un environnement et une suite logiciel que j'ai pu choisir à 100\%, totalement libre et |
|
|
@ -383,7 +435,7 @@ open-source, en ayant juste la contrainte d'un second laptop sous \emph{Windows} |
|
|
|
\par |
|
|
|
Tel était le sujet marqué dans la fiche réponse, et pour lequel une convention a été signée. C'est en réalité assez |
|
|
|
vague, mais cela représente tout de même assez bien la réalité, puisque l'ensemble des tâches qui m'ont été attribuées |
|
|
|
tournaient autour de ce fameux outil, SAP, hormis les trois premières semaines. |
|
|
|
tournaient autour de ce fameux outil, \textbf{SAP}, hormis les trois premières semaines. |
|
|
|
|
|
|
|
\subsection{Les débuts} |
|
|
|
\par |
|
|
@ -398,7 +450,7 @@ Il m'a principalement été demandé d'automatiser une procédure de génératio |
|
|
|
collecter des données diverses pour en faire des statistiques et des graphiques utilisables, le tout très rapidement. |
|
|
|
C'est un travail qui est réalisé une fois par mois, et qui permet de présenter au management un résumé chiffré des |
|
|
|
actions des 30 derniers jours. Ce travail est fastidieux, car on a besoin de se connecter à de nombreuses pages Web, et |
|
|
|
d'en extraire des données sous la forme en général de tableaux Excel. La contrainte était de ne pas avoir aux bases de |
|
|
|
d'en extraire des données sous la forme en général de tableaux \emph{Excel}. La contrainte était de ne pas avoir aux bases de |
|
|
|
données de façon direct, et l'on devait alors simuler les actions de l'utilisateur dans le naviguateur, ce que j'ai |
|
|
|
réalisé à l'aide de la bibliothèque \emph{Selenium}, et de son module pour \emph{Python}. |
|
|
|
\par |
|
|
@ -412,63 +464,64 @@ J'ai eu à personnaliser la page d'accueil de l'instance de \emph{Etherpad}, un |
|
|
|
une instance venait d'être déployée. |
|
|
|
\par |
|
|
|
J'ai également réalisé deux petits scripts \emph{Python} à l'aide de \emph{Fabric}, une bibliothèque elle aussi libre servant à lancer |
|
|
|
facilement des commandes shells depuis \emph{Python}, que ce soit sur la machine locale, ou bien à distance à l'aide d'SSH. Ces |
|
|
|
facilement des commandes shells depuis \emph{Python}, que ce soit sur la machine locale, ou bien à distance à l'aide d'\emph{SSH}. Ces |
|
|
|
scripts servaient à automatiser la création de machines virtuelles dans \emph{VirtualBox} et de les convertir en environnement |
|
|
|
\emph{Vagrant}, afin de pouvoir rapidement réaliser des fichiers d'environnement virtuels à jour lors de la sortie de nouvelles |
|
|
|
versions des systèmes \emph{Ubuntu} et \emph{Cent OS}. |
|
|
|
|
|
|
|
\subsection{Première mission à long terme} |
|
|
|
\par |
|
|
|
Lorsque Murielle m'a pris en charge, j'ai commencé à travailler sur ma première mission à long terme. Il s'agissait de |
|
|
|
servir de point centrale entre trois équipe. |
|
|
|
Premièrement, celle qui gérait le projet FCS Business Continuity, c'est à dire Murielle elle même, entre autres. |
|
|
|
Venaient ensuite les équipes systèmes qui gèraient les machines ciblées par le projet FCS. |
|
|
|
Lorsque Murielle m'a pris en charge, fin Septembre, j'ai commencé à travailler sur ma première mission à long terme. Il |
|
|
|
s'agissait de servir de point centrale entre trois équipe. |
|
|
|
Premièrement, celle qui gérait le projet \textbf{FCS} Business Continuity, c'est à dire Murielle elle même, entre autres. |
|
|
|
Venaient ensuite les équipes systèmes qui gèraient les machines ciblées par le projet \textbf{FCS}. |
|
|
|
Enfin, il y avait les équipes monitoring, basées en Chine, mais dont le responsable était mon voisin de bureau, et dont |
|
|
|
le rôle était de gérer la configuration de l'outil Nagios afin d'assurer le monitoring de ce que le système mettait en |
|
|
|
le rôle était de gérer la configuration de l'outil \emph{Nagios} afin d'assurer le monitoring de ce que le système mettait en |
|
|
|
place. |
|
|
|
\par |
|
|
|
Mon rôle là dedans était d'observer ce que Nagios monitorait réellement, de me renseigner sur ce qu'il y avait à |
|
|
|
Mon rôle là dedans était d'observer ce que \emph{Nagios} monitorait réellement, de me renseigner sur ce qu'il y avait à |
|
|
|
monitorer et qui ne l'était pas, et de faire réagir les bonnes personnes en conséquence. En général, le schéma était |
|
|
|
toujours le même. Je constatais que quelque chose n'était pas monitoré, ou était mal monitoré. Je contactais donc la |
|
|
|
personne du système en charge de cette machine afin soit qu'elle me transmettre les informations manquantes, et je |
|
|
|
créais ensuite un ticket pour les équipes chinoises, soit qu'elle fasse elle-même le ticket dans le cas où il y aurait |
|
|
|
des informations trop complexes pour être relayées correctement. |
|
|
|
\par |
|
|
|
Cette première mission me familiarisa beaucoup avec ce qu'était SAP, et l'environnement gigantesque qui en découlait. Je |
|
|
|
Cette première mission me familiarisa beaucoup avec ce qu'était \textbf{SAP}, et l'environnement gigantesque qui en découlait. Je |
|
|
|
découvrais aussi les différents problèmes qui faisaient perdre beaucoup de temps, notamment le manque cruel d'un |
|
|
|
inventaire des machines, commun aux différentes équipes. C'est ce qui m'a mené par la suite à faire évoluer un peu le |
|
|
|
sujet de mon stage. |
|
|
|
|
|
|
|
\subsection{Seconde mission à long terme} |
|
|
|
\par |
|
|
|
Lorsque j'ai eu passé un certain temps dans l'interface de Nagios, à traquer les défauts, les manques, et les surplus |
|
|
|
Lorsque j'ai eu passé un certain temps dans l'interface de \emph{Nagios}, à traquer les défauts, les manques, et les surplus |
|
|
|
d'informations, j'ai commencé à chercher comment je pourrais automatiser tout cela. Je me suis déjà renseigné à propos |
|
|
|
d'une interface qui me permettrait de faire des requêtes dans la base de donnée du monitoring, et on m'a dirigé vers |
|
|
|
Livestatus, un module pour Nagios qui fourni une API semblable à du SQL, et que je pouvais requêter comme je le |
|
|
|
\emph{Livestatus}, un module pour \emph{Nagios} qui fourni une API semblable à du \emph{SQL}, et que je pouvais requêter comme je le |
|
|
|
souhaitais. |
|
|
|
\par |
|
|
|
J'ai donc commencé par un petit script s'utilisant en ligne de commande qui me servait à classer les machines trouvées |
|
|
|
sur Nagios, en les triant par environnements SAP. Cela fonctionnait bien, mais j'étais le seul à savoir m'en servir, et |
|
|
|
je constatais que certaines questions que l'on me posait avaient leur réponse facilement à travers ce petit script. |
|
|
|
J'ai donc commencé, fin Octobre, par un petit script s'utilisant en ligne de commande qui me servait à classer les |
|
|
|
machines trouvées sur \emph{Nagios}, en les triant par environnements \textbf{SAP}. Cela fonctionnait bien, mais j'étais le seul à |
|
|
|
savoir m'en servir, et je constatais que certaines questions que l'on me posait avaient leur réponse facilement à |
|
|
|
travers ce petit script. |
|
|
|
\par |
|
|
|
Il a donc fallu réfléchir à un moyen de rendre ma petite base de donnée accessible facilement, tant à des personnes |
|
|
|
techniques, que parfois à des gens dont le corp de métier n'est pas l'informatique. Quoi de mieux qu'une interface Web |
|
|
|
pour arriver à cela! |
|
|
|
\par |
|
|
|
Ma seconde mission a donc été de développer cette interface et de la rendre la plus ergonomique possible. J'ai même peu |
|
|
|
à peu abandonné la ligne de commande, puisqu'elle ne suivait plus les dernières fonctionnalités. Début Janvier, il m'a |
|
|
|
même été demandé d'installer cette interface sur un serveur dédié afin de continuer à la faire fonctionner après mon |
|
|
|
départ, ce qui fût plutôt gratifiant. |
|
|
|
Ma seconde mission, qui a commmencé fin Novembre, a donc été de développer cette interface et de la rendre la plus |
|
|
|
ergonomique possible. J'ai même peu à peu abandonné la ligne de commande, puisqu'elle ne suivait plus les dernières |
|
|
|
fonctionnalités. Début Janvier, il m'a même été demandé d'installer cette interface sur un serveur dédié afin de |
|
|
|
continuer à la faire fonctionner après mon départ, ce qui fût plutôt gratifiant. |
|
|
|
|
|
|
|
\section{Rôles et objectifs des travaux} |
|
|
|
\subsection{Concernant le monitoring} |
|
|
|
\par |
|
|
|
Pour cette tâche, les objectifs étaient simples, mais c'est la tâche elle-même qui était délicate, pas sur le plan |
|
|
|
technique, mais plus au niveau des responsabilités. Le but était de s'assurer que pendant les phases de déplacement des |
|
|
|
environnement SAP, le monitoring soit toujours correctement assuré. |
|
|
|
environnement \textbf{SAP}, le monitoring soit toujours correctement assuré. |
|
|
|
Il y avait plusieurs cas quand je suis arrivé: |
|
|
|
\begin{itemize} |
|
|
|
\item Des environnements déjà déplacés, et il fallait alors s'assurer que Nagios avait suivit le mouvement et |
|
|
|
\item Des environnements déjà déplacés, et il fallait alors s'assurer que \emph{Nagios} avait suivit le mouvement et |
|
|
|
monitorait donc les nouvelles machines tout en ayant supprimé les anciennes. |
|
|
|
\item Des environnements en cours de déplacement, qu'il fallait donc monitorer deux fois: la vieille instance, et la |
|
|
|
nouvelle, sans qu'il y ait de conflits, sur les noms de machines par exemple. |
|
|
@ -485,48 +538,47 @@ informations. |
|
|
|
|
|
|
|
\subsection{Objectif de l'outil d'inventaire} |
|
|
|
\par |
|
|
|
J'ai pu remarqué que lorsque je cherchais à me documenter sur les environnement SAP, il était très difficile, voire |
|
|
|
J'ai pu remarqué que lorsque je cherchais à me documenter sur les environnement \textbf{SAP}, il était très difficile, voire |
|
|
|
impossible d'obtenir une liste précise des machines. L'inexistence à travers plusieurs équipe d'un inventaire commun |
|
|
|
rendait la tâche particulièrement difficile, puisqu'il fallait toujours aller chercher les informations là où elles se |
|
|
|
trouvaient, et pas toujours là où l'on s'y attend. |
|
|
|
\par |
|
|
|
On m'avait demandé, lorsque l'on m'a chargé de vérifier le monitoring, de construire en même temps un diaporama |
|
|
|
Powerpoint présentant chaque environnement, et contenant toutes les machines dans chacun d'eux, avec un certain nombre |
|
|
|
\emph{Powerpoint} présentant chaque environnement, et contenant toutes les machines dans chacun d'eux, avec un certain nombre |
|
|
|
d'information. Mais le problème que j'ai constaté d'un tel document, est que d'une part, il n'est pas dynamique, et donc |
|
|
|
qu'il devra être maintenu à la main, et d'autre part, qu'il n'est pas centralisé, ce qui engendrera rapidement des |
|
|
|
différences de version chez chacune des personnes possédant le document. |
|
|
|
\par |
|
|
|
L'objectif de faire l'inventaire était donc clair: il fallait que je concoive un outil très simple à utiliser, construit |
|
|
|
sur une base de donnée dynamique se mettant à jour automatiquement, qui soit centralisé, et qui permettrait aux |
|
|
|
différentes équipes SAP d'accéder à tout moment et rapidement à la plupart des informations de base concernant les |
|
|
|
différentes équipes \textbf{SAP} d'accéder à tout moment et rapidement à la plupart des informations de base concernant les |
|
|
|
environnements. |
|
|
|
|
|
|
|
\section{Déroulement} |
|
|
|
\subsection{Vérifier le monitoring} |
|
|
|
\subsubsection{Bien utiliser Nagios} % Attention au rangement dans les bonnes sous-parties |
|
|
|
\section{Vérifier le monitoring} |
|
|
|
\subsection{Bien utiliser \emph{Nagios}} % Attention au rangement dans les bonnes sous-parties |
|
|
|
\par |
|
|
|
En réalité, ce n'est pas directement Nagios que nous utilisions, mais simplement une de ses nombreuses interface Web . |
|
|
|
En réalité, ce n'est pas directement \emph{Nagios} que nous utilisions, mais simplement une de ses nombreuses interface Web . |
|
|
|
Cette interface facilite grandement la surveillance en fournissant principalement un moteur de recherche très puissant |
|
|
|
permettant de trouver rapidement n'importe quelle machine, voire même des groupes de machines, pour ensuite accéder à |
|
|
|
des informations très détaillées sur les services de monitoring appliqués à cette ou ces machine(s). |
|
|
|
\par |
|
|
|
Je devais donc suivre le \emph{paysage}, ou \emph{landscape}, et chercher environnement par environnement la liste des |
|
|
|
machines, en contactant à chaque fois les personnes responsable du dit environnement pour vérifier que l'ensemble |
|
|
|
existait bel et bien dans Nagios. |
|
|
|
Je devais donc suivre le \textbf{paysage}, ou \textbf{landscape}, c'est à dire une sorte de plan de \textbf{SAP}, et |
|
|
|
chercher environnement par environnement la liste des machines, en contactant à chaque fois les personnes responsable du |
|
|
|
dit environnement pour vérifier que l'ensemble existait bel et bien dans \emph{Nagios}. |
|
|
|
\par |
|
|
|
Lorsqu'une anomalie était détectée, elle pouvait être de plusieures sorte, avec différents niveaux de criticité: |
|
|
|
\begin{description} |
|
|
|
\item[Critique] \hfill \\ |
|
|
|
Lorsqu'une machine est sensé exister, mais est introuvable. Cela la rend totalement |
|
|
|
Lorsqu'une machine est sensée exister, mais est introuvable. Cela la rend totalement |
|
|
|
invisible aux yeux du monitoring, et on ne peut absoluement pas savoir quand cette machine a un problème, |
|
|
|
excepté en allant voir manuellement. |
|
|
|
\item[Critique] \hfill \\ |
|
|
|
La machine est trouvable, mais elle s'affiche en rouge, et le ping échoue. Cela signifie |
|
|
|
La machine est trouvable, mais elle s'affiche en rouge, et le \emph{ping} échoue. Cela signifie |
|
|
|
généralement que la machine a subit un déplacement mais que le monitoring n'a pas été mis à jour. Il faut donc |
|
|
|
rapidement l'équipe systèmes pour trouver qui contrôle la machine et lui demander de transmettre les |
|
|
|
informations de base la concernant, comme son nom et son adresse IP, afin de régulariser au plus vite. |
|
|
|
\item[Peu critique] \hfill \\ |
|
|
|
On voit la machine en vert, et celle-ci répond au ping, mais un grand nombre de ses |
|
|
|
On voit la machine en vert, et celle-ci répond au \emph{ping}, mais un grand nombre de ses |
|
|
|
services sont rouges. Cela signifie qu'elle a subit un important changement d'architecture pendant le |
|
|
|
déplacement, et que les services à monitorer ont changé. Il faut donc contacter l'équipe applicative afin de |
|
|
|
savoir ce qu'il font tourner dessus, et donc demander à l'équipe monitoring de suivre les bons services. |
|
|
@ -537,23 +589,23 @@ Lorsqu'une anomalie était détectée, elle pouvait être de plusieures sorte, a |
|
|
|
cherche alors auprès de toutes les équipes concernées pour trouver qui possède les informations manquantes. |
|
|
|
\end{description} |
|
|
|
|
|
|
|
\subsubsection{Redmine, puis MosaiC} |
|
|
|
\subsection{Redmine, puis \emph{MosaiC}} |
|
|
|
\par |
|
|
|
\emph{Redmine} et \emph{MosaiC} sont les bugs-trackers utilisé dans le projet FCS-BC. Redmine était présent au début, |
|
|
|
puis le changement vers MosaiC a été opéré en Novembre. |
|
|
|
\emph{Redmine} et \emph{MosaiC} sont les bugs-trackers utilisé dans le projet \textbf{FCS BC}. \emph{Redmine} était présent au début, |
|
|
|
puis le changement vers \emph{MosaiC} a été opéré en Novembre. |
|
|
|
\paragraph{Redmine} est un outil libre de bug tracking et gestion de projet, intégrable facilement avec le gestionnaire |
|
|
|
de révision Git, et qui permettait de facilement trier les issues entre les différents projets. De plus, on pouvait |
|
|
|
de révision \emph{Git}, et qui permettait de facilement trier les issues entre les différents projets. De plus, on pouvait |
|
|
|
suivre l'évolution des tickets dans le temps, on faisant évoluer la priorité, en ajoutant des informations si besoin, le |
|
|
|
tout dans une sorte de dialogue avec l'équipe affectée à la résolution du ticket. |
|
|
|
\paragraph{MosaiC} est arrivé début Novembre pour remplacer Redmine. Il remplissait moins bien son rôle de bug tracker |
|
|
|
\paragraph{MosaiC} est arrivé début Novembre pour remplacer \emph{Redmine}. Il remplissait moins bien son rôle de bug tracker |
|
|
|
puisque c'est un outil de gestion du changement, mais avait une plus grande base de connaissance sur les projets, on |
|
|
|
triant jusqu'au niveau de l'environnement dans le projet FCS. Je m'en suis finalement peu servi. En effet, c'est à cette |
|
|
|
triant jusqu'au niveau de l'environnement dans le projet \textbf{FCS}. Je m'en suis finalement peu servi. En effet, c'est à cette |
|
|
|
période que j'ai commencé à développer \emph{Sappin}. |
|
|
|
\par |
|
|
|
C'est au travers de ces deux outils que j'ai fait remonté les demandes de modifications de Nagios pour assurer un |
|
|
|
monitoring optimal pendant les phases de \emph{move}. |
|
|
|
C'est au travers de ces deux outils que j'ai fait remonté les demandes de modifications de \emph{Nagios} pour assurer un |
|
|
|
monitoring optimal pendant les phases de \textbf{move}. |
|
|
|
|
|
|
|
\subsubsection{La communication: mail et IM} |
|
|
|
\subsection{La communication: mail et IM} |
|
|
|
\par |
|
|
|
La communication était une partie très importante de mon travail. En effect il me fallait en permanence contacter les |
|
|
|
différents responsables de tel ou tel service afin d'obtenir les informations là où elles se trouvaient. Par conséquent, |
|
|
@ -565,7 +617,7 @@ plug-in y étaient installé, afin de pouvoir également gérer les conférences |
|
|
|
synchronisation avec la liste des salles et le gestionnaire d'emploi du temps de chacun. L'annuaire interne de |
|
|
|
\textbf{Faurecia} y était évidemment présent également. |
|
|
|
\par |
|
|
|
L'autre moyen de communication utilisé était la messagerie instantanée. Le client officiel de Faurecia était |
|
|
|
L'autre moyen de communication utilisé était la messagerie instantanée. Le client officiel de \textbf{Faurecia} était |
|
|
|
\emph{Spark}, mais étant donnée que tout passait par un serveur \emph{XMPP}, et qu'il s'agit d'un protocol ouvert, |
|
|
|
n'importe quel client pouvait faire l'affaire, et j'ai donc utilisé \emph{Gajim}, ce dernier étant plus léger. |
|
|
|
\par |
|
|
@ -574,25 +626,36 @@ des personnes que je contactais régulièrement. Elle remplacait presque une dis |
|
|
|
pouvoir transmettre des liens très facilement pour pointer un problème en particulier rapidement, tout en ayant chaque |
|
|
|
interlocuteur présent sur sa machine de travail, et ayant dont accès rapidement à ses informations numériques. |
|
|
|
|
|
|
|
% Parler des alertes: demander au bon gugus de vérifier les services présents sur les machines pour le system ou la team |
|
|
|
% SAP fasse le ticket en demandant de monitorer les bons services, ce que les chinois règlaient par la suite. |
|
|
|
\subsection{Fin de la mission} |
|
|
|
\par |
|
|
|
Pour mettre en place le monitoring, j'avais bien évidemment eu des dates à respecter, et un des plus gros \textbf{move} était |
|
|
|
prévu pour le week end du 21-22 Novembre. Mais suite à un problème dans l'environnement, le \textbf{move} a été reporté au |
|
|
|
premier trimestre de 2016, c'est à dire vers début Mars. Cependant, le monitoring était prêt, et ma mission prenait donc |
|
|
|
fin. J'allais pouvoir me centrer pleinement sur l'inventaire. |
|
|
|
|
|
|
|
\subsection{Développer un inventaire} |
|
|
|
\section{Développer un inventaire: \textbf{SAPPIN}} |
|
|
|
\par |
|
|
|
\emph{Bien que le nom fût trouvé tout à la fin de mon stage, je me référerai à l'application en l'appelant par son nom, |
|
|
|
\textbf{Sappin}.} |
|
|
|
\par |
|
|
|
\textbf{Sappin} est venu à la base de \textbf{SAPIN}, qui signifiait \emph{SAP INventory}. Je me suis ensuite dit que |
|
|
|
l'application pouvait tout à fait être déployée pour tout type d'infrastructure, et pas seulement \textbf{SAP}, et je l'ai donc |
|
|
|
renommé en \textbf{SAPPIN}, pour \emph{Simple APPlication INventory}. |
|
|
|
\par |
|
|
|
C'était là clairement ma mission la plus technique, d'un point de vue technologique d'une part, et d'un point de vue de |
|
|
|
gestion de projet également. En effet, j'ai été sur ce projet en totale autonomie, puisque c'est d'une initiative de ma |
|
|
|
part que le projet est parti. |
|
|
|
\subsubsection{Identifier le besoin} |
|
|
|
\subsection{Identifier le besoin} |
|
|
|
\par |
|
|
|
Lorsque je m'occupais du monitoring, j'ai remarqué que j'étais souvent confronté aux mêmes problèmes. |
|
|
|
\par |
|
|
|
Pour commencer, lorsque l'on regarde sur \emph{Nagios}, on peut voir une machine (un \emph{host}), mais on ne sait pas |
|
|
|
instantanément où elle est située, d'un point de vue physique, c'est à dire en pratique chez Faurecia, savoir si le |
|
|
|
instantanément où elle est située, d'un point de vue physique, c'est à dire en pratique chez \textbf{Faurecia}, savoir si le |
|
|
|
serveur est à Hagenbach, Marcoussis, ou encore ailleurs. |
|
|
|
\par |
|
|
|
Ensuite, il pouvait arriver d'avoir à trouver toutes les machines qui répondaient à un critère. Un système d'expressions |
|
|
|
rationnelles dans l'interface permet d'avoir les filtres les plus fins qui soient, mais ce n'est guère ergonomique, et |
|
|
|
on se rend compte en pratique que l'on tri très souvent par module ou par environnement SAP. |
|
|
|
on se rend compte en pratique que l'on tri très souvent par module ou par environnement \textbf{SAP}. |
|
|
|
\par |
|
|
|
Vient alors un autre problème, qui est de savoir qui est responsable de cette machine. Où de manière plus générale, où |
|
|
|
sont les ressources concernant cette machine. Dans \emph{Nagios}, une machine est représenté par sont nom et quelques |
|
|
@ -604,12 +667,13 @@ pouvait faire mieux. |
|
|
|
Toutes ces tâches avaient donc besoin d'être simplifiées, ou automatisées quand c'était possible, et le besoin d'une |
|
|
|
petite application était là clairement définit. |
|
|
|
|
|
|
|
\subsubsection{La phase de développement} |
|
|
|
\subsection{La phase de développement} |
|
|
|
\subsubsection{Construire des requêtes} |
|
|
|
\par |
|
|
|
J'ai commencé la phase de développement en automatisant seulement quelques requêtes pour accéder plus rapidement aux |
|
|
|
informations sans avoir à passer par l'interface Web. Cette automatisation passait par l'outil \emph{Livestatus}, un |
|
|
|
plugin pour \emph{Nagios} qui fournit un socket sur lequel on peut effectuer des requêtes. Les requêtes se font alors |
|
|
|
dans un language, le LQL, dont la syntaxe est proche de HTTP, mais tout en ayant le paradigme du SQL, ce qui permet de |
|
|
|
dans un language, le \emph{LQL}, dont la syntaxe est proche de \emph{HTTP}, mais tout en ayant le paradigme du \emph{SQL}, ce qui permet de |
|
|
|
faire des requêtes très puissantes. |
|
|
|
\begin{figure}[H] |
|
|
|
\centering |
|
|
@ -619,32 +683,164 @@ faire des requêtes très puissantes. |
|
|
|
Filter: host_name ~ FC1 |
|
|
|
OutputFormat: python |
|
|
|
\end{lstlisting} |
|
|
|
\caption{ |
|
|
|
Exemple de requête LQL, permettant de récupérer au format Python, depuis la table \textbf{hostsbygroup}, les |
|
|
|
\emph{host\_name}, \emph{alias}, et \emph{address}, de toutes les machines dont le \emph{host\_name} contient |
|
|
|
"FC1": |
|
|
|
} |
|
|
|
\caption{Exemple de requête \emph{LQL}} |
|
|
|
Récupére au format \emph{Python}, depuis la table \textbf{hostsbygroup}, les \emph{host\_name}, \emph{alias}, et |
|
|
|
\emph{address}, de toutes les machines dont le \emph{host\_name} contient "FC1". |
|
|
|
\end{figure} |
|
|
|
C'est en partant de ce genre de requête que j'ai commencé à construire \textbf{Sappin}. Au départ, il ne faisait que formatter et |
|
|
|
filter le résultat des requêtes que l'on faisait. C'était donc très simpliste, et on l'utilisait de la façon suivante: |
|
|
|
\begin{lstlisting} |
|
|
|
./cli.py -r FC1 |
|
|
|
\end{lstlisting} |
|
|
|
Cela affichait l'ensemble des objets trouvés contenant FC1 dans leur nom, et c'était donc plus rapide de construire la |
|
|
|
recherche dans \emph{Nagios}. |
|
|
|
\par |
|
|
|
Puis j'ai voulu complexifier un peu l'affichage, en affichant en arborescence les environnements et leurs machines. |
|
|
|
S'est posé alors deux problème: comment générer cette arborescence d'un point de vue logique, c'est à dire simplement en |
|
|
|
mémoire, puis ensuite, comment l'afficher correctement pour ce soit lisible. |
|
|
|
|
|
|
|
\subsubsection{Inclure une base de données} |
|
|
|
\par |
|
|
|
Concernant la logique, je me suis rapidement dit qu'il me fallait l'aide d'une petite base de donnée, afin de stocker en |
|
|
|
grande partie mes requêtes, mais aussi et surtout pour stocker le temps de traitement des requêtes. En effet, il aurait |
|
|
|
été bête de devoir retraiter l'intégralité de l'inventaire à chaque requête. J'ai donc cherché du côté de \emph{SQLalchemy}, un |
|
|
|
module pour \emph{Python} fournissant un ORM (Object Relational Model), c'est à dire une interface objet pour interagir avec |
|
|
|
une base de donnée relationnelle. On évite par là d'avoir à écrire les requêtes \emph{SQL} à la main, et d'avoir à faire des |
|
|
|
jointures dès que l'on veut mettre en relation plusieurs tables. |
|
|
|
\par |
|
|
|
Concernant le gestionnaire de base de donnée, \emph{SQLalchemy} inclut par défaut \emph{SQLite}, qui est un gestionnaire très léger |
|
|
|
générant un simple fichier pour stocker la base, et qui est extrêmement simple à mettre en place, puisqu'il est |
|
|
|
automatique par défaut avec \emph{SQLalchemy}, et qu'il n'y a absoluement aucune application serveur à faire tourner pour |
|
|
|
l'utiliser. |
|
|
|
\par |
|
|
|
J'ai pu définir mes objets, de manière simple, avec juste une classe \textbf{Module}, une classe \textbf{Environment}, |
|
|
|
et une classe \textbf{Host}. Je les ai mis dans une relation arborescente les uns avec les autres, et j'avais là ma |
|
|
|
logique: il suffisait de faire une requête récupérant l'ensemble des informations, des les trier et de les ranger, et à |
|
|
|
partir de là, on pouvait faire la plupart des requêtes sans même avoir à passer par \emph{Nagios}. Il suffisait |
|
|
|
simplement de mettre une fois la base de données à jour, avec \emph{Livestatus}, puis on pouvait requêter autant de fois |
|
|
|
que l'on voulait, et très rapidement, les données en local. |
|
|
|
|
|
|
|
\subsubsection{Générer un affichage correct} |
|
|
|
\par |
|
|
|
L'autre problème subsistait, celui de l'affichage. En effet, un affichage console n'est pas adapté à afficher des |
|
|
|
arbres. J'ai déjà essayé, et l'on obtient jamais quelque chose de satisfaisant sans passer par des bibliothèques comme |
|
|
|
\emph{(N)Curses}. De plus, cela ne permet pas de partager l'application avec d'autres utilisateur: c'est 100\% local. |
|
|
|
\par |
|
|
|
J'ai donc commencé à développer une simple page \emph{HTML} afin de pouvoir partager cette page avec notamment Mohamed, mon |
|
|
|
voisin de bureau, qui s'occupait de l'équipe monitoring, et qui pouvait avoir besoin de visualiser les mêmes |
|
|
|
informations que moi. L'avantage du \emph{HTML} est qu'il est très simple, et permet, grâce à \emph{CSS}, de générer très rapidement |
|
|
|
des interface jolies, et même dynamiques si on y inclut un peu de \emph{Javascript}. |
|
|
|
\par |
|
|
|
Je ne connaissais à l'époque que \emph{PHP} pour générer des pages \emph{HTML}, mais j'avais déjà entendu parlé de beaucoup d'autres |
|
|
|
technologie répondant à cette demande, dont \emph{Flask}, qui est un module pour \emph{Python} permettant de faire très simplement des |
|
|
|
petits sites dynamiques. |
|
|
|
\par |
|
|
|
Cela fonctionne en deux partie: un morceau s'occuper de réceptionner les requêtes \emph{HTTP} et les traite, avant demander |
|
|
|
ensuite à la deuxième partie de générer l'affichage. \emph{Flask} utilise pour cela \emph{Jinja2}, qui est un moteur de template très |
|
|
|
populaire en ce moment dans le monde de \emph{Python}, et qui permet d'écrire des fichiers contenant une grande partie de \emph{HTML}, |
|
|
|
mais dans lequel on peut inclure des balises contenant du code très proche de \emph{Python}, à quelques contraintes près, et |
|
|
|
permettant de faire par exemple des boucles, ou des structures conditionnel, et l'on peut donc générer du \emph{HTML} de |
|
|
|
manière dynamique, en fonction des données que l'on a à afficher. |
|
|
|
|
|
|
|
\subsubsection{Améliorer \textbf{Sappin}} |
|
|
|
\par |
|
|
|
J'avais donc, pendant la première moitié de Décembre, une application fonctionnelle, que j'ai donc présenté à quelques |
|
|
|
personnes, dont Murielle et Mohamed. À partir de là, ils ont commencé à me faire des retours utilisateurs, et j'ai donc |
|
|
|
eu à ajouter de nouvelles fonctionnalités à \textbf{Sappin}. |
|
|
|
\par |
|
|
|
Fin Décembre, Murielle m'a dit qu'elle aimerait bien voir \textbf{Sappin} hébergé ailleurs que sur mon laptop, c'est à dire qu'il |
|
|
|
fallait que je le déploie sur un serveur. De plus, cela signifiait que \textbf{Sappin} serait encore utilisé après la fin de mon |
|
|
|
stage. Il fallait donc que je fasse en sorte qu'il soit le plus maintenable possible. |
|
|
|
\par |
|
|
|
En effet, lorsque je l'ai développé au début, je l'ai construit comme un script, que j'ai patché encore et encore, et |
|
|
|
qui ressemblait à la fin plus à un patchwork de morceaux de code qu'à un vrai programme. J'ai donc dès début Janvier |
|
|
|
pris en main une réorganisation complète du code afin d'inclure un fichier de configuration simple et documenté, et |
|
|
|
aussi pour améliorer la robustesse du code en cas d'incohérence dans la base de donnée. |
|
|
|
\par |
|
|
|
Mi-Janvier, j'avais là une application prête à la mise en production, et documentée, avec un README, c'est à dire une |
|
|
|
documentation, tant pour les utilisateurs que pour les administrateurs. J'ai donc demandé un serveur, et j'ai alors pu |
|
|
|
mettre \textbf{Sappin} en production, avec toutes les fonctionnalités suivante: |
|
|
|
\begin{itemize} |
|
|
|
\item Liste et vue en arbre de tous les modules, environnements, et machines de l'application |
|
|
|
\item Vue détaillée de chaque entité |
|
|
|
\item Graphiques simples montrant rapidement la répartition des machines par datacenter |
|
|
|
\item Possibilité d'ajouter des informations supplémentaires pour chaque entité, comme des liens, ou même des |
|
|
|
fichiers |
|
|
|
\item Un mode d'administration sécurisant l'accès en écriture aux informations supplémentaires des entités |
|
|
|
\item Vue d'administration listant les entités dont les informations ne sont pas complètes, et permettant un |
|
|
|
import/export de la base au format JSON |
|
|
|
\item Un seul fichier de configuration simple et commenté permettant de gérer facilement le programme sur le serveur |
|
|
|
\end{itemize} |
|
|
|
|
|
|
|
exemple d'utilisation en CLI |
|
|
|
description de la transition vers la web UI |
|
|
|
à la pêche aux retours user |
|
|
|
ajouts de nouvelles fonctionnalitées |
|
|
|
la web UI à la fin |
|
|
|
|
|
|
|
\subsubsection{La mise en production} |
|
|
|
\subsection{La mise en production} |
|
|
|
\par |
|
|
|
La machine qui m'a été fournie tournait sous \emph{Windows 7}. Ce n'est pas le système le plus adapté pour un serveur, mais |
|
|
|
cela a tout de même faire l'affaire. J'ai donc installé les dépendances du projet, à savoir principalement \emph{Git} et |
|
|
|
Python3. |
|
|
|
\par |
|
|
|
Ce n'était pas des plus facile, car ces logiciels sont très adaptés à des environnement Unix/Linux, mais moins à du |
|
|
|
Windows. De plus, le proxy présent sur le réseau a encore un peu compliqué la tâche, mais j'ai tout de même réussi à |
|
|
|
mettre l'environnement en place, et à installer \textbf{Sappin}. |
|
|
|
\par |
|
|
|
Il ne restait alors qu'à sécuriser le mode d'administration, c'est à dire mettre un mot de passe sur une URL bien |
|
|
|
précise. Pour cela, j'ai installé le bien connu serveur \emph{Apache}, afin de le configurer en reverse-proxy, et de mettre une |
|
|
|
authentification \emph{HTTP} sur la fameuse URL. |
|
|
|
\par |
|
|
|
Enfin, pour être sûr que tout continue à fonctionner, j'ai installé ces deux programmes, \textbf{Sappin} et \emph{Apache}, en mode |
|
|
|
service, afin qu'ils soient démarrés automatiquement au lancement de la machine. |
|
|
|
|
|
|
|
\subsection{Quelques formations avant de partir} |
|
|
|
\par |
|
|
|
Pendant les quelques semaines qui restaient, en plus de la rédaction de ce rapport, on m'a demandé de dispenser quelques |
|
|
|
formations sur \textbf{Sappin}. |
|
|
|
\par |
|
|
|
J'ai donc pu présenter le programme tout d'abord à Murielle et aux autres managers. Ils se serviront de \textbf{Sappin} pour |
|
|
|
consulter rapidement l'architecture de \textbf{SAP} afin de prendre des décisions quant aux projets gravitant autour, comme \textbf{FCS |
|
|
|
BC} par exemple. |
|
|
|
\par |
|
|
|
Je l'ai également présenté à l'équipe applicative \textbf{SAP}, qui sont les premiers utilisateurs, puisque c'est eux qui |
|
|
|
remplissent les champs supplémentaires de chaque entité, et qui maintiennent toutes les machines. Cela leur permettra de |
|
|
|
consulter les environnements qu'ils ne connaissaient pas. En effet, ils ont tous la responsabilité d'un certain nombre |
|
|
|
de machines, mais aucun n'a connaissance de l'architecture des plus de 80 environnements, et ils auront donc une vue |
|
|
|
d'ensemble avec \textbf{Sappin}. |
|
|
|
\par |
|
|
|
Enfin, j'ai eu à animer une vidéoconférence avec l'équipe de "pilotes", située au Mexique. C'est eux qui fournissent les |
|
|
|
équipes disponiblent 24H/24 pour maintenir l'infrastructure en cas de problème courant, et pourront donc également |
|
|
|
visualiser les environnements avec des liens rapides vers les procédures qu'ils peuvent avoir à suivre. |
|
|
|
|
|
|
|
\chapter*{Conclusion} |
|
|
|
\addcontentsline{toc}{chapter}{Conclusion} |
|
|
|
\par |
|
|
|
Pour terminer ce rapport, je dirais que je suis avant tout très content de mon stage. Il m'a permis d'apprendre beaucoup |
|
|
|
de choses, sur beaucoup de points très différents les uns des autres, et j'ai pu découvrir le fonctionnement d'une |
|
|
|
grande entreprise sur bon nombre de ses aspects. |
|
|
|
\par |
|
|
|
En effet, j'ai pu voir que résoudre un problème simple en apparence peut vite se complexifier quand les équipes sont |
|
|
|
réparties autour de la planète. On doit parfois attendre le lendemain pour avoir une réponse dans sa boîte mail. Une |
|
|
|
simple demande de service peut avoir à inclure plus de quatre personnes pour réunir l'ensemble des informations. Toutes |
|
|
|
ces choses pratiques me sont désormais évidentes, mais je ne les avais pourtant jamais imaginées avant de commencer mon |
|
|
|
travail chez \textbf{Faurecia}. |
|
|
|
\par |
|
|
|
Finalement, j'ai eu la satisfaction d'avoir une grande liberté quant aux technologies que j'ai pu employer. C'est quelque |
|
|
|
chose que je n'aurais pas cru possible de la part d'une grande société ou tout me semblait très standardisé et codifié, |
|
|
|
de pouvoir travailler avec un environnement Linux dès le début, et de pouvoir développer une application en utilisant |
|
|
|
uniquement des outils libres et open-source. Je remercie d'ailleurs grandement \textbf{Faurecia} pour cela, et en garderai |
|
|
|
toujours un très bon souvenir. |
|
|
|
|
|
|
|
\chapter*{Bibliographie} |
|
|
|
\addcontentsline{toc}{chapter}{Bibliographie} |
|
|
|
\url{http://mathias-kettner.de/checkmk_livestatus.html} |
|
|
|
\url{https://docs.python.org/3/} |
|
|
|
\url{http://docs.sqlalchemy.org/en/rel_1_0/} |
|
|
|
\url{http://flask.pocoo.org/} |
|
|
|
\url{http://jinja.pocoo.org/} |
|
|
|
\begin{itemize} |
|
|
|
\item Documentation de \emph{Livestatus}, le plugin de requêtes pour \emph{Nagios} |
|
|
|
\par \url{http://mathias-kettner.de/checkmk_livestatus.html} |
|
|
|
\item Documentation du language \emph{Python 3} |
|
|
|
\par \url{https://docs.python.org/3/} |
|
|
|
\item Documentation de la bibliothèque \emph{SQLalchemy} |
|
|
|
\par \url{http://docs.sqlalchemy.org/en/rel_1_0/} |
|
|
|
\item Documentation de la bibliothèque \emph{Flask} |
|
|
|
\par \url{http://flask.pocoo.org/} |
|
|
|
\item Documentation du moteur de template \emph{Jinja2} |
|
|
|
\par \url{http://jinja.pocoo.org/} |
|
|
|
\end{itemize} |
|
|
|
|
|
|
|
\chapter*{Annexes} |
|
|
|
\addcontentsline{toc}{chapter}{Annexes} |
|
|
@ -653,3 +849,4 @@ la web UI à la fin |
|
|
|
|
|
|
|
\end{document} |
|
|
|
|
|
|
|
%s/ \(SQLalchemy\|SQLite\)/ \\emph{\1}/ |