Skip to content

AzizBalma/MiniCloud-OpenStack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

☁️ Déploiement d'un Cloud OpenStack Multi-Utilisateurs

OpenStack Ubuntu MicroStack Horizon

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


📖 Présentation du Projet

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.

🎯 Objectifs

  • ☁️ 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

🏗️ Architecture du Cloud

┌─────────────────────────────────────────────────────────
│              🌐 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)        │
                  └────────────────────┘

💡 Cas d'Usage

  • 🎓 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

📋 Prérequis

Système

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

Accès

  • ✅ Privilèges sudo/root
  • ✅ Connexion SSH (si machine distante)
  • ✅ Accès au réseau pour téléchargements

Connaissances Recommandées

  • 🐧 Linux/Ubuntu basique
  • 🌐 Concepts réseau (IP, sous-réseaux, routage)
  • ☁️ Notions de virtualisation
  • 🔐 Gestion utilisateurs et permissions

🚀 Installation

Étape 1 : Mise à Jour du Système

# Mettre à jour les paquets
sudo apt update && sudo apt upgrade -y

# Redémarrer si nécessaire
sudo reboot

Étape 2 : Installation de MicroStack

# Installer MicroStack via Snap
sudo snap install microstack --classic

Étape 3 : Initialisation d'OpenStack

# Initialisation automatique avec mode control
sudo microstack init --auto --control

📝 Note : Cette commande configure automatiquement tous les services OpenStack

Étape 4 : Chargement des Variables d'Environnement

# Charger les credentials admin
source /var/snap/microstack/common/etc/microstack.rc

Étape 5 : Vérification de l'Installation

# 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


🌐 Accès à l'Interface Horizon

URL de Connexion

https://<IP_DE_VOTRE_VM>:443

Exemple : https://192.168.1.100:443

Credentials Administrateur

# Récupérer les identifiants admin
sudo cat /var/snap/microstack/common/etc/microstack.rc

Variables importantes :

  • OS_USERNAME : admin
  • OS_PASSWORD : [mot de passe généré]
  • OS_AUTH_URL : URL d'authentification Keystone

🔒 Certificat SSL

⚠️ Avertissement de sécurité : MicroStack utilise un certificat auto-signé.
Acceptez l'exception de sécurité dans votre navigateur (pour usage local uniquement).


👥 Configuration Multi-Utilisateurs

📊 Architecture des Utilisateurs

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

Étape 1 : Création des Projets

# Créer 3 projets isolés
microstack.openstack project create projet-alice
microstack.openstack project create projet-bob
microstack.openstack project create projet-charlie

Étape 2 : Création des Utilisateurs

# 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

Étape 3 : Attribution des Rôles

# 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 member

🎉 Résultat

Les utilisateurs peuvent maintenant se connecter à Horizon :

Utilisateur Login Mot de Passe Domaine
Alice alice alice123 default
Bob bob bob123 default
Charlie charlie charlie123 default

🛠️ Guide Administrateur

Préparation de l'Environnement

Avant que les utilisateurs puissent créer leurs ressources, l'administrateur doit :

1. 🌐 Configurer le Réseau Externe

# Marquer le réseau externe comme partagé
microstack.openstack network set --share external

2. 💿 Partager les Images

# 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

3. 📏 Configurer les Flavors

# 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

4. 📊 Ajuster les Quotas

# 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-alice

Quotas recommandés par utilisateur :

  • Instances : 5-10
  • vCPUs : 10-20
  • RAM : 10-20 GB
  • Volumes : 5
  • IPs flottantes : 3-5

🔧 Commandes Utiles d'Administration

# 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 list

🎯 Configuration des Environnements Utilisateur

Chaque utilisateur doit configurer son environnement via Horizon. Voici le guide étape par étape :

1. 🌐 Créer un Réseau Privé

Via Horizon :

  1. Se connecter avec ses identifiants
  2. Aller dans RéseauRéseaux
  3. Cliquer sur Créer un réseau
  4. Nommer le réseau (ex : alice-net)
  5. Cocher "État Admin" et "Créer un sous-réseau"

2. 📡 Configurer le Sous-Réseau

Dans l'assistant de création :

  1. Nom du sous-réseau : alice-subnet
  2. CIDR réseau : 192.168.10.0/24
  3. Passerelle : 192.168.10.1 (optionnel)
  4. Pool d'allocation : 192.168.10.10,192.168.10.200

3. 🔀 Créer un Routeur

  1. Aller dans RéseauRouteurs
  2. Cliquer sur Créer un routeur
  3. Nommer le routeur (ex : alice-rtr)
  4. Réseau externe : Sélectionner external
  5. Cliquer sur le routeur créé
  6. Onglet InterfacesAjouter une interface
  7. Sélectionner le sous-réseau privé (alice-subnet)

4. 🔒 Créer un Groupe de Sécurité

  1. Aller dans ProjetRéseauGroupes de sécurité
  2. Cliquer sur Créer un groupe
  3. Nom : alice-secgroup
  4. 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

5. 🔑 Créer une Paire de Clés SSH

  1. Aller dans ProjetCalculPaires de clés
  2. Cliquer sur Créer une paire de clés
  3. Nom : alice-key
  4. Type : SSH
  5. 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

6. 🖥️ Lancer une Instance (VM)

  1. Aller dans CalculInstances
  2. Cliquer sur Lancer une instance

Configuration :

  • Détails :

    • Nom : alice-vm-web
    • Zone de disponibilité : nova
  • Source :

    • Sélectionner une image (ex : Ubuntu 22.04)
  • Flavor :

    • Choisir m1.small ou équivalent
  • Réseaux :

    • Sélectionner alice-net
  • Groupes de sécurité :

    • Ajouter alice-secgroup
  • Paire de clés :

    • Sélectionner alice-key
  1. Cliquer sur Lancer l'instance

7. 🌍 Associer une IP Flottante

  1. Dans la liste des instances, cliquer sur la flèche à droite de alice-vm-web
  2. Sélectionner Associer une IP flottante
  3. Cliquer sur + pour allouer une nouvelle IP
  4. Sélectionner le pool external
  5. Associer l'IP à l'interface réseau de la VM

8. ✅ Tester la Connexion

# 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.com

📊 Exemples de Configuration par Utilisateur

🔷 Alice : Serveur Web Ubuntu

Objectif : 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.11

Dé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.11

🔶 Bob : VM SSH Sécurisée

Objectif : 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.12

Installation d'outils de dev :

sudo apt update
sudo apt install git python3-pip nodejs npm -y

🔴 Charlie : Serveur d'Application CentOS

Objectif : 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.13

Installation d'une stack LAMP :

sudo dnf update -y
sudo dnf install httpd mariadb-server php -y
sudo systemctl start httpd
sudo systemctl start mariadb

🔍 Monitoring et Gestion

Surveiller les Ressources

# 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

Gestion des Instances

# 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

Snapshots et Sauvegardes

# 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

🐛 Dépannage

Problème : Services OpenStack ne démarrent pas

# 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

Problème : Impossible de se connecter à Horizon

# 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

Problème : VM ne peut pas accéder à Internet

# 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

Problème : Impossible de se connecter en SSH

# 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

📚 Ressources

Documentation Officielle

Tutoriels Complémentaires

Communauté


🎓 Compétences Acquises

✅ 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


🤝 Contributions

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

📄 Licence

Projet académique


Si ce guide vous aide, donnez-lui une étoile !

Construisons ensemble le cloud de demain ☁️

About

Guide pratique pour déployer un mini cloud privé avec OpenStack sur une infrastructure locale

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors