Importe une ressource existante (créée manuellement ou hors Terraform) dans le state Terraform.

Après import, il faut écrire manuellement le bloc resource correspondant dans les .tf. L’import ne génère pas le code HCL (en dehors du bloc import HCL natif de TF 1.5+).


Options principales

OptionDéfautDescription
-config=CHEMINdossier courantChemin vers la configuration
-input=true|falsetrueMode interactif
-lock=true|falsetrueVerrouille le state
-lock-timeout=DURÉE0sTimeout pour le verrou
-var="key=value"aucuneVariable inline
-var-file=FICHIERterraform.tfvarsFichier de variables
-state=FICHIERterraform.tfstateFichier state à utiliser

Syntaxe

terraform import ADRESSE_RESSOURCE ID_RESSOURCE_CLOUD

Exemples

# 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-abc123

Workflow 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.tf

En relation avec