Aujourd’hui, de plus en plus d’en­tre­prises utilisent le Cloud pour leur en­vi­ron­ne­ment de travail ou même pour mettre en place des struc­tures in­for­ma­tiques complètes. L’In­fras­truc­ture as a Service (IaaS) est dans de nombreux cas un moyen simple et peu coûteux de créer la base de nombreux projets planifiés. Les solutions Cloud per­met­tent également de réagir avec précision aux exigences actuelles : alors que les com­po­sants sous-jacents tels que les serveurs, pare-feu ou load balancer sont statiques dans les data centers du four­nis­seur, les solutions Cloud ne le sont pas, elles peuvent être modifiées dy­na­mi­que­ment dans un en­vi­ron­ne­ment vir­tua­lisé, ce qui permet aux clients d’augmenter ou de diminuer leurs res­sources à tout moment, selon leurs besoins.

Pour garantir cette flexi­bi­lité, les four­nis­seurs proposent des API qui per­met­tent à l’en­vi­ron­ne­ment IaaS loué d’être mis à l’échelle à tout moment avec le logiciel approprié, des libertés qui sont at­trayantes mais qui né­ces­si­tent également un effort de gestion important. Avec le logiciel Terraform, la société amé­ri­caine HashiCorp fournit une réponse optimale pour minimiser cet effort sur le long terme. A quoi sert cet outil d’In­fras­truc­ture as Code (IaC) ? Nous vous l’ex­pli­quons dans cet article.

Compute Engine
La solution IaaS idéale pour gérer vos charges de travail
  • vCPU aux coûts avan­ta­geux et cœurs dédiés per­for­mants
  • Sans en­ga­ge­ment pour plus de flexi­bi­lité
  • As­sis­tance par des experts 24h/24 et 7j/7 incluse

Qu’est-ce que Terraform ?

Lorsqu’il s’agit de l’in­fras­truc­ture sous-jacente au dé­ve­lop­pe­ment de logiciels, les ad­mi­nis­tra­teurs sont toujours mis au défi : la tendance vers la méthode agile conduit à des cycles de dé­ve­lop­pe­ment de plus en plus courts et à une mise en œuvre encore plus rapide des chan­ge­ments. Afin de répondre aux exigences élevées de ce rythme rapide, il faut au­to­ma­ti­ser autant que possible la gestion des res­sources. Il s’agit d’écrire un code de con­fi­gu­ra­tion lisible par machine, ce que l’on appelle l’In­fras­truc­ture as Code (IaC).

Afin de sim­pli­fier ce processus, les res­pon­sables in­for­ma­tiques peuvent s’appuyer sur le logiciel Terraform qui, d’une part, permet une des­crip­tion uniforme de l’in­fras­truc­ture cible et, d’autre part, garantit que celle-ci est mise en œuvre comme souhaité par les four­nis­seurs IaaS pris en charge. De plus, le logiciel permet de stocker les con­fi­gu­ra­tions d’in­fras­truc­ture pro­vi­sion­nées afin qu’elles puissent être réu­ti­li­sées plus tard ou étendues ou adaptées de quelque manière que ce soit.

Terraform est es­sen­tiel­le­ment Open Source (Mozilla Public License 2.0) et peut donc être té­lé­chargé et utilisé gra­tui­te­ment. Cependant, plusieurs fonc­tion­na­li­tés pour la col­la­bo­ra­tion en équipe ainsi que pour les ins­ti­tu­tions et or­ga­ni­sa­tions publiques ne sont dis­po­nibles que dans les éditions payantes « En­ter­prise Pro » et « En­ter­prise Premium ». Le service IaC 2012 a été développé par l’en­tre­prise basée à San Francisco HashiCorp.

Note

Terraform coopère avec plus de 160 par­te­naires. Il s’agit notamment d’Amazon Web Services (AWS), Atlassian, Cloud­flare, Google, Microsoft et Oracle. Une liste complète de tous les par­te­naires se trouve sur le site officiel d’HashiCorp.

Comment Terraform aide les uti­li­sa­teurs à concevoir l’IaC ?

Etant donné que l’in­fras­truc­ture in­for­ma­tique ou les res­sources né­ces­saires au dé­ve­lop­pe­ment de logiciels sont gé­né­ra­le­ment im­plé­men­tées à l’aide non seulement d’un seul mais aussi de plusieurs services Cloud, vous devez en principe vous adapter à une série d’in­ter­faces API dif­fé­rentes et vous fa­mi­lia­ri­ser avec les par­ti­cu­la­ri­tés de la pla­te­forme concernée. Ceci s’applique que vous sou­hai­tiez contrôler ces API ma­nuel­le­ment au moment où vous apportez des mo­di­fi­ca­tions à l’in­fras­truc­ture ou que vous vouliez écrire vos propres ins­truc­tions IaC pour un accès au­to­ma­tisé.

En tant qu’uti­li­sa­teur de Terraform, vous n’avez pas ce problème : à la place de dif­fé­rents langages d’interface, vous pouvez utiliser le langage de balisage Ja­vaS­cript simplifié JSON ou le langage de con­fi­gu­ra­tion HashiCorp (HCL) basé sur JSON pour décrire l’in­fras­truc­ture cible souhaitée. Cette dernière est l’option re­com­man­dée par HashiCorp car elle rend l’écriture et la lecture du code par le biais de com­men­taires et d’autres fonc­tion­na­li­tés encore plus faciles. Terraform attend les fichiers de con­fi­gu­ra­tion res­pec­tifs comme des fichiers texte or­di­naires, alors que l’outil IaC utilise l’extension .tf. En utilisant un outil approprié tel que Git ou SVN, vous pouvez fa­ci­le­ment faire des versions de ces fichiers si vous le souhaitez.

Note

Même si les ins­truc­tions ne doivent pas être écrites dans les for­mu­laires d’interface standard, Terraform a besoin des clés API pour com­mu­ni­quer avec les services res­pec­tifs et pour adapter ou im­plé­men­ter l’in­fras­truc­ture telle que définie dans le fichier de con­fi­gu­ra­tion .tf.

Aperçu des com­po­sants Terraform les plus im­por­tants

La tâche prin­ci­pale de Terraform est de con­fi­gu­rer de manière con­vi­viale les res­sources de l’in­fras­truc­ture, le marquage HCL ou JSON jouant un rôle central. Cependant, la sim­pli­cité du langage ne constitue pas tout ce qui distingue l’outil IaC, et ce de loin : grâce à la coo­pé­ra­tion avec d’im­por­tants four­nis­seurs de software et hardware et aux in­te­rac­tions avec l’ar­chi­tec­ture de base ex­ten­sible in­di­vi­duel­le­ment et l’interface de ligne de commande facile à utiliser, les fichiers de con­fi­gu­ra­tion créés peuvent atteindre leur but fixé. Les sections suivantes donnent un bref aperçu des dif­fé­rents com­po­sants Terraform pour illustrer les fonc­tion­na­li­tés du logiciel IaC.

Langage de con­fi­gu­ra­tion HCL

Le langage de con­fi­gu­ra­tion HashiCorp mentionné ci-dessus est prin­ci­pa­le­ment destiné à décrire le résultat souhaité et non les étapes pour l’atteindre. L’élément le plus important du langage Terraform est constitué par les res­sources, car celles-ci décrivent les com­po­sants d’in­fras­truc­ture dont la gestion doit être au­to­ma­ti­sée avec Terraform. Toutes les autres ca­rac­té­ris­tiques du langage existent ex­clu­si­ve­ment pour spécifier les res­sources cor­res­pon­dantes. Les trois éléments de base suivants jouent un rôle important :

  • Blocs : les blocs sont des con­te­neurs de contenu. Ils four­nis­sent de l’espace pour la con­fi­gu­ra­tion de n’importe quel objet, en par­ti­cu­lier pour les res­sources con­fi­gu­rées. Chaque bloc a un type de bloc, une ou plusieurs des­crip­tions et une zone de corps. Cette dernière contient un certain nombre d’arguments et de sous-blocs.
  • Arguments : pour attribuer une valeur à un nom, utilisez des arguments avec HCL. Ces derniers sont toujours déclarés à l’intérieur de blocs.
  • Ex­pres­sions : les ex­pres­sions re­pré­sen­tent une valeur. Il peut s’agir d’une valeur concrète ou d’une référence à une ou plusieurs autres valeurs. Une ex­pres­sion se produit soit comme une valeur pour un argument, soit au sein d’autres arguments.

Avec le HCL comme langage dé­cla­ra­tif, la séquence de chaque bloc n’est au fond pas utile. Terraform traite au­to­ma­ti­que­ment les res­sources décrites dans le bon ordre selon des relations pré­dé­fi­nies. Seuls les blocs dits « pro­vi­sio­ners » qui sont né­ces­saires à l’exécution des scripts, jouent un rôle.

Terraform CLI (interface en ligne de commande)

Terraform fournit sa propre interface en ligne de commande pour que les fichiers de con­fi­gu­ra­tion créés puissent être évalués et utilisés. Cette interface définit la syntaxe et la structure globale du langage Terraform et coordonne toutes les étapes de chan­ge­ment né­ces­saires à la mise en œuvre de l’in­fras­truc­ture con­fi­gu­rée. La CLI elle-même n’a pas con­nais­sance de types spé­ci­fiques de res­sources d’in­fras­truc­ture, mais obtient ces in­for­ma­tions par le biais d’ex­ten­sions "provider" spé­ci­fiques. L’interface sait ainsi définir et gérer les dif­fé­rents types de res­sources chez les four­nis­seurs de Cloud pris en charge et donc aussi trans­mettre les ins­truc­tions uni­ver­sel­le­ment formulées dans les fichiers de con­fi­gu­ra­tion Terraform aux dif­fé­rentes API du Cloud.

Note

La CLI (Command Line Interface) est une interface textuelle par laquelle les personnes trans­met­tent des ins­truc­tions à la machine via la saisie de commandes. Le concept se distingue du fonc­tion­ne­ment de la machine par des éléments de commande gra­phiques tels que des icônes, des menus ou des boutons. Avec ce dernier type d’uti­li­sa­tion, on parle d’interface graphique ou GUI (Graphical User Interface).

Fonction de stockage et d’im­por­ta­tion

Afin d’allouer des res­sources réelles à la con­fi­gu­ra­tion, de suivre les mé­ta­don­nées et d’améliorer con­ti­nuel­le­ment les per­for­mances des in­fras­truc­tures plus im­por­tantes, Terraform stocke l’état des res­sources et la con­fi­gu­ra­tion IaC créée. Par défaut, le logiciel stocke le fichier terraform.tfstate dans un ré­per­toire local. vous pouvez autrement sé­lec­tion­ner un autre em­pla­ce­ment, ce qui est par­ti­cu­liè­re­ment re­com­mandé pour le travail en équipe. Afin de comparer à chaque fois l’état avec l’in­fras­truc­ture actuelle, Terraform met au­to­ma­ti­que­ment à jour la CLI avant chaque opération du programme.

Note

Pour le stockage de statut non local et l’exécution d’opé­ra­tions (uni­que­ment possible avec « En­ter­prise Pro » et « En­ter­prise Premium »), Terraform utilise des backends spéciaux au lieu du backend local standard. Pour uti­li­sa­tion, ces couches d’abs­trac­tion spéciales doivent être définies di­rec­te­ment dans le fichier de con­fi­gu­ra­tion et ini­tia­li­sées via la CLI.

Si vous avez créé une in­fras­truc­ture par d’autres moyens, vous pouvez importer cette con­fi­gu­ra­tion existante grâce à une fonction intégrée afin de pouvoir gérer à l’avenir les res­sources cor­res­pon­dantes avec Terraform. Ac­tuel­le­ment, seules les res­sources, et non leur con­fi­gu­ra­tion, sont ajoutées à l’état actuel. Cela devrait cependant être possible dans les futures versions de l’outil IaC.

Graphique des dé­pen­dances

Terraform vous permet de créer un graphique de dé­pen­dance de la con­fi­gu­ra­tion de l’in­fras­truc­ture définie ou du plan d’exécution. Il vous suffit d’utiliser la commande CLI « terraform graph » et de définir le type de graphique souhaité pour que Terraform génère au­to­ma­ti­que­ment un fichier de sortie cor­res­pon­dant au format DOT. Ceci peut être reproduit à l’aide du logiciel de vi­sua­li­sa­tion Graphviz, que HashiCorp re­com­mande également dans la do­cu­men­ta­tion of­fi­cielle en ligne. La ligne de commande peut également être utilisée pour convertir fa­ci­le­ment le fichier dans un format d’image tel que SVG.

Plugins Terraform

Terraform repose sur une ar­chi­tec­ture basée sur des plugins qui permet d’étendre les fonc­tion­na­li­tés de la suite IaC à tout moment. Par exemple, les pro­vi­sio­ners pour l’exécution des scripts font partie des plugins, de même que les ex­ten­sions provider qui four­nis­sent à la CLI toutes les in­for­ma­tions per­ti­nentes sur les services Web pris en charge. Les dé­ve­lop­peurs qui maî­tri­sent le langage de pro­gram­ma­tion Go(lang) et qui con­nais­sent les API des four­nis­seurs cor­res­pon­dants peuvent même écrire leurs propres ex­ten­sions pour relier Terraform à des services Cloud qui ne sont pas of­fi­ciel­le­ment pris en charge. Les nouveaux plugins de HashiCorp sont au­to­ma­ti­que­ment té­lé­char­gés et inclus, alors que toutes les ex­ten­sions tierces exigent que vous le fassiez ma­nuel­le­ment.

Cas d’uti­li­sa­tion : quels sont les domaines d’ap­pli­ca­tion typiques de Terraform ?

Grâce à la vaste gamme de four­nis­seurs de services Cloud pris en charge, que HashiCorp ne cesse d’étendre et qui peuvent également être étendus in­dé­pen­dam­ment avec le savoir-faire adéquat, Terraform est adapté à une multitude d’ap­pli­ca­tions. Parmi les cas d’uti­li­sa­tion les plus po­pu­laires de l’outil In­fras­truc­ture-as-Code, men­tion­nons les trois ci-dessous.

Heroku App Setup

Heroku est l’un des four­nis­seurs PaaS les plus connus (four­nis­seurs pour héberger vos propres ap­pli­ca­tions Web). Tous les outils et services né­ces­saires à l’ap­pli­ca­tion peuvent être ajoutés sous forme d’add-ons et suivis via le tableau de bord de la pla­te­forme. Terraform mâche beaucoup le travail pour vous, non seulement en écrivant le code pour l’ins­tal­la­tion de votre ap­pli­ca­tion, mais aussi en s’assurant que tous les add-ons né­ces­saires sont dis­po­nibles à tout moment.

Ap­pli­ca­tions multi-niveaux (multi-tiers ap­pli­ca­tions)

L’ar­chi­tec­ture par couche a fait ses preuves en tant que concept struc­tu­rant pour les systèmes logiciels ; l’ar­chi­tec­ture à deux couches avec serveur Web et base de données sous-adjacent est par­ti­cu­liè­re­ment populaire. La pos­si­bi­lité d’éche­lon­ner les couches de manière in­dé­pen­dante est avan­ta­geuse pour de nombreux projets. Terraform s’avère être un outil idéal : chaque couche peut être décrite comme une col­lec­tion de res­sources. En outre, le logiciel IaC s’occupe des dé­pen­dances, par exemple dans le cas du modèle mentionné, il s’assure que le niveau de la base de données est dis­po­nible avant le démarrage du serveur Web.

Managed Nextcloud
Le stockage Cloud qui vous donne le contrôle
  • Protégez ef­fi­ca­ce­ment vos données grâce à une sécurité de pointe
  • Gagnez du temps sur les mises à jour et la main­te­nance
  • Ajoutez fa­ci­le­ment des ap­pli­ca­tions et des outils col­la­bo­ra­tifs

Software Defined Net­wor­king (SDN)

Les software defined net­wor­king prennent de plus en plus d’im­por­tance dans les centres de données. La gestion contrôlée par logiciel des res­sources réseau vir­tua­li­sées offre aux ad­mi­nis­tra­teurs et aux dé­ve­lop­peurs un degré élevé de contrôle et de flexi­bi­lité. Terraform vous permet d’écrire une con­fi­gu­ra­tion complète pour de tels services SDN et de l’utiliser pour con­fi­gu­rer et per­son­na­li­ser au­to­ma­ti­que­ment les struc­tures réseau définies par logiciel.

Conseil

Avec le Cloud d’en­tre­prise et le Data Center Designer, IONOS propose aussi une solution Software Defined Net­wor­king pour en­tre­prise à un prix très abordable !

Approche multi-cloud

Pour beaucoup, la ré­par­ti­tion de l’in­fras­truc­ture sur plusieurs Clouds est un modèle ex­trê­me­ment attrayant. La dis­tri­bu­tion entre plusieurs four­nis­seurs procure une plus grande tolérance aux erreurs ainsi qu’une plus grande ré­si­lience, et facilite la ré­cu­pé­ra­tion des res­sources perdues par rapport à un modèle avec un seul four­nis­seur. Grâce à sa syntaxe uni­ver­selle, Terraform simplifie la création de telles struc­tures multi-cloud. De plus, l’ap­pli­ca­tion peut gérer plusieurs four­nis­seurs avec une seule con­fi­gu­ra­tion et même gérer les dé­pen­dances cross-cloud.

Terraform : aperçu des avantages et in­con­vé­nients

L’In­fras­truc­ture as Code aide à rester com­pé­ti­tif dans un en­vi­ron­ne­ment en constante évolution. Un haut niveau d’au­to­ma­ti­sa­tion vous aide à garder une bonne vision des res­sources dont vous avez besoin et à effectuer les chan­ge­ments d’in­fras­truc­ture né­ces­saires le plus ra­pi­de­ment possible. Terraform s’avère être un outil efficace pour la création et l’exécution d’in­fras­truc­tures « pro­gram­mables », notamment grâce à la prise en charge de services Cloud tels que AWS, Azure et Google Cloud. L’une des plus grandes forces du logiciel IaC est sa syntaxe uniforme pour l’in­fras­truc­ture. Cependant, vous avez toujours le choix entre le langage de con­fi­gu­ra­tion HCL de HashiCorp et JSON.

Note

Parmi les dif­fé­rents plugins Terraform dis­po­nibles, on trouve l’extension « IONOS Provider ». Cette dernière permet à l’outil IaC d’accéder à l’API IONOS Cloud et permet ainsi de con­fi­gu­rer et gérer les res­sources du serveur Cloud dans les centres de données de IONOS.

Un autre avantage de Terraform est sa structure basée sur des plugins, qui permet au fabricant comme aux four­nis­seurs tiers d’étendre à tout moment les fonc­tion­na­li­tés du logiciel. Dans le cas des ex­ten­sions du fabricant, Terraform les té­lé­charge au­to­ma­ti­que­ment sans que vous ayez à lancer la mise à jour. De plus, la solution open source convainc par des fonc­tion­na­li­tés telles que sa fonction de stockage, grâce à laquelle vous pouvez à tout moment et très fa­ci­le­ment appeler et adapter les con­fi­gu­ra­tions d’in­fras­truc­ture une fois qu’elles ont été mises en place. Vous pouvez aussi générer un graphique de dé­pen­dance pour toutes les étapes de la création et de l’exécution IaC.

En termes de coûts, Terraform fait également bonne figure grâce à son approche open source : l’uti­li­sa­tion du logiciel IaC est es­sen­tiel­le­ment gratuite. Cependant, si vous avez besoin de fonc­tion­na­li­tés de col­la­bo­ra­tion avec Terraform telles que des liens pour la gestion de versions ou la pos­si­bi­lité de gérer des res­sources via un accès à distance, vous devrez vous tourner vers des solutions d’en­tre­prise re­la­ti­ve­ment coûteuses. Les petites en­tre­prises peuvent ra­pi­de­ment atteindre leurs limites en termes de budget. De plus, quelle que soit l’édition que vous choi­sis­sez, vous pouvez vous attendre à passer beaucoup de temps pour vous habituer à Terraform. Une fois que vous vous serez fa­mi­lia­risé avec son fonc­tion­ne­ment et avec le langage HCL développé, vous oublierez vite ces dé­sa­gré­ments.

Avantages de Terraform In­con­vé­nients de Terraform
Open Source Demande un temps d’adap­ta­tion
Syntaxe uniforme pour l’In­fras­truc­ture as Code Pas de fonction de retour en arrière au­to­ma­tique en cas de mo­di­fi­ca­tion in­cor­recte des res­sources
Prise en charge de diverses solutions de cloud computing Fonctions de col­la­bo­ra­tion et de sécurité dis­po­nibles uni­que­ment dans des solutions en­tre­prise onéreuses
Pos­si­bi­lité d’intégrer de nom­breuses ex­ten­sions
Fonction de stockage et d’im­por­ta­tion pour les ar­chi­tec­tures exis­tantes
Pos­si­bi­lité de générer des gra­phiques de dé­pen­dance
Aller au menu principal