OpenStack – Heat ? Mais qu’est-ce que c’est ?

Heat est un orchestrateur par template pour la description et la génération d’environnements pour applications cloud. L’orchestrateur utilise les autres modules et APIs d’OpenStack dans un même fichier template. Il permet lors de la phase de déploiement une intégration directe avec l’orchestrateur, ou à l’aide de plugins personnalisés.

L’idée fondamentale derrière ce composant (et de tout autre orchestrateur) est d’automatiser la configuration d’instances ou de conteneurs pour préparer un environnement de déploiement de solutions cloud. Cette automatisation se fait grâce au template, évoqué un peu plus haut, qui, typiquement, est un fichier (on utilise plus communément YAML) de configuration dans lequel on spécifie les informations suivantes :

  • La version du template
  • Une description
  • Une déclaration de groupes de paramètres d’entrées
  • Une liste des paramètres
  • Une liste des ressources à utiliser (ressources gérées par les autres modules d’OpenStack; images, réseaux…)
  • Déclaration des paramètres de sortie
  • Déclaration de conditions

La structure du fichier YAML est présentée ci-dessous :

heat_template_version: 2016-10-14

description:
  # a description of the template

parameter_groups:
  # a declaration of input parameter groups and order

parameters:
  # declaration of input parameters

resources:
  # declaration of template resources

outputs:
  # declaration of output parameters

conditions:
  # declaration of conditions

On notera que la partie de la version du template est renseignée avec une date. Il serait maladroit de croire que cette information est anodine, puisqu’on ne peut pas renseigner une date arbitraire. En effet, il est définit un certain nombre de dates (ou de versions) par défaut, et chaque version a ses propres spécificités.

Dans ce qui suit un exemple d’un fichier template :

heat_template_version: 2013-05-23
description: Simple template to deploy a single compute instance with parameters

parameters:
  key_name:
    type: string
    label: Key Name
    description: Name of key-pair to be used for compute instance
  image_id:
    type: string
    label: Image ID
    description: Image to be used for compute instance
  instance_type:
    type: string
    label: Instance Type
    description: Type of instance (flavor) to be used
resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      key_name: { get_param: key_name }
      image: { get_param: image_id }
      flavor: { get_param: instance_type }

Dans la section resources une instance de type OS::Nova::Server (ce qui indique que c’est une instance que l’orchestrateur devra récupérer à partir de Nova le module de gestion des images de machines virtuelles) est déclarée. On peut aussi, par ailleurs, définir le réseau sur lequel se trouve l’image à utiliser.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.