Mini-Cloud Privé avec Isolation Multi-Utilisateurs
Guide complet de déploiement d'une infrastructure cloud OpenStack avec gestion de projets, utilisateurs et ressources isolées
🚀 Installation • 👥 Configuration Utilisateurs • 🛠️ Administration
Ce projet démontre le déploiement d'un cloud privé OpenStack utilisant MicroStack sur Ubuntu 22.04. L'infrastructure permet à plusieurs utilisateurs de créer et gérer leurs propres ressources cloud (VMs, réseaux, routeurs, IPs flottantes) de manière totalement isolée via l'interface web Horizon.
- ☁️ Déployer un cloud privé avec OpenStack (MicroStack)
- 👥 Gérer plusieurs utilisateurs avec isolation complète
- 🌐 Créer des réseaux virtuels privés et publics
- 🖥️ Provisionner des VMs avec différentes distributions Linux
- 🔒 Configurer la sécurité avec groupes de sécurité et pare-feu
- 🌍 Exposer les services via IPs flottantes
┌─────────────────────────────────────────────────────────
│ 🌐 OpenStack Horizon Dashboard
│ (Interface Web)
└─────────────────────────────────────────────────────────
│
┌───────────────────┼───────────────────┐
│ │ │
┌───▼────┐ ┌───▼────┐ ┌───▼────┐
│Alice │ │Bob │ │Charlie │
│Project │ │Project │ │Project │
└───┬────┘ └───┬────┘ └───┬────┘
│ │ │
┌───▼────────┐ ┌───▼────────┐ ┌───▼────────┐
│ alice-net │ │ bob-net │ │charlie-net │
│192.168.10.0│ │192.168.20.0│ │192.168.30.0│
│ /24 │ │ /24 │ │ /24 │
└─────┬──────┘ └─────┬──────┘ └─────┬──────┘
│ │ │
┌─────▼──────┐ ┌─────▼──────┐ ┌─────▼──────┐
│ alice-rtr │ │ bob-rtr │ │ charlie-rtr│
│ │ │ │ │ │
└─────┬──────┘ └─────┬──────┘ └─────┬──────┘
│ │ │
└──────────────────┴──────────────────┘
│
┌─────────▼──────────┐
│ Réseau Externe │
│ (Internet) │
└────────────────────┘
- 🎓 Formation cloud computing : Apprendre OpenStack et IaaS
- 🧪 Environnement de test : Tester des applications en isolation
- 👨💻 Développement multi-projets : Chaque dev son environnement
- 🏢 Mini-datacenter privé : Alternative aux clouds publics
| Composant | Spécification |
|---|---|
| OS | Ubuntu 22.04 LTS |
| CPU | 4 cores minimum (8 recommandés) |
| RAM | 8 GB minimum (16 GB recommandés) |
| Disque | 50 GB minimum (100 GB recommandés) |
| Réseau | Connexion Internet stable |
- ✅ Privilèges sudo/root
- ✅ Connexion SSH (si machine distante)
- ✅ Accès au réseau pour téléchargements
- 🐧 Linux/Ubuntu basique
- 🌐 Concepts réseau (IP, sous-réseaux, routage)
- ☁️ Notions de virtualisation
- 🔐 Gestion utilisateurs et permissions
# Mettre à jour les paquets
sudo apt update && sudo apt upgrade -y
# Redémarrer si nécessaire
sudo reboot# Installer MicroStack via Snap
sudo snap install microstack --classic# Initialisation automatique avec mode control
sudo microstack init --auto --control📝 Note : Cette commande configure automatiquement tous les services OpenStack
# Charger les credentials admin
source /var/snap/microstack/common/etc/microstack.rc# Vérifier que tous les services sont actifs
microstack.openstack service list✅ Sortie attendue : Liste des services (nova, neutron, glance, keystone, etc.) avec statut enabled
https://<IP_DE_VOTRE_VM>:443
Exemple : https://192.168.1.100:443
# Récupérer les identifiants admin
sudo cat /var/snap/microstack/common/etc/microstack.rcVariables importantes :
OS_USERNAME: adminOS_PASSWORD: [mot de passe généré]OS_AUTH_URL: URL d'authentification Keystone
Acceptez l'exception de sécurité dans votre navigateur (pour usage local uniquement).
| Utilisateur | Projet | Réseau Privé | Sous-réseau | Routeur | VM | IP Flottante |
|---|---|---|---|---|---|---|
| 👤 Alice | projet-alice | alice-net | 192.168.10.0/24 | alice-rtr | Ubuntu Web Server | 185.20.30.11 |
| 👤 Bob | projet-bob | bob-net | 192.168.20.0/24 | bob-rtr | Ubuntu SSH VM | 185.20.30.12 |
| 👤 Charlie | projet-charlie | charlie-net | 192.168.30.0/24 | charlie-rtr | CentOS App Server | 185.20.30.13 |
# Créer 3 projets isolés
microstack.openstack project create projet-alice
microstack.openstack project create projet-bob
microstack.openstack project create projet-charlie# Créer les utilisateurs avec leurs mots de passe
microstack.openstack user create --project projet-alice --password alice123 alice
microstack.openstack user create --project projet-bob --password bob123 bob
microstack.openstack user create --project projet-charlie --password charlie123 charlie# Attribuer le rôle "member" à chaque utilisateur dans son projet
microstack.openstack role add --user alice --project projet-alice member
microstack.openstack role add --user bob --project projet-bob member
microstack.openstack role add --user charlie --project projet-charlie memberLes utilisateurs peuvent maintenant se connecter à Horizon :
| Utilisateur | Login | Mot de Passe | Domaine |
|---|---|---|---|
| Alice | alice | alice123 | default |
| Bob | bob | bob123 | default |
| Charlie | charlie | charlie123 | default |
Avant que les utilisateurs puissent créer leurs ressources, l'administrateur doit :
# Marquer le réseau externe comme partagé
microstack.openstack network set --share external# Lister les images disponibles
microstack.openstack image list
# Rendre une image publique
microstack.openstack image set --public <image-id>Images recommandées :
- Ubuntu 22.04 LTS
- CentOS 8 Stream
- Debian 11
# Lister les flavors disponibles
microstack.openstack flavor list
# Créer un flavor personnalisé (optionnel)
microstack.openstack flavor create --ram 2048 --disk 20 --vcpus 2 m1.small.custom# Voir les quotas d'un projet
microstack.openstack quota show projet-alice
# Augmenter les quotas si nécessaire
microstack.openstack quota set --instances 10 --cores 20 --ram 20480 projet-aliceQuotas recommandés par utilisateur :
- Instances : 5-10
- vCPUs : 10-20
- RAM : 10-20 GB
- Volumes : 5
- IPs flottantes : 3-5
# Lister tous les projets
microstack.openstack project list
# Lister tous les utilisateurs
microstack.openstack user list
# Voir les détails d'un utilisateur
microstack.openstack user show alice
# Réinitialiser le mot de passe d'un utilisateur
microstack.openstack user set --password nouveau_mdp alice
# Lister toutes les instances (tous projets)
microstack.openstack server list --all-projects
# Vérifier l'état des services
microstack.openstack compute service list
microstack.openstack network agent listChaque utilisateur doit configurer son environnement via Horizon. Voici le guide étape par étape :
Via Horizon :
- Se connecter avec ses identifiants
- Aller dans Réseau → Réseaux
- Cliquer sur Créer un réseau
- Nommer le réseau (ex :
alice-net) - Cocher "État Admin" et "Créer un sous-réseau"
Dans l'assistant de création :
- Nom du sous-réseau :
alice-subnet - CIDR réseau :
192.168.10.0/24 - Passerelle :
192.168.10.1(optionnel) - Pool d'allocation :
192.168.10.10,192.168.10.200
- Aller dans Réseau → Routeurs
- Cliquer sur Créer un routeur
- Nommer le routeur (ex :
alice-rtr) - Réseau externe : Sélectionner
external - Cliquer sur le routeur créé
- Onglet Interfaces → Ajouter une interface
- Sélectionner le sous-réseau privé (
alice-subnet)
- Aller dans Projet → Réseau → Groupes de sécurité
- Cliquer sur Créer un groupe
- Nom :
alice-secgroup - Ajouter des règles :
Règles recommandées :
| Direction | Protocol | Port | CIDR |
|---|---|---|---|
| Ingress | TCP | 22 (SSH) | 0.0.0.0/0 |
| Ingress | TCP | 80 (HTTP) | 0.0.0.0/0 |
| Ingress | TCP | 443 (HTTPS) | 0.0.0.0/0 |
| Ingress | ICMP | - | 0.0.0.0/0 |
- Aller dans Projet → Calcul → Paires de clés
- Cliquer sur Créer une paire de clés
- Nom :
alice-key - Type :
SSH - Télécharger la clé privée (
.pem) et la conserver en sécurité
# Sur votre machine locale, sécuriser la clé
chmod 400 alice-key.pem- Aller dans Calcul → Instances
- Cliquer sur Lancer une instance
Configuration :
-
Détails :
- Nom :
alice-vm-web - Zone de disponibilité :
nova
- Nom :
-
Source :
- Sélectionner une image (ex : Ubuntu 22.04)
-
Flavor :
- Choisir
m1.smallou équivalent
- Choisir
-
Réseaux :
- Sélectionner
alice-net
- Sélectionner
-
Groupes de sécurité :
- Ajouter
alice-secgroup
- Ajouter
-
Paire de clés :
- Sélectionner
alice-key
- Sélectionner
- Cliquer sur Lancer l'instance
- Dans la liste des instances, cliquer sur la flèche à droite de
alice-vm-web - Sélectionner Associer une IP flottante
- Cliquer sur + pour allouer une nouvelle IP
- Sélectionner le pool
external - Associer l'IP à l'interface réseau de la VM
# Se connecter en SSH à la VM
ssh -i alice-key.pem ubuntu@185.20.30.11
# Tester la connectivité Internet depuis la VM
ping -c 4 google.comObjectif : Héberger un site web accessible publiquement
Configuration :
Réseau : alice-net (192.168.10.0/24)
Routeur : alice-rtr
Sécurité : SSH (22) + HTTP (80) + HTTPS (443)
VM : Ubuntu 22.04 - m1.medium
IP Flottante : 185.20.30.11Déploiement d'un serveur web :
# Après connexion SSH
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
# Tester
curl http://185.20.30.11Objectif : Serveur de développement accessible uniquement en SSH
Configuration :
Réseau : bob-net (192.168.20.0/24)
Routeur : bob-rtr
Sécurité : SSH (22) uniquement
VM : Ubuntu 22.04 - m1.small
IP Flottante : 185.20.30.12Installation d'outils de dev :
sudo apt update
sudo apt install git python3-pip nodejs npm -yObjectif : Déployer une application avec base de données
Configuration :
Réseau : charlie-net (192.168.30.0/24)
Routeur : charlie-rtr
Sécurité : HTTP (80) + ICMP (ping)
VM : CentOS 8 Stream - m1.medium
IP Flottante : 185.20.30.13Installation d'une stack LAMP :
sudo dnf update -y
sudo dnf install httpd mariadb-server php -y
sudo systemctl start httpd
sudo systemctl start mariadb# Utilisation globale des ressources
microstack.openstack usage list
# Statistiques d'une instance
microstack.openstack server show alice-vm-web
# Logs d'une instance
microstack.openstack console log show alice-vm-web
# Accès console VNC (via Horizon)
# Calcul → Instances → Console# Arrêter une instance
microstack.openstack server stop alice-vm-web
# Démarrer une instance
microstack.openstack server start alice-vm-web
# Redémarrer une instance
microstack.openstack server reboot alice-vm-web
# Supprimer une instance
microstack.openstack server delete alice-vm-web# Créer un snapshot d'une instance
microstack.openstack server image create --name alice-vm-snapshot alice-vm-web
# Lister les snapshots
microstack.openstack image list
# Restaurer depuis un snapshot
microstack.openstack server create --image alice-vm-snapshot --flavor m1.small alice-vm-restored# Vérifier l'état des services
sudo snap services microstack
# Redémarrer tous les services
sudo snap restart microstack
# Voir les logs
sudo snap logs microstack -n 100# Vérifier que le port 443 est ouvert
sudo netstat -tlnp | grep 443
# Vérifier l'IP de la machine
ip addr show
# Tester l'accès depuis la machine locale
curl -k https://localhost:443# Vérifier la configuration du routeur
microstack.openstack router show alice-rtr
# Vérifier la gateway externe
microstack.openstack router show alice-rtr -c external_gateway_info
# Vérifier les routes de la VM
# (depuis la console de la VM)
ip route# Vérifier les règles de sécurité
microstack.openstack security group rule list alice-secgroup
# Ajouter une règle SSH si manquante
microstack.openstack security group rule create --protocol tcp --dst-port 22 alice-secgroup
# Vérifier la clé SSH
ssh -vvv -i alice-key.pem ubuntu@185.20.30.11✅ Déploiement d'une infrastructure cloud privée
✅ Gestion multi-tenancy et isolation des ressources
✅ Configuration réseau virtuel (SDN avec Neutron)
✅ Administration de projets et utilisateurs (Keystone)
✅ Provisionnement de machines virtuelles (Nova)
✅ Gestion d'images et de flavors (Glance)
✅ Configuration de groupes de sécurité (pare-feu cloud)
✅ Utilisation d'IPs flottantes pour exposition publique
✅ Troubleshooting et monitoring d'environnements cloud
Ce projet est ouvert aux contributions ! N'hésitez pas à :
- 🐛 Signaler des bugs ou problèmes
- 💡 Proposer des améliorations
- 📝 Améliorer la documentation
- 🔧 Ajouter des scripts d'automatisation