Import existing infrastructure into Terraform state
Imports existing cloud infrastructure resources into Terraform state management.
/plugin marketplace add JosiahSiegel/claude-plugin-marketplace/plugin install terraform-master@claude-plugin-marketplace<resource_address> <resource_id>Import existing infrastructure resources into Terraform management.
/tf-import aws_vpc.main vpc-12345678
/tf-import azurerm_resource_group.main /subscriptions/.../resourceGroups/my-rg
/tf-import --generate-config # Generate config for imports (1.5+)
# Requires existing resource block in config
terraform import aws_instance.web i-1234567890abcdef0
# imports.tf
import {
to = aws_instance.web
id = "i-1234567890abcdef0"
}
# Generate configuration
terraform plan -generate-config-out=generated.tf
terraform apply
# EC2 Instance
terraform import aws_instance.web i-1234567890abcdef0
# VPC
terraform import aws_vpc.main vpc-12345678
# S3 Bucket
terraform import aws_s3_bucket.main my-bucket-name
# Security Group
terraform import aws_security_group.main sg-12345678
# IAM Role
terraform import aws_iam_role.main role-name
# Resource Group
terraform import azurerm_resource_group.main /subscriptions/SUB_ID/resourceGroups/my-rg
# Storage Account
terraform import azurerm_storage_account.main /subscriptions/SUB_ID/resourceGroups/my-rg/providers/Microsoft.Storage/storageAccounts/mystorageaccount
# Virtual Network
terraform import azurerm_virtual_network.main /subscriptions/SUB_ID/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet
# Compute Instance
terraform import google_compute_instance.main projects/my-project/zones/us-central1-a/instances/my-instance
# VPC Network
terraform import google_compute_network.main projects/my-project/global/networks/my-network
# GCS Bucket
terraform import google_storage_bucket.main my-bucket-name
# Single import
import {
to = aws_vpc.main
id = "vpc-12345678"
}
# Multiple imports
import {
to = aws_subnet.public[0]
id = "subnet-aaaa1111"
}
import {
to = aws_subnet.public[1]
id = "subnet-bbbb2222"
}
# OpenTofu 1.7+: Looped imports
import {
for_each = local.subnets
to = aws_subnet.imported[each.key]
id = each.value
}
# main.tf
resource "aws_vpc" "main" {
# Configuration will be filled after import
}
terraform import aws_vpc.main vpc-12345678
# Show imported state
terraform state show aws_vpc.main
# Update config to match
# Should show no changes
terraform plan
terraform plan showing no changes