En tant qu’outil IaaC, Terraform facilite la conception et la gestion des infrastructures cloud. À travers cette solution, les développeurs peuvent déployer tout type d’infrastructure en utilisant le code. C’est donc un outil précieux pour concevoir et gérer de nouveaux services. D’autant plus que Terraform est compatible avec une multitude de fournisseurs, dont Azure. Dans cet article, nous allons justement nous intéresser au déploiement d’une infrastructure Azure DevOps avec Terraform.
Qu’est-ce que Terraform ?
Terraform est une Infrastructure as a Code (IaC) développée par Hashicorp.
Fonctionnant grâce à un langage déclaratif (HCL), cet outil open source permet aux développeurs de définir et de provisionner une infrastructure complète. Vous pourrez donc gérer votre infrastructure en utilisant le code, et non plus en réalisant une série d'opérations manuelles. Grâce à ses fonctionnalités, Terraform est un outil incontournable pour les développeurs.
D'autant plus que cette solution est compatible avec une multitude d’applications, appelées “Providers”. Par exemple, Google platform, Amazon web service, GitHub, Azure Devops, …. Cette compatibilité étendue vous permet de centraliser plusieurs services et de les configurer depuis une seule interface. Selon vos besoins, vous pourrez ensuite apporter les ressources nécessaires pour garantir le bon fonctionnement de ces applications.
Comment fonctionne Terraform ?
L’IaC Terraform fonctionne avec des centaines de Providers, parmi lesquels Azure DevOps. Si vous souhaitez utiliser cette solution pour déployer votre application et utiliser ses ressources, il est primordial de bien comprendre son fonctionnement.
Comme vu précédemment, Terraform fonctionne grâce au langage de configuration HCL (HashiCorp Configuration Language). Il s’agit d’un outil de codage déclaratif qui permet de décrire une infrastructure existante, tout en décrivant son état final souhaité.
Pour cela, Terraform utilise deux sources d’entrée :
- Les inputs : c’est la configuration souhaitée par l’utilisateur.
- Les outputs : c’est l’état actuel de l'infrastructure. Terraform la garde en réserve afin d’y appliquer toutes les modifications souhaitées.
Terraform compare ensuite ces deux éléments (l’état actuel vs le résultat final) afin d’établir un plan. Autrement dit, définir les actions à mettre en place (création de nouveaux éléments, modification, suppression, …) pour parvenir au résultat final.
Il s’agit là du fonctionnement de l’infrastructure pour tous les Providers. Voyons plus en détail comment fonctionne Terraform avec Azure DevOps.
Comment déployer son infrastructure Azure DevOps avec Terraform ?
Terraform et Azure DevOps se combinent parfaitement pour déployer une infrastructure Azure. Pour cela, il faudra agir à plusieurs niveaux.
La définition de la structure de Terraform
Le stack Terraform vous permet de gérer toutes les ressources dont vous aurez besoin. Concrètement, Terraform se présente sous la forme d’un répertoire dans lequel sont regroupés plusieurs fichiers. Voici les principaux :
- Main.tf : ce dossier permet d’exécuter Terraform et de gérer toutes vos ressources.
- Output.tf : ce sont les ressources de sortie.
- Provider.tf : c’est Azure DevOps. Cela vous permet également de stocker les différentes actions mises en place sur un fichier tfstate
- Variable.tf : vous devez définir l’ensemble de vos variables (comme la localisation, l’environnement, l’application, ,....).
L’intégration de Terraform du pipeline CI/CD dans Azure DevOps
Avant d’intégrer Terraform dans le pipeline Azure DevOps, vous devez d’abord créer votre projet et vos ressources sur Azure DevOps (comme une base de données, une API, ..).
Une fois que celui-ci aura été créé et votre infrastructure Terraform configurée, vous pouvez concevoir votre Pipeline Release sur Azure DevOps et y intégrer Terraform.
Ensuite, il vous suffit d’exécuter le pipeline pour déployer votre infrastructure Azure.
Quels sont les avantages et inconvénients de Terraform pour Azure Devops ?
Avantages
Terraform est l’un des outils préférés des DevOps. Et pour cause, il offre de multiples avantages :
- Une solution multiplateforme : Au-delà d’Azure DevOps, Terraform peut être utilisé avec Google Cloud, AWS, Oracle Cloud Infrastructure, Alibaba Cloud, …
- Le langage HCL (HashiCorp Configuration Language) : c’est un langage similaire au JSON, qui permet de définir les configurations d’infrastructure très facilement.
- Des changements rapides : vous pouvez approvisionner, définir ou paramétrer vos ressources en toute simplicité.
- L’adaptation : comme c'est un outil open source, il est possible d’y inscrire de nouveaux plugins pour apporter des améliorations aux applications existantes. Vous pouvez également compiler les extensions afin de multiplier leurs performances.
Inconvénients
Malgré tous ces avantages, il faut aussi être conscient des faiblesses de Terraform :
- Des bugs sur les nouvelles versions ;
- L’obligation de synchroniser les états avec l'infrastructure ;
- La difficulté à nommer les ressources ou à les renommer au sein des modules.
Et même si le langage HCL repose sur une syntaxe simple, il faut toutefois l’apprendre pour utiliser Terraform. C’est d’ailleurs l’une des raisons pour lesquelles il est préférable de suivre une formation.
Apprenez à utiliser Terraform pour Azure DevOps
Pour déployer l’infrastructure Azure DevOps, Terraform est un allié précieux, à condition bien sûr de bien savoir l’utiliser. C’est à cet instant qu’intervient DevUniversity. Au sein de notre formation, vous apprendrez tout ce qu'il faut savoir sur Terraform, Azure DevOps et de nombreuses autres applications cloud.