Terraform (logiciel)

Terraformest un environnement logiciel d'«infrastructure as code» publié par la sociétéHashiCorp. Cet outil permet d'automatiser la construction des ressources d'une infrastructure decentre de donnéescomme unréseau, desmachines virtuelles, un groupe de sécurité ou unebase de données.
L'infrastructure est décrite sous forme du langage de configurationHashicorp Configuration Language(HCL). Il est aussi possible d'utiliser le langageJSON.
Terraform permet notamment de définir des topologiescloudpour les principaux fournisseurs d'infrastructure cloud, tels qu'Amazon Web Services,IBMCloud (anciennementBluemix),Google Cloud Platform, Linode,Microsoft Azure, Oracle Cloud Infrastructure,OVHcloudouVMware, vSphereainsi queOpenStack.
Les ressources décrites dans le code HCL Terraform sont dépendantes du fournisseur (« provider ») de l'infrastructure cloud. Par exemple, une ressource Terraform définie pour une topologie Amazon ne peut pas être réutilisée pour une topologieOpenStackouMicrosoft Azurepuisqu'elle n'ont pas les mêmes propriétés.
UnProviderest la représentation du fournisseur de l'infrastructure dans Terraform. Il englobe différentes ressources qui peuvent être déployées.
Terraform enregistre l'état de sa configuration dans unficher platditstate file. À l'utilisation de la commandeterraform planouterraform applyil est lu et comparé à l'infrastructure effective.
Il peut être stocké soit localement (avec la configuration Terraform), soit dans un dépôt distant.
Une ressource (mot clefresource) est un objet Terraform à créer dans l'infrastructure :
Chaque ressource possède un type (database), un nom local à Terraform défini par l'utilisateur (my_database), ses arguments (dans l'exemple,engine) et des attributs (que l'on peut récupérer via la syntaxe<type>.<nom>.<attribut>).
Une donnée (mot clefdata) est un objet Terraform dont on veut récupérer des attributs :
Les attributs sont accessibles via la syntaxedata.<type>.<nom>.<attribut>
Une variable (mot clefvariable) peut être donnée en argument à Terraform.
Il faut dans un premier temps définir la variable :
On peut ensuite l'instancier (si on ne le fait pas, Terraform utilisera la valeurdefaultou demandera la saisie lors de la commandeterraform planouterraform apply) :
Il est aussi possible d'utiliser un fichier de variables (par exemple spécifiques à différents environnements) et le mettre en argument deterraform planouterraform apply.
Une variable Terraform est appelée de cette manière :var.example.
Une sortie (mot clefoutput) est un objet Terraform permettant de sauvegarder un attribut d'une ressource ou d'une donnée pour la réutiliser dans un autre code Terraform ou simplement pour l'afficher dans le terminal, à la fin de la commandeterraform apply.
Un module (mot clefmodule) est une portion de code Terraform réutilisable. Comme toute autre arborescence Terraform, un module possède des ressources, des données, des variables et des sorties.
Un module est appelé comme ceci :
Terraform a initialement été rendu disponible sous une licenceMPL2.0. Le10 août 2023, Hashicorp annonce sur son site un changement de licence, passant les produits de l'entreprise à une licence non libre, la Business Source License 1.1 (BUSL-1.1), ne permettant pas l'utilisation par un concurrent.
En septembre 2023, laFondation Linuxlance OpenTofucomme alternativelibreà Terraform.