Série Terraform-Terratest - Introduction et cahier des charges (1/4)

Premier article d'une série sur la mise en place de Terratest

Aujourd’hui, l’intérêt des tests n’est plus à démontrer ; encore moins lorsque ceux-ci peuvent être automatisés dans une chaîne CI et/ou exécutés directement sur le poste développeur.

Dans le cas du développement de modules Terraform, nous allons explorer l’utilisation de Terratest avec le cas du développement d’un nouveau module !

Lorsqu’il s’agit de déployer des infrastructures, la fiabilité est essentielle. Ainsi, lorsque l’on fournit des modules Terraform à des utilisateurs, il est primordial de s’assurer que ceux-ci restent fonctionnels et conformes aux spécifications au cours des différentes versions.

Pour garantir la qualité des déploiements, Terratest offre une solution puissante permettant de tester efficacement vos modules d’infrastructure.

Terratest est un framework Go conçu spécialement pour tester votre code Terraform. Il permet ainsi de provisionner des infrastructures, de jouer une série de tests plus ou moins complexes puis de supprimer les infrastructures.

Dans cet article, nous allons prendre le cas d’usage de la création d’un nouveau module sur lequel nous allons développer les tests associés.

Avant de plonger dans la pratique et le développement de notre module, assurez-vous de disposer des éléments suivants :

Ces outils maintenant installés et configurés, nous sommes prêts pour notre cas d’usage.

Dans le cadre de notre démonstration, notre module s’appellera tf-module-demo-terratest et répondra aux spécifications suivantes :

  • En entrée : le module attend une variable your_name_here de type chaine de caractère.
  • En sortie : le module expose une variable hello_world de type chaine de caractère dont la valeur sera Hello <valeur de la variable your_name_here>.

L’appel au module se fera ainsi de la manière suivante :

1
2
3
4
5
module "test" {
  source = "<lien vers le module>"

  your_name_here = "test-1"
}

Et il devrait produire l’output suivant : hello_world = "Hello test-1".

Bon … Je reconnais que l’intérêt de ce module est limité 😅 ; néanmoins, ce premier cas d’usage me parait suffisant pour explorer une partie des possibilités de l’outil Terratest.