Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 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.
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.
Dans cet article, vous allez apprendre à :
- Découvrez les principes de base des tests d’intégration pour les projets Terraform.
- Utilisez Azure DevOps pour configurer un pipeline d’intégration continue.
- Exécutez l’analyse du code statique sur le code Terraform.
- Exécutez
terraform validatepour valider les fichiers de configuration Terraform sur l’ordinateur local. - Exécutez
terraform planpour valider les fichiers de configuration Terraform dans le contexte des services distants. - Utilisez un pipeline Azure pour automatiser l’intégration continue.
1. Configurer votre environnement
- abonnement Azure: si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Configurer terraform: si ce n’est déjà fait, configurez Terraform à l’aide de l’une des options suivantes :
organisation et projet Azure DevOps: si vous n’en avez pas, créez une organisation Azure DevOps.
Extension Tâches de build et de mise en production de Terraform : Installez l'extension Tâches de build et de mise en production de Terraform dans votre organisation Azure DevOps.
accorder à Azure DevOps l’accès à votre abonnement Azure: créez une connexion de service Azure nommée
terraform-basic-testing-azure-connectionpour permettre à Azure Pipelines de se connecter à vos abonnements AzureExemple de code et de ressources : Télécharger à partir de GitHub le projet de test d’intégration . Le répertoire dans lequel vous téléchargez l’exemple est appelé le répertoire d'exemple.
2. Valider une configuration Terraform locale
La commande terraform validate est exécutée à partir de la ligne de commande dans le répertoire contenant vos fichiers Terraform. Cette commande a pour objectif principal de valider la syntaxe.
Dans l’exemple de répertoire, accédez au répertoire
src.Exécutez terraform init pour initialiser le répertoire de travail.
terraform initExécutez terraform validez pour valider la syntaxe des fichiers de configuration.
terraform validatePoints clés :
- Vous voyez un message indiquant que la configuration Terraform est valide.
Modifiez le fichier
main.tf.Sur la ligne 5, insérez une faute de frappe qui invalide la syntaxe. Par exemple, remplacez
var.locationparvar.loactionEnregistrez le fichier.
Réexécutez la validation.
terraform validatePoints clés :
- Vous voyez un message d’erreur indiquant la ligne de code dans l’erreur et une description de l’erreur.
Comme vous pouvez le voir, Terraform a détecté un problème dans la syntaxe du code de configuration. Ce problème empêche le déploiement de la configuration.
Il est recommandé de toujours exécuter terraform validate sur vos fichiers Terraform avant de les envoyer à votre système de contrôle de version. De plus, ce niveau de validation doit faire partie de votre pipeline d’intégration continue. Plus loin dans cet article, nous allons découvrir comment configurer un pipeline Azure pour valider automatiquement.
3. Valider la configuration Terraform
Dans la section précédente, vous avez vu comment valider une configuration Terraform. Ce niveau de test était spécifique à la syntaxe. Ce test n’a pas pris en compte ce qui peut déjà être déployé sur Azure.
Terraform est un langage déclaratif , ce qui signifie que vous déclarez ce que vous souhaitez comme résultat final. Par exemple, supposons que vous disposez de 10 machines virtuelles dans un groupe de ressources. Ensuite, vous créez un fichier Terraform définissant trois machines virtuelles. L’application de ce plan n’incrémente pas le nombre total à 13. Au lieu de cela, Terraform supprime sept des machines virtuelles pour que vous finissiez avec trois. L’exécution de terraform plan vous permet de confirmer les résultats potentiels de l’application d’un plan d’exécution pour éviter les surprises.
Pour générer le plan d’exécution Terraform, vous exécutez terraform plan. Cette commande se connecte à l’abonnement Azure cible pour vérifier quelle partie de la configuration est déjà déployée. Terraform détermine ensuite les modifications nécessaires pour répondre aux exigences indiquées dans le fichier Terraform. À ce stade, Terraform ne déploie rien. Il vous dit ce qui se passera si vous appliquez le plan.
Si vous suivez l’article et que vous avez effectué les étapes décrites dans la section précédente, exécutez la commande terraform plan :
terraform plan
Après avoir exécuté terraform plan, Terraform affiche le résultat potentiel de l’application du plan d’exécution. La sortie indique les ressources Azure qui seront ajoutées, modifiées et détruites.
Par défaut, Terraform stocke l’état dans le même répertoire local que le fichier Terraform. Ce modèle fonctionne bien dans les scénarios mono-utilisateur. Toutefois, lorsque plusieurs personnes travaillent sur les mêmes ressources Azure, les fichiers d’état locaux peuvent devenir désynchronisés. Pour résoudre ce problème, Terraform prend en charge l’écriture de fichiers d’état dans un stockage de données distant (par exemple, Azure Stockage). Dans ce scénario, il peut être problématique d’exécuter terraform plan sur un ordinateur local et de cibler un ordinateur distant. Par conséquent, il peut être judicieux d'automatiser cette étape de validation dans le cadre de votre pipeline d’intégration continue.
4. Exécuter l’analyse du code statique
L’analyse statique du code peut être effectuée directement sur le code de configuration Terraform, sans l’exécuter. Cette analyse peut être utile pour détecter des problèmes tels que des problèmes de sécurité et des incohérences de conformité.
Les outils suivants fournissent une analyse statique pour les fichiers Terraform :
L’analyse statique est souvent exécutée dans une partie d’un pipeline d’intégration continue. Ces tests ne nécessitent pas la création d’un plan d’exécution ou d’un déploiement. Par conséquent, ils s’exécutent plus rapidement que d’autres tests et sont généralement exécutés en premier dans le processus d’intégration continue.
5. Automatiser les tests d’intégration à l’aide d’Azure Pipeline
L’intégration continue implique le test d’un système entier lorsqu’une modification est introduite. Dans cette section, vous voyez une configuration Azure Pipeline utilisée pour implémenter l’intégration continue.
À l’aide de votre éditeur de choix, accédez au clone local de l’exemple de projet Terraform sur GitHub.
Ouvrez le fichier
samples/integration-testing/src/azure-pipeline.yaml.Faites défiler jusqu’à la section étapes où vous voyez un ensemble standard d’étapes utilisées pour exécuter différentes routines d’installation et de validation.
Passez en revue la ligne qui lit, étape 1 : exécutez l’analyse du code statique Checkov. Dans cette étape, le projet
Checkovmentionné précédemment exécute une analyse de code statique sur l’exemple de configuration Terraform.- bash: $(terraformWorkingDirectory)/checkov.sh $(terraformWorkingDirectory) displayName: Checkov Static Code AnalysisPoints clés :
- Ce script est chargé d’exécuter Checkov dans l’espace de travail Terraform monté à l’intérieur d’un conteneur Docker. Les agents gérés par Microsoft sont compatibles avec Docker. L’exécution d’outils à l’intérieur d’un conteneur Docker est plus facile et supprime la nécessité d’installer Checkov sur l’agent Azure Pipeline.
- La variable
$(terraformWorkingDirectory)est définie dans le fichierazure-pipeline.yaml.
Passez en revue la ligne qui lit, Étape 2 : installez Terraform sur l’agent Azure Pipelines. L’extension Build Terraform & Release Task que vous avez installée précédemment a une commande pour installer Terraform sur l’agent exécutant Azure Pipeline. Cette tâche est la tâche en cours d’exécution dans cette étape.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-installer.TerraformInstaller@0 displayName: 'Install Terraform' inputs: terraformVersion: $(terraformVersion)Points clés :
- La version de Terraform à installer est spécifiée via une variable Azure Pipeline nommée
terraformVersionet définie dans le fichierazure-pipeline.yaml.
- La version de Terraform à installer est spécifiée via une variable Azure Pipeline nommée
Passez en revue la ligne qui lit, étape 3 : exécutez Terraform init pour initialiser l’espace de travail. Maintenant que Terraform est installé sur l’agent, le répertoire Terraform peut être initialisé.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform init' inputs: command: init workingDirectory: $(terraformWorkingDirectory)Points clés :
- L’entrée
commandspécifie la commande Terraform à exécuter. - L’entrée
workingDirectoryindique le chemin d’accès du répertoire Terraform. - La variable
$(terraformWorkingDirectory)est définie dans le fichierazure-pipeline.yaml.
- L’entrée
Passez en revue la ligne qui lit, étape 4 : exécutez Terraform validate pour valider la syntaxe HCL. Une fois le répertoire du projet initialisé,
terraform validateest exécuté pour valider la configuration sur le serveur.- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform validate' inputs: command: validate workingDirectory: $(terraformWorkingDirectory)Passez en revue la ligne qui lit, étape 5 : exécutez le plan Terraform pour valider la syntaxe HCL. Comme expliqué précédemment, la génération du plan d’exécution est effectuée pour vérifier si la configuration Terraform est valide avant le déploiement.
- task: charleszipp.azure-pipelines-tasks-terraform.azure-pipelines-tasks-terraform-cli.TerraformCLI@0 displayName: 'Run terraform plan' inputs: command: plan workingDirectory: $(terraformWorkingDirectory) environmentServiceName: $(serviceConnection) commandOptions: -var location=$(azureLocation)Points clés :
- L’entrée
environmentServiceNamefait référence au nom de la connexion de service Azure créée dans Configurer votre environnement. La connexion permet à Terraform d’accéder à votre abonnement Azure. - L’entrée
commandOptionsest utilisée pour passer des arguments à la commande Terraform. Dans ce cas, un emplacement est spécifié. La variable$(azureLocation)est définie précédemment dans le fichier YAML.
- L’entrée
Importer le pipeline dans Azure DevOps
Ouvrez votre projet Azure DevOps et accédez à la section Azure Pipelines.
Sélectionnez le bouton Créer un pipeline.
Pour l'option "Où est votre code ?", sélectionnez GitHub (YAML).
À ce stade, vous devrez peut-être autoriser Azure DevOps à accéder à votre organisation. Pour plus d’informations sur cette rubrique, consultez l’article Créer des dépôts GitHub.
Dans la liste des dépôts, sélectionnez la duplication du dépôt que vous avez créé dans votre organisation GitHub.
Dans l'étape Configurer votre pipeline, choisissez de commencer à partir d’un pipeline YAML existant.
Lorsque la page Sélectionner un pipeline YAML existant s’affiche, spécifiez la branche
masteret entrez le chemin d’accès au pipeline YAML :samples/integration-testing/src/azure-pipeline.yaml.
Sélectionnez Continuer pour charger le pipeline YAML Azure à partir de GitHub.
Lorsque la page Vérifier votre pipeline YAML s’affiche, sélectionnez Exécuter pour créer et déclencher manuellement le pipeline pour la première fois.
Vérifier les résultats
Vous pouvez exécuter le pipeline manuellement à partir de l’interface utilisateur Azure DevOps. Toutefois, le point de l’article est de montrer l’intégration continue automatisée. Testez le processus en soumettant une modification dans le dossier samples/integration-testing/src de votre dépôt dérivé. La modification déclenche automatiquement un nouveau pipeline sur la branche sur laquelle vous envoyez le code.
Pipeline 
Une fois que vous avez effectué cette étape, accédez aux détails dans Azure DevOps pour vous assurer que tout s’est exécuté correctement.
Résoudre les problèmes de Terraform sur Azure
résoudre les problèmes courants lors de l’utilisation de Terraform sur Azure