Terraform est un outil très prisé dans le métier de DevOps. Bien que très facile d’utilisation, il peut, dans certain cas, ne pas répondre totalement à notre besoin. Je vais vous présenter dans ce retour d’expérience, pourquoi nous avons préféré utiliser Ansible plutôt que Terraform sur un projet que j’ai récemment réalisé. Laissez-moi d’abord vous présenter/rappeler ce qu’est Terraform.

Terraform

Terraform est un outil d’Infrastructure as Code (IaC) open-source de la sociĂ©tĂ© HashiCorp. Très utilisĂ© dans la demarche Devops, cet outil permet d’automatiser et gĂ©rer facilement le dĂ©ploiement d’infrastructures. Terraform s’interface très bien avec les providers Cloud tels qu’AWS, GCP, Azure et tant d’autres.

Très facile d’utilisation, Terraform permet de dĂ©ployer facilement une infrastructure. L’infrastructure est dĂ©crite dans des fichiers au langage HLC et est dĂ©ployĂ©e en 2 commandes. Terraform stocke l’Ă©tat de l’infrastructure gĂ©rĂ©e et la configuration. Cet Ă©tat est utilisĂ© pour mapper les ressources du monde rĂ©el Ă  la configuration souhaitĂ©e.

Le fichier json dĂ©crivant l’Ă©tat est stockĂ© par dĂ©faut dans un fichier local nommĂ© « terraform.tfstate« , mais il peut Ă©galement ĂŞtre stockĂ© Ă  distance, ce qui fonctionne mieux dans un environnement d’Ă©quipe.

Terraform permet aussi de facilement dupliquer une infrastructure. Par exemple crĂ©er plusieurs environnements pour pouvoir dĂ©velopper, tester puis mettre en prod.

REX

Dans certains cas, Terraform ne s’avère pas ĂŞtre l’outil le mieux adaptĂ©. Voici mon retour d’expĂ©rience sur un projet rĂ©cent : j’ai travaillĂ© sur la crĂ©ation d’un cloud capable de stocker des donnĂ©es sensibles. Pour des raisons de sĂ©curitĂ©, nos postes de travail Ă©taient dĂ©pourvus d’accès Ă  Internet. De plus, ce cloud a Ă©tĂ© conçu on-premise, sans recourir aux grands fournisseurs de cloud.

Les contraintes rencontrées

Offline

Ce projet se faisant sans internet, nous ne pouvions donc pas télécharger nos modules et providers Terraform directement depuis internet.

Provider Terraform

Terraform fonctionne avec des providers. Un provider permet de manager une ressource cloud grâce Ă  son API (exemple : le provider AWS manage les ressources AWS grâce Ă  l’AWS CLI). MĂŞme s’il existe une multitude de providers (officiel ou de la communautĂ©), il se peut que celui dont vous avez besoin n’existe pas. Cela ajoute de la complexité supplĂ©mentaire au projet puisqu’il faudra coder ce provider, sous rĂ©serve qu’il existe bien une API qui manage les ressources Ă  dĂ©ployer.

Beaucoup de sysadmin

Sur mon projet, nous avions beaucoup d’administration de systèmes Ă  faire. En plus de dĂ©ployer une machine virtuelle, nous devions configurer son rĂ©seauinstaller certains packages et faire du durcissement d’OS.

Bien que Terraform soit très pratique pour dĂ©ployer des machines virtuelles, c’est un outil qui atteint ses limites lorsqu’il s’agit de faire beaucoup d’administration de système.

Pour toutes ces raisons, nous avons dĂ©cidĂ© d’utiliser Ansible pour dĂ©ployer et configurer nos machines virtuelles.

Ansible

Ansible est un outil open source dĂ©diĂ© Ă  la configuration et Ă  la gestion des machines. Contrairement Ă  Terraform, il adopte une approche impĂ©rative : on dĂ©crit dans des fichiers YAML une sĂ©rie d’Ă©tapes Ă  exĂ©cuter. Ansible se connecte ensuite en SSH Ă  la machine cible et exĂ©cute ces instructions Ă©tape par Ă©tape. De plus, il est cloud agnostique, ce qui signifie qu’il peut ĂŞtre utilisĂ© indĂ©pendamment du fournisseur de cloud.

Bien qu’Ansible ne soit pas une technologie rĂ©cente — il a Ă©tĂ© créé en 2012 et est dĂ©sormais dĂ©veloppĂ© par Red Hat — il reste une solution robuste et largement adoptĂ©e. Dans mon projet, il correspondait parfaitement Ă  nos besoins. Grâce Ă  l’Artifactory dĂ©jĂ  en place dans notre infrastructure, il nous a Ă©tĂ© facile d’y intĂ©grer les modules Ansible nĂ©cessaires.

Terraform et Ansible se complètent efficacement : Terraform excelle dans le dĂ©ploiement d’infrastructures, tandis qu’Ansible est idĂ©al pour configurer et personnaliser les machines virtuelles.

Pour aller plus loin, il aurait Ă©tĂ© possible d’Ă©tendre les capacitĂ©s d’Ansible en utilisant des outils comme Ansible Tower. Cette solution propose une API qui simplifie son utilisation par les Ă©quipes, notamment pour gĂ©rer des inventaires dynamiques et rendre les workflows plus accessibles.

Categorized in:

Ansible, Terraform,