Partager via


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 également faire partie de votre processus. Cet article fournit une vue d’ensemble des différents types de tests qui peuvent être exécutés 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. Dans DevOps, l'intégration continue (CI) fait référence à un processus qui génère l'intégralité du système chaque fois que la base de code est modifiée, par exemple lorsqu'une personne souhaite fusionner une pull request (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 la commande terraform plan pour vérifier que la configuration fonctionnera comme prévu.

Implémenter des tests unitaires

Les tests unitaires garantissent qu’une partie ou une fonction spécifique d’un programme se comportent correctement. Les tests unitaires sont écrits par le développeur de la fonctionnalité. 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é

Les tests de conformité sont utilisés pour garantir que la configuration suit les stratégies que vous avez définies 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. Les tests de conformité seraient utilisés pour appliquer ces règles.

Les tests de conformité sont également généralement définis 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, la configuration est appliquée à un environnement de test. Le code est ensuite exécuté pour vérifier les résultats. Enfin, l’environnement de test est réinitialisé ou supprimé (par exemple, l’allocation d’une machine virtuelle).