Importe une ressource existante (créée manuellement ou hors Terraform) dans le state Terraform.
Après import, il faut écrire manuellement le bloc
resourcecorrespondant dans les.tf. L’import ne génère pas le code HCL (en dehors du blocimportHCL natif de TF 1.5+).
Options principales
| Option | Défaut | Description |
|---|---|---|
-config=CHEMIN | dossier courant | Chemin vers la configuration |
-input=true|false | true | Mode interactif |
-lock=true|false | true | Verrouille le state |
-lock-timeout=DURÉE | 0s | Timeout pour le verrou |
-var="key=value" | aucune | Variable inline |
-var-file=FICHIER | terraform.tfvars | Fichier de variables |
-state=FICHIER | terraform.tfstate | Fichier state à utiliser |
Syntaxe
terraform import ADRESSE_RESSOURCE ID_RESSOURCE_CLOUDExemples
# Importer une instance EC2 AWS
terraform import aws_instance.web i-0abcd1234567890
# Importer une ressource indexée (count)
terraform import 'aws_instance.web[0]' i-0abcd1234567890
# Importer une ressource indexée (for_each)
terraform import 'aws_instance.web["prod"]' i-0abcd1234567890
# Importer dans un module
terraform import module.compute.aws_instance.web i-0abcd1234567890
# Importer un bucket S3
terraform import aws_s3_bucket.data my-existing-bucket
# Importer une ressource Azure
terraform import azurerm_resource_group.main /subscriptions/xxx/resourceGroups/my-rg
# Importer avec un provider spécifique
terraform import -provider=aws.east aws_instance.web i-abc123Workflow complet d’import
# 1. Écrire le bloc resource dans le .tf (configuration minimale)
cat >> main.tf << 'EOF'
resource "aws_instance" "web" {
# Les attributs seront remplis après l'import
}
EOF
# 2. Importer dans le state
terraform import aws_instance.web i-0abcd1234567890
# 3. Inspecter le state importé
terraform state show aws_instance.web
# 4. Compléter le .tf avec les attributs réels
# (copier depuis la sortie de state show)
# 5. Vérifier qu'il n'y a pas de diff
terraform plan # doit afficher "No changes"Import HCL natif (Terraform >= 1.5)
Depuis Terraform 1.5, on peut déclarer les imports directement dans le code HCL :
# import.tf
import {
to = aws_instance.web
id = "i-0abcd1234567890"
}
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}# Générer automatiquement le code HCL depuis l'import (TF 1.5+)
terraform plan -generate-config-out=generated.tfEn relation avec
- Qualité et code — Vue d’ensemble — hub qualité
- terraform state — state rm/mv pour gérer les ressources importées
- terraform plan — vérifier qu’il n’y a pas de diff après l’import