Résoudre les problèmes courants liés à l’utilisation de Terraform sur Azure

Cet article liste les problèmes courants et les solutions possibles liés à l’utilisation de Terraform sur Azure.

Si vous rencontrez un problème propre à Terraform, utilisez l’un des canaux de support de la communauté HashiCorp.

Canaux de support propres à HashiCorp Terraform

Impossible de lister l’état de l’inscription du fournisseur

Message d’erreur :

Erreur : Impossible de répertorier l’état d’inscription du fournisseur, il est possible qu’il s’agit d’informations d’identification non valides ou que le principal de service n’ait pas l’autorisation d’utiliser l’API Resource Manager, l’erreur Azure : ressources. ProvidersClient#List : Échec de réponse à la demande : StatusCode=403 -- Erreur d’origine : autorest/azure : le service a retourné une erreur. Status=403 Code="AuthorizationFailed » Message="The client '0000000-0000-0000-0000-000000000000000' with object id '0000000000-0000-0000-0000-0000-0000 L’autorisation d’effectuer une action « Microsoft.Resources/subscriptions/providers/read » sur l’étendue « /subscriptions00000000000000-000000-00000-00000-00000-0000000000000000000000 » n’est pas valide. Si l’accès a été accordé récemment, actualisez vos informations d’identification ».

Contexte : Si vous exécutez des commandes Terraform à partir de Cloud Shell et que vous avez défini certaines variables d’environnement Terraform/Azure, vous pouvez parfois voir des conflits. Les variables d’environnement et la valeur Azure qu’elles représentent sont listées dans le tableau suivant :

Variable d'environnement Valeur Azure
ARM_SUBSCRIPTION_ID ID d’abonnement Azure
ARM_TENANT_ID ID du locataire du compte Microsoft
ARM_CLIENT_ID ID d’application du principal de service Azure
ARM_CLIENT_SECRET Mot de passe du principal de service Azure

Cause : Au moment de rédiger cet article, le script Terraform qui s’exécute dans Cloud Shell remplace les variables d’environnement ARM_SUBSCRIPTION_ID et ARM_TENANT_ID en utilisant les valeurs de l’abonnement Azure actif. Par conséquent, si le principal de service référencé par les variables d’environnement ne dispose pas de droits d’accès à l’abonnement Azure actif, toutes les opérations Terraform échouent.

Erreur d’acquisition du verrou d’état

Message d’erreur :

Erreur : Erreur lors de l’acquisition du verrou d’état ; Message d’erreur : 2 erreurs se sont produites :
* l’objet blob d’état est déjà verrouillé
* Les métadonnées d’objet blob « terraformlockid » étaient vides
Terraform acquiert un verrou d’état pour protéger l’état de l’écriture par plusieurs utilisateurs en même temps. Résolvez le problème ci-dessus et réessayez. Pour la plupart des commandes, vous pouvez désactiver le verrouillage avec l’indicateur « -lock=false », mais cela n’est pas recommandé.

Contexte : Si vous exécutez des commandes Terraform sur un fichier d’état Terraform, et si cette erreur est le seul message qui s’affiche, les causes suivantes peuvent s’appliquer. S’applique aux fichiers d’état locaux et distants.

Cause : Il existe deux causes potentielles pour cette erreur. Première possibilité, une commande Terraform est déjà en cours d’exécution sur le fichier d’état, et elle a forcé le verrouillage de ce dernier. Deuxième possibilité, une interruption de connexion s’est produite entre le fichier d’état et l’interface CLI au moment de l’exécution des commandes. Cette interruption se produit le plus souvent quand vous utilisez des fichiers d’état distants.

Résolution : Vérifiez d’abord que vous n’exécutez pas déjà de commandes sur le fichier d’état. Si vous utilisez un fichier d’état local, vérifiez si des terminaux exécutent des commandes. Vous pouvez également examiner vos pipelines de déploiement pour vérifier si le fichier d’état n’est pas en cours d’utilisation par un élément quelconque. Si cela ne résout pas le problème, il est possible que la deuxième cause ait déclenché l’erreur. Dans le cas d’un fichier d’état distant stocké au sein d’un conteneur de compte Stockage Azure, vous pouvez localiser le fichier et utiliser le bouton Résilier le bail.

Screenshot that shows the Azure Storage container Break lease button.

Si vous utilisez d’autres back-ends pour stocker votre fichier d’état, consultez la documentation de HashiCorp pour obtenir les recommandations appropriées.

Erreurs VPN

Pour plus d’informations sur la résolution de problèmes de VPN, voir l’article Résoudre les problèmes d’une connexion VPN hybride.