Cet article fait partie de notre guide: Comment automatiser les déploiements pour le cloud

Comment une gestion de la configuration déclarative automatisée facilite l’exploitation IT

Les outils de gestion de la configuration commencent à se multiplier à l’ère du multi-cloud. Si AWS CloudFormation suit la popularité d’AWS, d’autres outils ont également leur place sur le marché. Cet article vous aide à choisir celui qui convient le mieux à vos besoins.

Le cloud public a redéfini les attentes des développeurs : ils veulent désormais consommer des services à la demande à partir d'une infrastructure IT agile. Mais il ne s’est pas arrêté là : il a aussi modifié les attentes des administrateurs en matière d'outil d'automatisation.

Car pour justement apporter et maintenir ces services d'infrastructure, les équipes IT ont besoin d’une  gestion de la configuration plus déclarative et des outils adaptés. Et cela dépend fortement de là où on part : pour déployer un environnement sur un hyperviseur dans un datacenter, il faut un ensemble d'outils qui diffère de celui nécessaire pour déployer, par exemple, un cloud privé virtuel sur AWS.

Déclarer un état souhaité

Les équipes opérationnelles ont certes à leur disposition des outils de script traditionnels et procéduraux pour gérer une configuration impérative. Ils définissent une séquence d'étapes pour atteindre l'état désiré. Toutefois, la  création de ces scripts nécessite des compétences en développement qui font généralement défaut à une équipe d'exploitation IT.

Les outils de gestion de configuration déclarative reconfigurent l'environnement pour correspondre à ce qui est décrit dans un fichier texte. L'équipe opérationnelle n'a plus qu'à rédiger le fichier de description et l'outil gère une grande partie de la complexité. Ces outils déclaratifs ont généralement un ensemble étendu, mais fixe, de composants cibles supportés pour la configuration. Un développeur doit ainsi étendre une application pour supporter de nouvelles plateformes cloud.

Certains outils déclaratifs fonctionnent bien ensemble. Par exemple, un premier peut déclarer les couches d'infrastructure, telles que les réseaux et les VM, tandis qu'un second déclare les composants applicatifs à installer dans les machines virtuelles. Dans certains cas, on peut être amené à écrire des scripts ou à développer des plugins pour supporter des applications spécifiques qui ne sont pas déjà supportées par un outil déclaratif.

Parmi les outils de gestion de configuration déclarative, on retrouve Puppet et Ansible, qui se concentrent sur la couche applicative, alors que Terraform et AWS CloudFormation couvrent davantage la couche infrastructure. Chez ces derniers, il existe certaines différences importantes entre un outil déclaratif spécifique à une plateforme  (CloudFormation) et un outil déclaratif à usage général (Terraform).

CloudFormation pour AWS

AWS dispose d'une vaste collection de services d'infrastructure programmables. CloudFormation codifie le déploiement de ces services via un modèle. Les administrateurs s’appuient sur ces modèles pour déployer les couches réseau, compute, données et accès de leur environnement.

CloudFormation prend également en charge les changements de configuration conditionnels. C'est utile lorsqu’on souhaite un environnement de développement moins résilient, mais moins coûteux que celui de la production. Dans ce cas, via un schéma type, on indique les conditions pour les deux environnements.

CloudFormation n’est cependant pas sans limite. L'une des plus importantes est que cet outil est en grande partie conçu pour fonctionner uniquement avec les services AWS, même si on peut l’utiliser pour gérer des ressources personnalisées et travailler avec certains services hors AWS.

En outre, si CloudFormation permet de déployer les services d'infrastructure AWS, il n'est pas aussi puissant pour configurer les VM. CloudFormation est donc souvent utilisé associé à un autre outil de gestion de configuration, alors déclenché par le déploiement de CloudFormation. Les instances gérées de Chef et Puppet sont disponibles avec AWS OpsWorks pour apporter cette couche de configuration d'application.

Terraform pour le multi-cloud

Contrairement à CloudFormation, qui est spécifique à AWS,  l’étendue fonctionnelle de Terraform est plus vaste, avec une architecture de plugin qui permet à l'outil de créer un environnement sur pratiquement n'importe quelle plateforme dont Microsoft Azure, AWS, OpenStack et vSphere.

L'une des grandes forces de TerraForm est sa communauté de développeurs. Ces derniers conçoivent des plugins pour supporter différentes applications et plateformes, ce qui est beaucoup plus rapide qu'avec un développement interne. Comme pour CloudFormation, il est courant de coupler Terraform à une plateforme de gestion de configuration, comme Chef, Puppet ou Ansible, pour compléter la configuration des VM déployées.

Ces capacités multiplateformes de Terraform permettent aussi d’exploiter un environnement multi-cloud. Les entreprises peuvent utiliser le même outil sur plusieurs clouds et pour des déploiements sur site. Cependant, bien qu'il soit possible d'utiliser Terraform pour plusieurs cloud,  il sera nécessaire de redévelopper les fichiers de configuration pour chaque plateforme, car les fournisseurs de cloud n'ont pas les mêmes spécifications réseau ou les mêmes tailles ou types de VM.

Support du cloud hybride

Mais ce ne sont pas les seuls outils qui permettent de déployer des environnements à la fois sur site et dans le cloud public. Ces autres solutions sont plus adaptées à ceux dont l'environnement IT se trouve d’abord sur site et ont une adoption limitée de DevOps. vRealize Automation de VMware est un exemple de ces outils qui permet de déployer des blueprints d'infrastructure sur site, ou sur plusieurs clouds publics. Hewlett Packard Enterprise OneSphere et Morpheus Data, qui visent tous deux à aider les entreprises à déployer un cloud hybride, en font également partie.

Il est à noter que certains fournisseurs sont confrontés à la multiplication des services cloud et surtout à leur rythme de changement, très rapide. Cela entraîne un support parfois incomplet des  plateformes.

 

Pour approfondir sur IaaS