Utiliser Terraform en tant qu’outil d’infrastructure en tant que code pour Azure Developer CLI

Azure Developer CLI (azd) prend en charge plusieurs infrastructures en tant que fournisseurs de code (IaC), notamment :

Par défaut, azd suppose Bicep comme fournisseur IaC. Reportez-vous à l’article Compare Terraform et Bicep pour obtenir de l’aide sur la décision du fournisseur IaC le mieux adapté à votre projet.

Remarque

Terraform est toujours en version bêta. En savoir plus sur la prise en charge des fonctionnalités alpha et bêta sur la page gestion des versions et stratégies de mise en production des fonctionnalités

Conditions préalables

Important

Les déploiements Terraform nécessitent une connexion Azure CLI même lorsque vous utilisez azd. Le fournisseur Terraform azurerm s'authentifie par le biais de Azure CLI par défaut et ne lit pas les jetons du azd cache d'informations d'identification. Si vous exécutez azd auth loginuniquement , azd up échoue à l’étape de provisionnement avec ERROR: Please run 'az login' to setup account. Consultez s’authentifier auprès de Azure pour le flux de connexion recommandé.

S’authentifier auprès de Azure

Étant donné que Terraform utilise Azure CLI pour l’authentification, vous devez être connecté à la fois azd et az avant d’exécuter azd up. Vous pouvez le faire de deux façons.

Configurez azd pour déléguer l’authentification à Azure CLI. Ce paramètre vous permet de vous connecter une fois avec az login et d’utiliser les mêmes informations d’identification pour les deux outils.

azd config set auth.useAzCliAuth true
az login

Si vous travaillez avec plusieurs locataires, incluez le --tenant paramètre :

az login --tenant <tenant-id>

Option 2 : Se connecter à chaque outil séparément

Si vous préférez garder l’authentification de azd et d’Azure CLI indépendante, connectez-vous à chaque outil avec sa propre commande :

azd auth login
az login

Vous devez actualiser les deux sessions lorsque l’un des deux jetons expire.

Configurer Terraform en tant que fournisseur IaC

  1. Ouvrez le fichier azure.yaml trouvé à la racine de votre projet et vérifiez que vous disposez des lignes suivantes pour remplacer la valeur par défaut, qui est Bicep :

    infra:
      provider: terraform
    
  2. Ajoutez tous vos .tf fichiers au infra répertoire trouvé à la racine de votre projet.

  3. Exécutez azd up.

Remarque

Consultez ce modèle azd avec Terraform en tant que fournisseur IaC : Node.js et Terraform.

azd pipeline config pour Terraform

Terraform stocke l’état de votre infrastructure et de votre configuration managées. En raison de ce fichier d’état, vous devez activer l’état à distance avant d'exécuter azd pipeline config pour configurer votre pipeline de déploiement dans GitHub.

Par défaut, azd suppose l’utilisation du fichier d’état local. Si vous avez exécuté azd up avant d’activer l’état distant, vous devez exécuter azd down et basculer vers le fichier d’état distant.

État local par rapport à état distant

Terraform utilise des données d’état persistantes pour suivre les ressources qu’il gère.

Scénarios d’activation de l’état distant :

  • Pour autoriser l’accès partagé aux données d’état et permettre à plusieurs personnes de travailler ensemble sur cette collection de ressources d’infrastructure
  • Pour éviter d’exposer des informations sensibles incluses dans le fichier d’état
  • Pour réduire la probabilité de suppression accidentelle en raison du stockage de l’état localement

Activer l’état distant

  1. Veillez à configurer un compte de stockage d’état distant.

  2. Ajoutez un nouveau fichier appelé provider.conf.json dans le infra dossier.

    {
        "storage_account_name": "${RS_STORAGE_ACCOUNT}",
        "container_name": "${RS_CONTAINER_NAME}",
        "key": "azd/azdremotetest.tfstate",
        "resource_group_name": "${RS_RESOURCE_GROUP}"
    }
    
  3. Mettez à jour provider.tf situé dans le dossier infra pour définir le backend comme distant.

    # Configure the Azure Provider
    terraform {
      required_version = ">= 1.1.7, < 2.0.0"
      backend "azurerm" {
      }
    
  4. Exécutez azd env set <key> <value> pour ajouter une configuration dans le .env fichier. Par exemple :

    azd env set RS_STORAGE_ACCOUNT your_storage_account_name
    azd env set RS_CONTAINER_NAME your_terraform_container_name
    azd env set RS_RESOURCE_GROUP your_storage_account_resource_group
    
  5. Exécutez la commande suivante azd en fonction de votre flux de travail habituel. Lorsque l’état distant est détecté, azd initialise Terraform avec la configuration back-end configurée.

  6. Pour partager l’environnement avec des collègues, assurez-vous qu’ils s’exécutent azd env refresh -e <environmentName> pour actualiser les paramètres d’environnement dans le système local et effectuez l’étape 4 pour ajouter la configuration dans le .env fichier.

Voir aussi

Étapes suivantes