Mon job de Junior Devops (expérience)- Alternance 1er année

Première partie de mon alternance
Première partie de mon alternance

Découvrez comment j’ai utilisé Ansible, Airflow, et Puppet pour automatiser la gestion de configuration et optimiser les infrastructures informatiques, tout en partageant mon expérience chez la Société Générale. Suivez cette article pour acquérir des compétences avancées en tant que Junior DevOps , renforcer vos compétences techniques et devenir un expert de l’automatisation.

Inventaire et Gestion des Données de Configuration

Lorsqu’il s’agit de gérer l’inventaire et les données de configuration, certaines compétences humaines sont indispensables. Il est essentiel de comprendre les besoins de nos clients, même lorsque ces derniers sont des collègues dont les demandes sont devenues nos priorités. Dans le contexte des migrations de datacenters, appelées « DC Move », une équipe dédiée s’efforce de reproduire avec précision les nombreuses configurations nécessaires lors de ces transitions. Cette équipe permet ainsi de rétablir le service correspondant à chaque machine lors de son branchement dans sa nouvelle localisation. Cependant, la tâche de récupération des données de configuration s’avère souvent laborieuse.

Ansible_logo

Ansible : L’Orchestrateur de Confiance

L’un des outils majeurs utilisés dans ce domaine est Ansible. Agissant en tant qu’orchestrateur, Ansible automatise les tâches grâce à des playbooks rédigés en langage YAML. Ces playbooks peuvent contenir des variables, des rôles, des plugins et des modules, facilitant ainsi la configuration d’une infrastructure complète. On peut également se servir d’Ansible Tower ou d’Ansible Galaxy pour des déploiements spécifiques.

Collaboration et Étude de Faisabilité

Lors de nos premiers échanges, nous avons pris le temps de comprendre les besoins spécifiques et d’effectuer une étude rapide de faisabilité. Plusieurs acteurs étaient impliqués dans cette démarche : un membre de l’équipe Windows agissant en tant que client (car il était à l’origine de la demande), un membre de l’équipe Tooling (avec qui nous discutions des tâches à réaliser) et moi-même en tant que junior devops , bénéficiant du soutien de mon responsable.

Nous avons échangé nos points de vue et clarifié certains aspects : quelles machines étaient concernées ? Dans quel parc informatique ou périmètre opérions-nous ? Quels serveurs communiquaient avec quels autres serveurs ? Quelles données devaient être collectées et où étaient-elles stockées ? En cas d’incertitude, nous avons éclairci ces questions en nous référant directement au client. Cela nous a permis de formuler des questions plus précises, telles que : quelles informations manquent sur cette machine dans ce périmètre précis ?

Le Développement et la Récupération des Données d’un devops

Une fois les échanges terminés et les informations consolidées, nous avons constaté que sur les quatorze informations demandées, deux d’entre elles étaient difficiles à obtenir, contrairement aux autres qui nécessitaient des recherches plus approfondies. Par la suite, nous avons résumé les besoins exprimés par le client dans un e-mail détaillé.

C’est à ce moment-là que le développement a commencé. Pour rechercher les informations nécessaires, nous avons développé un critère de recherche basé sur une liste d’adresses IP ou de noms de serveurs, permettant d’obtenir des informations supplémentaires sur les cartes réseau et les cartes SAN des serveurs.

Au cours de cette première étape de développement, j’ai dû me connecter à la machine de rebond pour accéder à la console SCCM (System Center Configuration Manager). SCCM s’est chargé de récupérer les données dont nous avions besoin et de les mettre à disposition.

SQL Base de données

En me connectant à SQL, j’ai utilisé des requêtes pour extraire les informations pertinentes. La documentation de Microsoft sur SQL Server a été d’une grande aide, grâce à ses exemples qui m’ont permis de créer des filtres spécifiques avec des jointures et des vues. Voici un exemple de requête :

SELECT CR.nom, CR.nb, CR.vitesse, CS.nom, CS.wwn, SI.nom, SI.perimeter
FROM SERVER_INFO SI
JOIN CARTE_SAN CS ON (CS.Index = SI.Index AND SI.perimeter = CS.perimeter)
LEFT JOIN CARTE_Reseau CR ON SI.ID = CR.ressource or CR.up >= 1
WHERE SI.nom IS NOT NULL

Une fois toutes les informations récupérées, j’ai créé un script Python pour transférer ces données de la base SQL SCCM vers notre base de données MongoDB. Ce script était complexe, car il devait collecter les informations de la base de données SQL, les regrouper dans une liste, puis les envoyer à MongoDB pour les traduire en format JSON. Étant donné que MongoDB était connecté à une API, notre client n’avait plus qu’à utiliser cette dernière pour accéder aux informations nécessaires.

Un Junior DevOps face à l’Automatisation des Tâches

Lors d’une mission spécifique, j’ai été chargé de développer une fonctionnalité permettant d’effectuer des recherches dans la base de données MongoDB, qui avait été initialement remplie par un autre script Python (voir autre article). Pour mener à bien cette mission, j’ai dû me familiariser avec la technologie d’affichage web. L’API développée restait simple et facile à utiliser, ce qui m’a permis de la prendre en main et de l’expérimenter dans le cadre de cette tâche. Pour créer cette fonctionnalité, je me suis appuyé sur les entrées précédemment développées et j’ai consulté la documentation officielle de Swagger (https://swagger.io/docs/specification/describing-parameters/) et de MongoDB (https://docs.mongoengine.org/guide/querying.html#filtering-queries). Cette dernière documentation m’a aidé à faire le lien entre la base de données contenant toutes les informations et le langage de programmation utilisé en backend pour effectuer la requête. Python était le langage de script requis pour cette tâche, et il jouait un rôle double en récupérant les données des utilisateurs et en utilisant ces données pour extraire les informations correspondantes de la base de données MongoDB. J’ai réussi à finaliser et à rendre fonctionnel ce produit, qui permettait de passer d’une donnée spécifique sur chaque serveur à un regroupement de données filtrées.

Le Self-Service : Un Portail Client en Libre-Service

Dans le cadre de mon diplôme d’Expert, j’ai choisi la voie de l’alternance et ai effectué un stage de deux ans au sein de la Direction des Systèmes d’Information (DSI) de la Société Générale. Les systèmes d’information jouent un rôle majeur au sein de cette banque. Au sein de mon équipe, mon rôle consistait à fournir un support technique et une expertise lors de projets spécifiques. Tous les junior devops comme sénior devaient rédigé des procédures et diverses documentations, tout en intervenant sur des problèmes et en

automatisant des tâches. J’ai également eu l’occasion d’aborder l’architecture et la veille technologique.

La DSI de la Société Générale, connue sous le nom de GTS (Global Technologies and Services), est composée de plusieurs équipes, dont l’équipe IAS (Infrastructure As a Service) responsable de la construction des services d’infrastructure dans le domaine traditionnel (architecture physique, non cloud). Au sein de l’équipe IAS se trouve l’équipe SYS, spécialisée dans les systèmes. J’ai intégré l’équipe « Automation » au sein de SYS, chargée de l’automatisation des infrastructures. En résumé, nous faisions partie de GTS/IAS/SYS.

Suite à de nombreuses demandes des utilisateurs, un nouveau projet a été lancé : la création d’un portail client en libre-service, permettant aux utilisateurs d’effectuer certaines tâches de manière autonome.

Airflow : Orchestration et Surveillance de Workflow

Airflow est à la fois un orchestrateur et un moniteur de workflows, développé en Python et en open source. Cette technologie nous permet d’automatiser des tâches en les organisant en ensembles appelés DAG (Directed Acyclic Graph). Ces DAG sont ensuite orchestrés et surveillés par Airflow grâce à son interface graphique conviviale.

Première partie de mon alternance

La conception de la solution s’est faite en amélioration continue. Ainsi, les différents problèmes rencontrés par les utilisateurs, qui étaient auparavant perdus ou renvoyés d’une équipe à l’autre, ont été automatisés et sont désormais accessibles à tout moment via le portail client en libre-service.

Grâce à ce projet, j’ai pu participer à des réunions d’équipe en tant que Junior Devops , appréhender les problèmes rencontrés et devenir force de proposition. Par la suite, mes actions consistaient à réaliser une à trois tâches maximum deux fois par semaine, afin de développer en front-end et en back-end la fonctionnalité « self-service » du portail client. Cela incluait la création de nouvelles entrées (endpoints) pour les utilisateurs finaux. Grâce aux retours des clients et de l’équipe, j’avais une idée claire de ce qui était réalisable (selon l’équipe) et de la pertinence de ces réalisations par rapport à la demande des clients.

Les technologies utilisées à la Société Générale sont relativement modernes et font appel à des API (Interfaces de Programmation d’Applications) pour la communication entre les différentes applications. Pour réaliser ce projet, j’ai donc utilisé la technologie Swagger pour le front-end de l’API et j’ai écrit des scripts en Python pour l’automatisation du système.

Ces réalisations techniques ont été d’une grande aide dans mon apprentissage. En effet, j’ai eu de nombreuses discussions avec mon tuteur, ce qui m’a permis de mieux comprendre le fonctionnement de la Société Générale, en complément des formations et des sensibilisations sur le professionnalisme en entreprise. J’ai également bénéficié du soutien et de l’assistance de mes collègues, ce qui m’a permis de progresser. La Société Générale propose également de nombreuses conférences et séminaires sur des sujets pertinents et innovants.

Puppet : Automatisation de la gestion de configuration avec un devops sénior

Puppet est un outil d’automatisation largement utilisé pour sa capacité à gérer efficacement la configuration des systèmes. Au cours de mon parcours professionnel, j’ai eu l’opportunité de travailler avec Puppet et d’expérimenter ses fonctionnalités avancées.

L’une des particularités de Puppet réside dans son déploiement d’agent, qui permet une automatisation sécurisée et centralisée de la gestion de la configuration. J’ai pu mettre en pratique mes connaissances en utilisant Puppet pour créer des modules, tant pour l’installation que pour la suppression de logiciels et de packages.

Puppet_Labs_Logo

L’automatisation des tâches de gestion de configuration avec Puppet a permis de simplifier et de standardiser les processus, ce qui a conduit à une meilleure efficacité opérationnelle au sein de l’équipe. En utilisant les ressources et les manifests de Puppet, j’ai pu définir et déployer des configurations spécifiques à grande échelle, tout en garantissant la cohérence et la conformité des systèmes.

Grâce à Puppet, j’ai pu optimiser la gestion des configurations, réduire les erreurs humaines et assurer la cohérence des environnements. Cela a considérablement amélioré la stabilité et la fiabilité des infrastructures, tout en facilitant la scalabilité et la gestion des changements.

En travaillant avec Puppet, j’ai développé une solide compréhension des bonnes pratiques de gestion de configuration et acquis une expertise dans l’automatisation des processus de déploiement et de gestion des systèmes. Ces compétences sont essentielles pour garantir la disponibilité et la performance des infrastructures informatiques dans un environnement dynamique.

Au sein de la Société Générale, l’utilisation de Puppet a été une étape cruciale dans notre quête d’efficacité et d’agilité opérationnelle. Grâce à cet outil puissant, j’ai pu contribuer activement à l’amélioration des processus de gestion de configuration, permettant ainsi à l’équipe de gagner en productivité et en qualité de service.

En conclusion, ma maîtrise de Puppet et mon expérience dans l’automatisation de la gestion de configuration sont des atouts précieux pour relever les défis techniques et opérationnels rencontrés dans le domaine du DevOps. En suivant mes articles, vous pourrez acquérir des connaissances approfondies et devenir un junior devops pour arriver au niveau d’expert en DevOps, capable de mettre en œuvre des pratiques d’automatisation avancées pour optimiser les infrastructures et les processus informatiques.

Ces expériences m’ont permis de développer mes compétences techniques et mon savoir-faire, mais aussi d’acquérir une meilleure compréhension des enjeux d’une grande entreprise et de la manière dont les différents départements interagissent pour atteindre leurs objectifs communs.

DevOps #devops cv #devops junior #devops openclassroms #Expérience #outil devops