OpenStack est une plateforme de cloud computing open source et gratuite qui permet de créer et de gérer des infrastructures de cloud IaaS (Infrastructure as a Service). Elle offre des services modulaires et extensibles de stockage, de réseau et autres aspects de l’infrastructure Cloud.

Pour installer OpenStack via DevStack sur Ubuntu Server 22.04 LTS, il faut cloner le dépôt DevStack, configurer local.conf, lancer stack.sh, puis accéder à Horizon via ton navigateur avec l’adresse IP de votre machine.

Introduction à OpenStack

Dans cet article, j’explique les concepts fondamentaux d’OpenStack en plus de te montrer pas à pas comment installer OpenStack sur Ubuntu Server 22.04 LTS à l’aide de DevStack.

Qu’est-ce que OpenStack ?

OpenStack est une plateforme de Cloud Computing Open Source employée pour déployer des infrastructures de Cloud (IaaS) privés, publics.

Il offre un large éventail de services, tels que la gestion de compute, de stockage, de réseau, d’images et d’identité, ce qui en fait une solution flexible et puissante pour les entreprises et les organisations de toutes tailles.

Historique et évolution

OpenStack a été lancé en 2010 en tant que projet conjoint de la NASA et de Rackspace Hosting, visant à créer une alternative open source aux solutions de cloud computing propriétaires.

NASA et Rackspace Technology

Depuis son lancement, OpenStack a connu une croissance rapide et une adoption généralisée, attirant une large communauté de développeurs, d’entreprises et d’organisations du monde entier.

Le projet OpenStack est géré par la OpenStack Foundation, une organisation à but non lucratif qui supervise le développement et la gouvernance de la plateforme.

Principales fonctionnalités d’OpenStack

Comme je l’ai souligné plus haut, OpenStack est une platforme modulaire et extensible formée de plusieurs composantes, représentant chacune, un grand groupe de fonctionnalités.

Foncitonnalités OpenStack

Nova

Module de calcul qui permet le provisionnement et la gestion de machines virtuelles (instances) sur des infrastructures physiques sous-jacentes.

Il fournit une API pour le déploiement et la gestion de machines virtuelles sur divers hyperviseurs, notamment KVM, VMware, et Xen.

Neutron

Service de réseau qui offre une gestion flexible et extensible des réseaux virtuels, des sous-réseaux et des règles de sécurité.

Il offre des services de mise en réseau flexibles et extensibles pour connecter les instances virtuelles. Neutron prend en charge plusieurs technologies de réseau, y compris les réseaux SDN (Software Defined Networking).

Swift et Cinder

Services de stockage objet (Swift) et de stockage bloc (Cinder) pour le stockage distribué et le provisionnement de volumes de stockage aux instances.

Keystone

Keystone est le service d’authentification et d’autorisation d’OpenStack. Il fournit une authentification centralisée et une gestion des autorisations pour les utilisateurs et les services d’OpenStack.

Glance

Service de gestion des images de machine virtuelle, permettant le stockage, le partage et le provisionnement rapide d’images système.

Il permet de stocker, de découvrir et de distribuer des images de machine virtuelle, facilitant ainsi le déploiement rapide et reproductible d’instances virtuelles.

Heat (Orchestration)

Heat permet le déploiement et la gestion d’applications cloud en automatisant la création de ressources cloud à l’aide de modèles.

Horizon

C’est l’Interface utilisateur web (tableau de bord) offrant une vue centralisée et conviviale de l’infrastructure OpenStack, permettant la gestion et le contrôle des ressources cloud.

Stockage de bloc et stockage objet: la différence

Le stockage bloc (Cinder) et le stockage objet (Swift) sont deux services de stockage distincts fournis par OpenStack, chacun répondant à des besoins spécifiques dans une infrastructure cloud.

Services de stockage sur OpenStack

Voici les principales différences entre ces deux types de stockage :

Stockage Bloc (Cinder)

  • Utilisation : Le stockage bloc est utilisé pour fournir un stockage de blocs aux instances de machines virtuelles. Il permet de créer et de gérer des volumes de stockage qui peuvent être attachés et détachés dynamiquement aux instances.
  • Performance : Le stockage bloc est généralement utilisé pour des applications nécessitant des performances élevées et un accès bas niveau au stockage, telles que les bases de données ou les applications transactionnelles.
  • Protocoles : Cinder prend en charge les protocoles de stockage traditionnels tels que iSCSI, Fibre Channel et NFS, offrant ainsi une compatibilité avec une large gamme d’applications et de systèmes d’exploitation.
  • Scalabilité : Le stockage bloc peut être mis à l’échelle de manière flexible en ajoutant de nouveaux nœuds de stockage, permettant ainsi de répondre à la demande croissante de capacité de stockage.

Stockage Objet (Swift)

  • Utilisation : Le stockage objet est utilisé pour stocker et récupérer des données sous forme d’objets, tels que des fichiers, des images, des vidéos, etc. Chaque objet est associé à des métadonnées et peut être accédé via une URL unique.
  • Extensibilité : Le stockage objet est conçu pour gérer de vastes quantités de données non structurées et est particulièrement adapté au stockage d’archives, de sauvegardes, de contenu multimédia et d’autres données volumineuses.
  • Redondance et Durabilité : Swift offre une redondance et une durabilité élevées en répliquant automatiquement les données sur plusieurs nœuds de stockage, assurant ainsi la disponibilité des données même en cas de défaillance matérielle.
  • Accessibilité : Les données stockées dans Swift peuvent être accessibles via une API RESTful standard, ce qui facilite l’intégration avec une variété d’applications et de services tiers.

En gros, la principale différence entre le stockage bloc (Cinder) et le stockage objet (Swift) réside dans leur utilisation et leur fonctionnement.

Le stockage bloc est adapté aux applications nécessitant un accès bas niveau au stockage et des performances élevées, tandis que le stockage objet est adapté au stockage d’objets volumineux et non structurés, offrant une extensibilité, une redondance et une durabilité élevées.

Qu’est-ce que DevStack ?

DevStack est un projet open-source qui permet de déployer rapidement un environnement OpenStack sur une seule machine, ce qui en fait un outil idéal pour les développeurs et les testeurs.

C’est un peu la raison pour laquelle, je l’ai choisi pour tester OpenStack.

DevStack Scripts

DevStack automatise le processus d’installation et de configuration d’OpenStack, en utilisant des scripts pour installer les différents composants d’OpenStack sur une machine Ubuntu.

Architecture OpenStack

Comme on peut le voir sur le schéma ci-dessus, les différents services d’OpenStack interagissent ensemble via des APIs pour fournir une plateforme de cloud computing complète, évolutive et flexible, adaptée à divers cas d’utilisation.

Architecture OpenStack

Installation OpenStack avec DevStack

Il existe plusieurs manières d’installer OpenStack. Chaque méthode ayant ses contraintes en termes de ressources. En effet, certaines méthodes sont beaucoup plus gourmandes en ressources (processeur, RAM, taille disque dur, etc.)

Linux Terminal sur Mac

Donc comme je disais, il existe plusieurs façons d’installer OpenStack, en fonction des besoins et des compétences techniques :

  • DevStack : Idéal pour les développeurs et les testeurs, DevStack permet de déployer rapidement un environnement OpenStack sur une seule machine.
  • Packaging distributions: Certains systèmes d’exploitation proposent des packages pré-compilés d’OpenStack, facilitant ainsi l’installation sur des distributions Linux comme Ubuntu, CentOS, ou Red Hat Enterprise Linux.
  • Installation Manuelle: Pour ceux qui préfèrent un contrôle plus fin sur le processus d’installation, il est possible d’installer chaque composant d’OpenStack manuellement en suivant les instructions de la documentation officielle.
  • Déploiements “conteneurisés”: L’utilisation de conteneurs, par exemple avec Kubernetes, offre une manière flexible et évolutive de déployer OpenStack en conteneurs.
  • Outils de déploiements automatisés: Des outils comme Ansible, Puppet, et Chef peuvent automatiser le déploiement et la gestion d’OpenStack, offrant une solution efficace pour les déploiements à grande échelle.

Pour installer et tester OpenStack, j’ai utilisé une machine virtuelle avec une installation d’Ubuntu 22.04 LTS. L’outil de virtualisation que j’ai utilisé s’appelle VMWare Fusion.

VMWare Fusion OpenStack

Ce logicel étant payant, nous avons opté pour l’option “Personal Use License” afin de bénéficier d’une utilisation gratuite – comme tu peux le voir sur l’écran ci-dessus.

Ensuite, nous avons téléchargé l’image de Ubuntu Server 22.04 LTS.

Caractéristiques de la machine virtuelle

  • 4GB RAM
  • 50GB Disque
  • 2 vCPUs
Ressources matérielles OpenStack DevStack
  • Utilisateur avec privilèges “sudo”
  • Connexion Internet

Fixation de l’adresse du serveur

C’est une bonne pratique de toujours fixer l’adresse d’un serveur. Le changement automatique par DHCP de l’adresse IP du serveur peut redemander une reconfiguration du serveur sur la nouvelle adresse sans quoi, ce dernier peut cesser de fonctionner ou d’être accessible.

Pour ce faire, j’ai exécuté la commande suivante:

sudo nano /etc/netplan/00-installer-config.yaml

Suivie de la commande :

sudo netplan apply
ip addr show

Mises à jour du système

Il suffit d’exécuter les commandes suivantes:

sudo apt-get update -y
sudo apt upgrade -y

sudo reboot

Création utilisateur système pour OpenStack

Les bonnes pratiques nous recommandent de dédier un utilisateur système ayant des privilèges “sudo” pour DevStack. Pour ce faire, nous exécutons les commandes suivantes:

sudo useradd -m -d /opt/stack stack
sudo usermod -aG sudo stack
sudo chmod +x /opt/stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

Installation d’OpenStack

Maintenant, je me connecte avec l’utilisateur “stack” mais avec le mot de passe de mon utilisateur ordinaire ayant les droits “sudo” via la commande :

sudo -i -u stack

A ce stade, si l’outil git n’est pas installé, l’installer via la commande suivante:

sudo apt install git -y

utilisant la commande “git”, il est maintenant temps de cloner DevStack via la commande suivante :

git clone https://git.openstack.org/openstack-dev/devstack

Création du fichier de configuration de DevStack

Se déplacer dans le répertoire “devstack” et exécuter la commande suivante :

cp samples/local.conf local.conf

On peut maintenant le modifier grâce à la commande suivante :

sudo nano local.conf

Y mettre la configuration suivante :

[[local|localrc]]# Password for KeyStone, Database, RabbitMQ and Service
ADMIN_PASSWORD=DonneLeMotDePasseQuiTeConvient
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

# Host IP - get your Server/VM IP address from ip addr command

HOST_IP=192.168.1.150

Sauvegarder et quitter le fichier.

Attention:

  • La valeur du mot de passe que tu donnes à ADMIN_PASSWORD représente le mot de passe que tu utiliseras pour te connecter à OpenStack via l’interface de login de Horizon. Le nom d’utilisateur par défaut c’est admin.
  • La valeur de HOST_IP représente l’adresse IP de ton serveur Ubuntu.

Exécution script d’installation d’OpenStack

Pour lancer l’installation d’OpenStack sur ton serveur Ubuntu 22.04 LTS, exécute la commande suivante:

./stack.sh

Selon la vitesse de ta connexion internet, le process va finir plus ou moins rapidement. Après cela, les composantes d’OpenStack suivantes sont installées:

  • Horizon – Tableau de bord OpenStack
  • Nova
  • Glance
  • Neutron
  • Keystone
  • Cinder
  • Placement – API

A la fin du processus, tu devrais avoir un récap. te donnant l’adresse IP de connexion à OpenStack, l’URL d’accès à Horizon ainsi que le mot de passe à utiliser. Malheureusement pour mon cas, je ne retrouve pas la capture d’écran spécifique à cela.

Accéder à Horizon

J’entre dans mon navigateur:

192.168.1.150/dashboard

Et j’ai eu le résultat suivant:

Il est clair que quelque chose ne fonctionne pas.

Pour fixer cette erreur, je suis allé modifier le fichier settings.py grâce aux commandes suivantes:

sudo cd /opt/stack/horizon/
sudo cd openstack_dashboard/

sudo nano settings.py

Sur la ligne commençant par COMPRESS_ENABLED = True, remplacer “True” par “False”.

Erreur Horizon "The Keystone service is temporarily unavailable"

Après avoir fait cela, j’enregistre le fichier, je quitte et je reboot la machine :

En se connectant, j’ai eu une autre erreur m’empêchant de me connecter. En regardant les logs, j’ai pris connaissance d’un message que je peux résumer comme suit :

out of memory killed process 7297 (mysqld)

Pour régler ce problème, j’ai tout simplement arrêté la machine virtuelle pour augmenter faire passer ma RAM de 4 à 8GB comme l’illustre l’écran suivant :

out of memory error openstack

Maintenant, après avoir relancé la VM, j’ai pu me connecter au Dashboard d’OpenStack :

OpenStack Horizon Dashboard

Voilà c’était tout pour cet article, j’espère qu’il t’a aidé à découvrir, installer et tester OpenStack ? Un petit commentaire là-dessous ne serait pas de refus en tout cas.

Conclusion

OpenStack est une plateforme puissante et flexible pour la création et la gestion de clouds privés, publics et hybrides.

Avec DevStack, il est facile de déployer rapidement un environnement OpenStack pour le développement et les tests.

En suivant ce tutoriel, tu devrais être en mesure d’installer OpenStack via DevStack sur Ubuntu Server 22.04 LTS et commencer à explorer les fonctionnalités et la puissance d’OpenStack.

P.S. Tu souhaites découvrir comment accomplir toujours plus de choses en moins de temps et en fournissant toujours moins d’efforts ? Lis cet article qui te propose “Le Guide ABSOLU De L’Entrepreneur Pour Gagner Gros (Sans Trop D’Efforts)“.

Le jour où j’ai découvert ce secret, je me suis promis d’en faire ma “religion” pour booster ma productivité.

P.P.S. Et si tu souhaites découvrir la compétence la plus importante pour réussir en entrepreneuriat, clique ici ou regarde la vidéo ci-dessous!

MiAKASSiSSA
L'Entrepreneur Kongo

Bervillon Glenn MiAKASSiSSA est un Ingénieur DevOps/Cloud Certifié Linux. Enseignant d'Universités privées, Formateur, Consultant et Entrepreneur évoluant en République du Congo depuis 2016, il s'intéresse à l'entrepreneuriat dans toutes ses formes, aux technologies émergentes (Cybersécurité, IA/ML, Blockchain), au Marketing (Digital) et à l'Art de Vendre...

Répondre

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Instagram

Discuter avec toi!
Cc. Puis-je t'aider?
👋🏿Salut et bienvenue!
En quoi pourrais-je t'aider?🤷🏿‍♂️