Aller au contenu

Troubleshoot Terraform

·
aide terraform
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops

Erreurs courantes
#

  • Erreur de syntaxe HCL : A ça c’est quand on va trop vite et que la syntaxe n’est pas bonne: syntaxe incorrecte. Par exemple :

  • Incorrect :

provuder "aws" { region = "us-west-2" }
  • Correct :
provider "aws" { region = "us-west-2" }
  • Dépendances manquantes : Certaines ressources ou modules peuvent dépendre d’autres ressources ou modules qui n’ont pas été déclarés dans votre configuration. Par exemple :
    • Incorrect :
resource "aws_instance" "example" {
  ami           = "ami-12345678"
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.example.id
}
  • Correct :
resource "aws_subnet" "example" {
  vpc_id            = aws_vpc.example.id
  cidr_block        = "10.0.0.0/24"
  availability_zone = "us-west-2a"
}

resource "aws_instance" "example" {
  ami           = "ami-12345678"
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.example.id
}

  • Manque de permissions : Lorsque vous exécutez des commandes Terraform, votre compte d’utilisateur peut manquer de certaines autorisations pour effectuer les opérations nécessaires. Par exemple, si vous n’avez pas les autorisations nécessaires pour créer une ressource dans votre fournisseur cloud, vous obtiendrez une erreur d’autorisation. Egalement n’oubliez pas de vérifier les droits appliquer au petit fichier cachées: .terraform.tfstate et .terraform/ .
    Pour ce dernier sur le provider vsphere, voici la liste nécessaire ici.

  • Conflits de ressources existantes : Terraform peut rencontrer des conflits lors de la création de ressources si des ressources avec les mêmes noms existent déjà dans votre infrastructure. Par exemple, si vous tentez de créer une instance EC2 avec un nom qui est déjà utilisé par une autre instance.

  • Problèmes de connectivité avec les fournisseurs : Vous pourriez rencontrer des erreurs lors de la communication avec les fournisseurs de services cloud, par exemple en raison de problèmes de connectivité ou de configurations incorrectes.

Ici je vous ai partagé quelques exemples d’erreurs courantes que vous pourriez rencontrer lors de l’utilisation de Terraform. Mais il y en a d’autre, il est important de bien lire les messages d’erreur, ne pas paniquer quand il y en a des tonnes: Terraform s’emballe vite quand il n’est pas content. Il y a très souvent un point de concordance dans une floppé d’erreur. Consulter la documentation officiel Hashicorp au besoin ou directement une recherche stack overflow pour résoudre ces problèmes.

Activer les journaux de Terraform
#

Terraform 0.15 permet de générer des journaux séparés pour le fournisseur Terraform et l’application principale. L’équipe de développement de Terraform a besoin des journaux principaux pour résoudre les erreurs liées à l’application principale. Pour activer les journaux principaux, définissez la variable d’environnement TF_LOG_CORE sur le niveau de journal approprié. Pour les rapports de bogues, utilisez le niveau TRACE.

export TF_LOG_CORE=TRACE

TRACE fournit le niveau de journal le plus élevé et contient toutes les informations nécessaires à l’équipe de développement. Il existe d’autres niveaux de journal, mais ils sont généralement réservés aux développeurs à la recherche d’informations spécifiques.

Vous pouvez également générer des journaux spécifiques au fournisseur en définissant la variable d’environnement TF_LOG_PROVIDER. En incluant ces journaux dans vos rapports de bogues, l’équipe de développement du fournisseur peut reproduire et résoudre les erreurs spécifiques au fournisseur.

export TF_LOG_PROVIDER=TRACE

Une fois que vous avez configuré vos journaux, définissez le chemin de vos journaux d’erreur en tant que variable d’environnement. Si vos variables d’environnement TF_LOG_CORE ou TF_LOG_PROVIDER sont activées, la variable TF_LOG_PATH créera le fichier spécifié et y ajoutera les journaux générés par Terraform.

export TF_LOG_PATH=logs.txt

Pour générer un exemple de journaux principaux et de fournisseurs, exécutez une opération terraform refresh.

terraform refresh

Ouvrez et examinez le fichier logs.txt. Ce fichier de journal contient à la fois les journaux du fournisseur terraform-provider-aws et les journaux principaux de Terraform.

cat logs.txt

Pour supprimer un flux de journaux, supprimez la variable d’environnement:

unset TF_LOG_CORE

Articles connexes

Backend
terraform
Commandes de base
terraform
Déployer un agent Terraform - Docker
docker agent terraform