UNIVERSITE ABDELMALEK ESSAADI
FACULTE POLYDISCIPLINAIRE LARACHE
Master DevOps et Cloud Computing
Rapport
Environnement de Développement Virtualisé
pour Équipes à Distance
Alaoui Mohamed -Faiz Lhassan - Khalifi Youssef
Encadré par :
Dr. Yassine El borji
TABLE OF MATIÈRES
1 Introduction
Contexte général du projet
Objectifs du projet
Périmètre et limites
Problématique et besoins
Résultats attendus
2 Technologies et Outils
Proxmox VE : Présentation et fonctionnalités
Conteneurs LXC : Principes et avantages
VLANs : Segmentation et gestion réseau
Sauvegarde et restauration des conteneurs :
Stratégies utilisées
3 Étapes de Réalisation Création
Création des conteneurs LXC pour chaque équipe
Configuration des VLANs pour l'isolation réseau
Mise en place des sauvegardes et restaurations
4 Connexion SSH pour Accéder
aux Conteneurs LXC
Installation et Configuration de SSH sur les
Conteneurs
Connexion SSH depuis un Utilisateur
Vérifications et Sécurisation de la Connexion SSH
l’utilisation de l’envirenment a Distance
5 Conclusion General
1 Introduction:
1 -1 Contexte général du projet
Avec l’essor du télétravail et la nécessité croissante de collaborer à distance,
les équipes de développement rencontrent de nouveaux défis en termes de
partage des ressources, de sécurité, et d'efficacité. Les environnements de
développement traditionnels sont souvent limités lorsqu'il s'agit d'offrir une
isolation des ressources ou de gérer efficacement plusieurs équipes sur une
même infrastructure.
Ce projet vise à répondre à ces besoins en proposant un environnement de
développement virtualisé et containerisé, spécialement conçu pour les
équipes de développement travaillant à distance. En utilisant Proxmox VE
comme plateforme de gestion de la virtualisation et des conteneurs LXC
pour assurer une isolation des environnements, l'objectif est de fournir une
infrastructure flexible, sécurisée et scalable, adaptée aux besoins
spécifiques de chaque équipe.
La solution proposée inclut également l’utilisation des VLANs pour la
segmentation réseau et la mise en œuvre de mécanismes de sauvegarde et
de restauration des environnements. Elle permettra ainsi de garantir la
continuité du travail, la sécurité des données et une gestion optimisée des
ressources, tout en répondant aux attentes des équipes de développement
modernes.
1 -2 Objectifs du projet
L'objectif de ce projet est de créer un environnement de développement virtualisé,
sécurisé et adapté aux équipes travaillant à distance. En s'appuyant sur Proxmox
VE, des conteneurs LXC pour l'isolation, et des VLANs pour la segmentation réseau,
il vise à garantir une gestion optimisée des ressources, une sécurité renforcée, et
des mécanismes fiables de sauvegarde et de restauration. Ce système doit offrir
une solution scalable, performante et facile à administrer, répondant aux besoins
des équipes modernes.
1 -3 Périmètre et limites
L'objectif de ce projet est de créer un environnement de développement virtualisé,
sécurisé et adapté aux équipes travaillant à distance. En s'appuyant sur Proxmox
VE, des conteneurs LXC pour l'isolation, et des VLANs pour la segmentation réseau,
il vise à garantir une gestion optimisée des ressources, une sécurité renforcée, et
des mécanismes fiables de sauvegarde et de restauration. Ce système doit offrir
une solution scalable, performante et facile à administrer, répondant aux besoins
des équipes modernes.
1 -4 Problématique et Besoins
Les équipes de développement à distance font face à des défis liés à l'isolation des
ressources, la sécurité des données, et la continuité des services. Les solutions
actuelles, souvent rigides, peinent à répondre à ces exigences, entraînant des
inefficacités et des risques de perte de données.
Pour y remédier, il est nécessaire de mettre en place une infrastructure flexible
offrant des environnements isolés, une segmentation réseau efficace, et des
mécanismes fiables de sauvegarde. La gestion centralisée des ressources et
l’évolutivité de la solution sont également cruciales pour s’adapter aux besoins des
équipes en pleine croissance.
1 -5 Résultats Attendus
Le projet vise à fournir un environnement de développement virtualisé, sécurisé et
isolé pour chaque équipe, garantissant une utilisation optimisée des ressources. Il
doit permettre une gestion simplifiée des environnements via Proxmox VE, assurer
la sécurité grâce à l’isolation réseau avec les VLANs, et offrir des mécanismes
fiables de sauvegarde et de restauration. Ce système doit être évolutif, performant
et adapté aux besoins spécifiques des équipes de développement à distance.
2 Technologies et Outils
Proxmox VE : Présentation et Fonctionnalités
Proxmox Virtual Environment (Proxmox VE) est une plateforme open-source de
virtualisation qui combine la gestion de machines virtuelles (VM) et de conteneurs.
Elle offre une interface web intuitive pour administrer facilement des
environnements virtualisés, en intégrant des technologies modernes pour répondre
aux besoins des entreprises.
1. Virtualisation hybride : Permet de gérer des machines virtuelles (basées sur
KVM) et des conteneurs (basés sur LXC) sur une même plateforme.
2. Interface web conviviale : Simplifie la gestion des ressources et des
configurations avec une interface utilisateur accessible.
3. Gestion centralisée : Intègre des outils de gestion centralisée pour les clusters,
facilitant l’administration multi-nœuds.
4. Réseaux avancés : Prise en charge de VLANs, bridges et autres configurations
réseau complexes.
5. Sauvegarde et restauration : Inclut des fonctionnalités intégrées pour
sauvegarder et restaurer les VM et conteneurs avec des outils comme
Proxmox Backup Server.
6. Scalabilité et haute disponibilité (HA) : Permet la création de clusters pour
assurer une haute disponibilité des services.
7. Support matériel étendu : Compatible avec une grande variété de matériels,
ce qui facilite son déploiement sur des infrastructures existantes.
8. Sécurité renforcée : Inclut des options comme l’authentification à deux
facteurs et des configurations réseau sécurisées.
Conteneurs LXC : Principes et avantages
LXC (Linux Containers) est une technologie de virtualisation légère qui utilise les
fonctionnalités natives du noyau Linux pour créer des conteneurs. Contrairement
aux machines virtuelles, les conteneurs partagent le même noyau du système
hôte tout en offrant un environnement isolé pour les processus. Chaque
conteneur dispose de ses propres fichiers système, utilisateurs, et réseau, le
rendant indépendant des autres conteneurs.
1. Légèreté : Les conteneurs consomment moins de ressources que les machines
virtuelles, car ils partagent le noyau du système hôte.
2. Performance : Grâce à l'absence de surcouche d'hyperviseur, les conteneurs
offrent des performances proches de celles du système hôte.
3. Isolation : Chaque conteneur fonctionne de manière isolée, garantissant la
sécurité et la séparation des environnements.
4. Flexibilité : LXC permet de créer et de configurer des environnements
spécifiques pour des applications ou des utilisateurs.
5. Facilité de gestion : Les conteneurs sont rapides à créer, à démarrer et à
arrêter, ce qui simplifie leur utilisation au quotidien.
6. Compatibilité réseau : Intégration facile avec des configurations réseau
complexes comme les VLANs.
7. Évolutivité : Les conteneurs permettent de gérer efficacement des
environnements multi-tenant, comme ceux nécessaires pour les équipes de
développement.
VLANs : Segmentation et gestion réseau
Un VLAN (Virtual Local Area Network) est une technologie de réseau qui permet
de segmenter un réseau physique en plusieurs réseaux logiques distincts. Chaque
VLAN fonctionne comme un réseau indépendant, bien qu'il partage la même
infrastructure physique. Cette segmentation est réalisée au niveau des
commutateurs réseau en attribuant des ports ou des appareils spécifiques à des
VLANs définis.
Sauvegarde et Restauration des Conteneurs :
Stratégies Utilisées
Sauvegarde complète des conteneurs (Full Backup)
Principe : Une copie complète du conteneur est réalisée, incluant son
système de fichiers, ses configurations, et ses données.
Avantage : Assure une restauration rapide et complète en cas de
problème majeur.
Outil utilisé : Fonctionnalité native de Proxmox VE, permettant de
planifier des sauvegardes régulières.
Conclusion
Proxmox VE, associé aux conteneurs LXC, aux VLANs et aux stratégies de
sauvegarde, offre une solution complète pour la virtualisation et la gestion
d’environnements isolés. Proxmox VE gère la virtualisation avec une interface
centralisée, permettant de créer et administrer des conteneurs LXC, qui assurent
une isolation efficace des ressources. Les VLANs segmentent le réseau,
renforçant l’isolation et la sécurité tout en optimisant la gestion des flux. Enfin,
les sauvegardes régulières et les restaurations automatisées via Proxmox
garantissent la continuité des services et la protection des données, même en
cas d’incident. Cette combinaison offre une infrastructure performante, flexible
et sécurisée.
3 Étapes de Réalisation Création
Création des conteneurs LXC pour chaque équipe
1. Création du Conteneur pour le Développement Java
Technologies utilisées :
Proxmox VE pour la gestion et la création du conteneur LXC.
Docker pour la gestion des containers applicatifs.
JDK (Java Development Kit) pour le développement Java.
Git pour la gestion des versions et des dépôts de code.
MySQL pour la gestion de base de données.
Gedit pour l’édition des fichiers de code et de configuration.
Stratégie :
Création d’un conteneur LXC dédié avec Proxmox VE.
Installation des technologies nécessaires : JDK, Docker, Git et MySQL via
les gestionnaires de paquets de l’OS (par exemple, apt pour Ubuntu).
Configuration de Git pour récupérer le code depuis des dépôts et de
Docker pour les environnements de développement conteneurisés.
MySQL configuré pour gérer les bases de données pour les projets Java.
Gedit installé pour une interface simple de rédaction de code dans
l’environnement graphique.
la resultas de l’envernment JAVA
l’interface PhpMyAdmin via le Conteneur de l’equipe java
les version des technologies utiliser dans le conteneur java
(git - java - mySql - docker )
l’utilisation de l’editeur Gedit sur la machine local
2. Création du Conteneur pour le Développement Python
Technologies utilisées :
Proxmox VE pour la gestion du conteneur LXC.
Docker pour la gestion des conteneurs d’applications Python.
Git pour la gestion du code source.
VSCode comme éditeur de code pour le développement Python.
Stratégie :
Création d’un conteneur LXC dédié avec Proxmox VE.
Installation des outils nécessaires : Docker, Git, et VSCode.
Configuration de Docker pour gérer les environnements Python
conteneurisés.
Git utilisé pour cloner ou récupérer les projets Python.
Installation de VSCode pour fournir un éditeur de code robuste et
complet.
Conclusion
Les conteneurs LXC sont créés pour chaque équipe de développement, avec une
installation des technologies nécessaires à leur travail spécifique. Proxmox VE
assure l’isolation et la gestion des ressources, garantissant ainsi des
environnements de développement dédiés et optimisés pour Java et Python. Les
technologies comme Docker, Git, MySQL, VSCode, et JDK sont installées et
configurées selon les besoins de chaque équipe.
Configuration des VLANs pour l'Isolation Réseau
1. Objectif de la Configuration des VLANs
L’objectif principal de la configuration des VLANs (Virtual Local Area Networks) est
d’assurer une isolation réseau efficace entre les différentes équipes de
développement, garantissant ainsi que les communications entre les équipes sont
limitées aux flux nécessaires. Chaque équipe (Java et Python) aura son propre
VLAN, ce qui permet une séparation des données et un contrôle plus précis sur la
sécurité et la gestion du trafic réseau.
2. Étapes de Configuration des VLANs
A. Création des VLANs
1. Accéder à Proxmox VE et se connecter à l’interface d’administration.
2. Accéder à la configuration du réseau pour chaque nœud où les VLANs seront
configurés.
3. Créer deux VLANs distincts :
VLAN 10 pour l’équipe Java.
VLAN 20 pour l’équipe Python.
4. Configurer les interfaces réseau sur chaque nœud pour qu’elles prennent en
charge les VLANs. Cela peut être fait via des commandes Linux (par exemple,
en ajoutant des interfaces VLAN) ou directement dans les options de réseau de
Proxmox VE.
Exemple de commande :
ip link add link eth0 name eth0.10 type vlan id 10
ip link add link eth0 name eth0.20 type vlan id 20
Cette configuration assigne les VLANs aux interfaces physiques disponibles
sur le serveur.
B. Configuration des Interfaces Virtuelles
1. Configurer les interfaces virtuelles LXC pour chaque conteneur en associant
chaque conteneur à un VLAN spécifique :
Le conteneur Java sera associé au VLAN 10.
Le conteneur Python sera associé au VLAN 20.
2. Dans Proxmox VE, chaque conteneur LXC peut être configuré avec un réseau
virtuel spécifique. Cela peut être fait en ajustant les paramètres de bridge de
chaque conteneur pour correspondre aux VLANs configurés.
C. Configuration des Règles de Sécurité
1. Appliquer des règles de pare-feu pour chaque VLAN afin de restreindre les
communications entre les VLANs et protéger les ressources sensibles. Par
exemple :
Bloquer l'accès au VLAN 20 depuis le VLAN 10, sauf pour les services
explicitement nécessaires.
Autoriser uniquement les connexions internes à MySQL dans le VLAN 10,
entre le conteneur Java et la base de données.
2. Utiliser Proxmox VE pour configurer des firewall rules au niveau des VLANs et
des conteneurs, afin d’assurer la sécurité du réseau.
D. Test et Validation
1. Vérifier la connectivité entre les différents VLANs et les conteneurs pour
s'assurer que les règles d'isolement sont respectées :
Tester les connexions entre les conteneurs des différents VLANs pour
confirmer qu'ils ne peuvent pas communiquer directement.
Vérifier que les conteneurs au sein d’un même VLAN peuvent échanger des
données et que les règles de sécurité sont efficaces.
3. Résultat Attendu
Une fois la configuration terminée :
VLAN 10 isolera les ressources et le trafic du conteneur Java du reste du
réseau.
VLAN 20 isolera le conteneur Python et ses ressources.
La séparation permet de mieux contrôler le trafic réseau, d’optimiser les
performances et d’améliorer la sécurité des environnements de
développement.
Conclusion
La configuration des VLANs est essentielle pour assurer l'isolation réseau entre les
équipes de développement Java et Python, garantissant ainsi que chaque équipe
travaille dans un environnement sécurisé et indépendant, sans interférences
externes.
Mise en Place des Sauvegardes et Restaurations
1. Objectif des Sauvegardes et Restaurations
Les sauvegardes et restaurations des conteneurs LXC sont essentielles pour
assurer la protection des données et la continuité des services en cas de panne ou
de perte de données. La mise en place d'une stratégie de sauvegarde efficace
permet de garantir que l'ensemble des environnements de développement (Java
et Python) peuvent être récupérés rapidement et en toute sécurité.
2. Stratégie de Sauvegarde
A. Types de Sauvegardes
1. Sauvegarde complète :
Sauvegarde de l'intégralité du conteneur LXC, incluant les fichiers, les
configurations et les données.
Cette méthode assure une restauration complète du conteneur en cas de
besoin, mais peut être gourmande en espace de stockage.
2. Sauvegarde incrémentielle :
Seules les modifications récentes sont sauvegardées (par rapport à la
dernière sauvegarde complète ou incrémentielle).
Cette approche permet de réduire le volume de données sauvegardées,
mais nécessite une sauvegarde complète initiale pour le bon
fonctionnement.
3. Sauvegarde automatisée :
Planification des sauvegardes pour qu'elles soient effectuées à intervalles
réguliers (par exemple, quotidiennement ou hebdomadairement).
Utilisation de cron jobs ou d'outils comme Proxmox Backup Server pour
automatiser le processus.
B. Configuration de la Sauvegarde sur Proxmox VE
1. Accéder à Proxmox VE et se rendre dans l'interface d'administration.
2. Sélectionner les conteneurs LXC à sauvegarder (Java et Python) et définir les
paramètres de sauvegarde :
Choisir un dossier de stockage externepour stocker les sauvegardes.
Définir la fréquence des sauvegardes).
3. Stratégie de Restauration
A. Processus de Restauration
1. Restauration complète : En cas de panne ou de problème majeur, vous
pouvez restaurer un conteneur à partir d’une sauvegarde complète. Cette
opération implique la récupération de l’intégralité du conteneur LXC, y
compris toutes les configurations et les données.
2. Restauration incrémentielle : Si vous avez utilisé des sauvegardes
incrémentielles, la restauration se fera à partir de la dernière sauvegarde
complète, suivie des sauvegardes incrémentielles. Cela permet de récupérer
l'état exact du conteneur jusqu'au dernier point de sauvegarde.
B. Processus de Restauration avec Proxmox VE
1. Depuis l’interface de gestion Proxmox, sélectionnez le conteneur que vous
souhaitez restaurer.
2. Choisissez l'option de restauration à partir de la sauvegarde disponible, en
sélectionnant le bon fichier de sauvegarde.
4. Test et Validation
Une fois les sauvegardes et restaurations configurées :
Tester la restauration sur un environnement de test pour vous assurer que
les données sont récupérées correctement.
Vérifier que les services dans les conteneurs (par exemple, les bases de
données MySQL, les applications Java/Python) fonctionnent correctement
après restauration.
Vérifier l'intégrité des données en comparant les fichiers restaurés avec les
versions sauvegardées.
5. Résultat Attendu
Une fois les sauvegardes et restaurations mises en place :
Vous disposerez d’une solution robuste pour la protection des données et la
reprise après sinistre des environnements de développement.
Les sauvegardes automatisées garantiront que vous disposez toujours d’une
copie récente des données critiques sans intervention manuelle.
La restauration rapide et fiable assurera une continuité du service en cas de
panne.
Conclusion
La mise en place de sauvegardes et restaurations sur Proxmox VE garantit une
haute disponibilité et une protection efficace des données. En utilisant une
combinaison de sauvegardes complètes, incrémentielles et automatisées, vous
pourrez sécuriser les environnements de développement Java et Python tout en
garantissant une reprise rapide en cas d’incident.
4 Connexion SSH pour Accéder aux
Conteneurs LXC
L'accès aux conteneurs LXC via SSH est une étape importante pour permettre aux
utilisateurs de se connecter à leur environnement de développement respectif
(Java ou Python) à distance. Voici les étapes à suivre pour configurer et établir
une connexion SSH sécurisée.
1. Installation et Configuration de SSH sur les Conteneurs
Pour permettre l'accès SSH aux conteneurs LXC, il faut d'abord installer et
configurer le serveur SSH sur chaque conteneur.
A. Installer OpenSSH Server sur le Conteneur
1. Accéder au conteneur via Proxmox VE :
Connectez-vous à l'interface de gestion Proxmox VE.
Accédez à votre conteneur LXC (Java ou Python) et ouvrez une console.
2. Installer OpenSSH : Sur chaque conteneur (Java et Python), vous devez
installer le serveur SSH.
2. Connexion SSH depuis un Utilisateur
Une fois le serveur SSH installé et configuré, les utilisateurs peuvent se
connecter à leurs conteneurs via SSH à partir de leurs machines locales. Voici les
étapes :
A. Connexion via SSH avec un Nom d'Utilisateur et Mot de Passe
1. Récupérer l'IP du conteneur :
Dans l'interface de gestion Proxmox, chaque conteneur dispose d'une
adresse IP locale. Assurez-vous que le conteneur Java ou Python a une
adresse IP attribuée.
2. Se connecter via SSH ssh username@<IP-du-conteneur>
. Connexion SSH depuis Kitty
Exemple de connexion ssh avec l’envirenment Python
Connextion de vsCode Depuis la machine local vers
l’enverenment avec ssh
Le dossier 'config' contient la configuration de la connexion SSH vers
l'environnement.
4. l'utilisation de l'environnement a distance (Python)
A . La création d'un fichier Python dans le dossier home de l'utilisateur.
B. l’execution d’un code python qui fait l’addition de deux nombres
C . Test de docker
D. Verification de conteneur via la commande Curl
E. creation d’un Depot sur GitHub
F. push le code depuis l’enverernment dans le repot GitHub
Conclusion Générale
Ce projet a consisté en la création d'un environnement de développement
virtualisé et sécurisé pour des équipes travaillant à distance. En utilisant
Proxmox VE pour la gestion de la virtualisation, les conteneurs LXC pour
l'isolation des environnements et les VLANs pour la segmentation réseau, nous
avons mis en place une infrastructure qui répond aux exigences de sécurité,
d'isolation et d'optimisation des ressources.
Les technologies employées permettent d'assurer une gestion simplifiée des
ressources tout en garantissant la flexibilité nécessaire pour adapter rapidement
l'environnement aux besoins évolutifs des équipes. Les stratégies de sauvegarde
et de restauration des conteneurs ont également été intégrées pour garantir la
sécurité et la continuité des services.
Ce projet a permis de démontrer l'efficacité des solutions de virtualisation
modernes pour la création d'environnements de développement à distance, tout
en facilitant la gestion centralisée, la sécurité des données et la gestion optimale
des ressources. Au final, l'infrastructure mise en place offre une solution robuste,
évolutive et facilement maintenable pour les équipes de développement
réparties.