OpenStack a été conçu comme étant un système d'exploitation taillé spécialement pour le cloud. Contrairement à Virtualbox ou VSphere, ce dernier offre la possibilité de virtualiser l'ensemble des composants d'un système d'information classique : les réseaux, les machines (nommées instances), les parefeux, les volumes, etc. Ainsi, il est possible de créer l'ensemble d'une infrastructure, de manière totalement virtualisée, et de la manager par une interface graphique et rapidement utilisable.

Abordons rapidement chacun des composants d'OpenStack :

  • Les instances : Ce sont nos machines virtuelles. Chaque instance dispose de ressources lui étant propre (processeur, RAM, disque dur). Il est possible d'effectuer toute les opérations standard d'une machine (arrêt, démarrage), mais également de se connecter sur chacune d'elle par le biais d'une console pour exécuter des commandes. Les instances sont basées sur :
    • Le gabarit : Cela définit la taille de chaque instance (RAM, processeur, disque dur). Les gabarits sont définis par les admiistrateurs de l'instance OpenStack
    • L'image : C'est le contenu de base de la machine. Cela peut être une ISO pré-faite (CentOS 7, Debian, Windows Server, etc), ou quelque chose de totalement customisé, avec une configuration précise.
  • Les routeurs : Les routeurs sont, euh, des routeurs, mais virtuels, donc montable et destructibles à la volée. Ils permettent de relier des réseaux entre eux.
  • Les réseaux : Les réseaux permettent de connecter plusieurs machines entre elles, et de leur affecter une IP locale à OpenStack. On peux relier ces réseaux via des routeurs, pour permettre l'accès à des machines entre les réseaux, ou via l'extérieur d'OpenStack. Il est également possible de donner une IP flottante à des instances, opur les rendre accessible depuis l'extérieur.
  • Les groupes de sécurité : Les groupes de sécurité sont l'équivalent du pare-feu. Basiquement, un groupe de sécurité permet de laisser l'accès à certains ports ou plages de ports, sur des machines spécifiques, pour un réseau et un protocole (TCP ou UDP) spécifique, sur une version précise d'IP (IPv4 ou IPv6). Il est également possible d'autoriser les communication à sens-unique, ou à double sens.
  • Les volumes : Les volumes sont des disques qui sont dissociés des machines. Il est donc possible d'attacher à la volée un ou plusieurs volumes à une ou plusieurs instances, comme des périphériques amovibles. Ainsi, on peut y stocker des données, tout en évitant de les perdre quand on détruira les instances.
  • Le DNS : OpenStack dispose d'un DNS interne, qui permet de masquer les IPs des instances sous des noms DNS locaux, pour éviter d'avoir des IPs changeantes à chaque destruction et construction d'instance.
  • Les Load-Balancer : Les load-balancer sont reliés à plusieurs instances. Ils permettent de partager la charge entre plusieurs instances, ce qui est notamment utile pour les services Web. En pratique, il est possible de dispatcher la connexion selon plusieurs méthodes, par connexion, par IP, ou de manière aléatoire (round-robin), et sur certains ports spécifiques uniquement. Il est alors possible de fixer un DNS au load-balancer, pour offrir à l'utilisateur une expérience totalement transparente.

Par défaut, les projets OpenStack sont accessibles par une interface Web, nommée Horizon. Cependant, les concepteurs d'OpenStack ont offert la possibilité d'accèder à toutes les fonctions par le biais d'une API... Et c'est là que les choses intéressantes commencent. Dans le prochain article, nous verrons comment s'amuser avec Terraform pour déployer une infrastructure sur OpenStack !

Note importante : Compte-tenu des ressources requises pour créer une instance fonctionnelle d'OpenStack, je ne m'étendrais pas sur toute la configuration. Vous pouvez consulter l'excellente documentation d'OpenStack qui vous guidera de A à Z.

Article précédent Article suivant