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.
Saif Al-Qazweny, Khalil Hamani, Abdelhaq Ouattari