Test du code Terraform

Terraform active la définition, la préversion et le déploiement de l’infrastructure cloud. À l’aide de Terraform, vous créez des fichiers de configuration à l’aide de la syntaxe HCL. La syntaxe HCL vous permet de spécifier le fournisseur de cloud , tel qu’Azure, et les éléments qui composent votre infrastructure cloud. Après avoir créé vos fichiers de configuration, vous créez un plan d’exécution qui vous permet d’afficher un aperçu des modifications de votre infrastructure avant leur déploiement. Une fois que vous avez vérifié les modifications, vous appliquez le plan d’exécution pour déployer l’infrastructure.

Terraform est un outil IaC (Infrastructure as Code). Cette catégorie d’outil fait référence au fait que vous traitez vos fichiers Terraform comme vous le feriez pour le code source du projet. Une partie de ce processus inclut le contrôle de version et le contrôle de code source. De plus, les tests doivent faire partie de votre processus. Cet article fournit une vue d’ensemble des différents types de tests que vous pouvez exécuter sur un projet Terraform.

Implémenter des tests d’intégration

Les tests d’intégration valident qu’une modification de code nouvellement introduite n’interrompt pas le code existant. En DevOps, l’intégration continue (CI) désigne un processus qui compile l’ensemble du système chaque fois que la base de code change, par exemple lorsqu’une personne souhaite fusionner une PR dans un dépôt Git. La liste suivante contient des exemples courants de tests d’intégration :

  • Outils d’analyse de code statique tels que lint et format.
  • Exécutez terraform validez pour vérifier la syntaxe du fichier de configuration.
  • Exécutez le plan terraform pour vous assurer que la configuration fonctionne comme prévu.

Implémenter des tests unitaires

Les tests unitaires garantissent qu’une partie ou une fonction spécifique d’un programme se comporte correctement. Le développeur de la fonctionnalité écrit des tests unitaires. Parfois appelé développement piloté par les tests ou TDD, ce type de test implique des cycles de développement courts continus. Dans le contexte des projets Terraform, les tests unitaires peuvent prendre la forme d’une utilisation terraform plan pour s’assurer que les valeurs réelles disponibles dans le plan généré sont égales aux valeurs attendues.

Les tests unitaires peuvent être particulièrement utiles lorsque vos modules Terraform commencent à devenir plus complexes :

  • Générer des blocs dynamiques
  • Utiliser des boucles
  • Calculer des variables locales

Comme pour les tests d’intégration, plusieurs fois les tests unitaires sont inclus dans le processus d’intégration continue.

Implémenter des tests de conformité

Utilisez des tests de conformité pour vous assurer que la configuration suit les stratégies que vous définissez pour le projet. Par exemple, vous pouvez définir des conventions d’affectation de noms géopolitiques pour vos ressources Azure. Vous pouvez également créer des machines virtuelles à partir d’un sous-ensemble défini d’images. Utilisez des tests de conformité pour appliquer ces règles.

En règle générale, définissez des tests de conformité dans le cadre du processus d’intégration continue.

Implémenter des tests de bout en bout (E2E)

Les tests E2E valident le fonctionnement d’un programme avant le déploiement en production. Un exemple de scénario peut être un module Terraform déployant deux machines virtuelles dans un réseau virtuel. Vous souhaiterez peut-être empêcher les deux machines d’effectuer un test ping entre elles. Dans cet exemple, vous pouvez définir un test pour vérifier le résultat prévu avant le déploiement.

Les tests E2E sont généralement un processus en trois étapes. Tout d’abord, appliquez la configuration à un environnement de test. Ensuite, exécutez le code pour vérifier les résultats. Enfin, réinitialisez ou retirez l’environnement de test (par exemple, l’allocation d’une machine virtuelle).