Reputation: 2335
While doing Terraform Apply i am getting the below error :
Error: A resource with the ID "/subscriptions/0386xx61-41b1-xxx-9658-8cxxxx6c0829/resourceGroups/rg-identity-prd-cus-001/providers/Microsoft.Compute/diskEncryptionSets/des-prd-cus-001" already exists - to be managed via Terraform this resource needs to be imported into the State. Please see the resource documentation for "azurerm_disk_encryption_set" for more information.
│
│ with module.identity_subscription[0].azurerm_disk_encryption_set.de_identity["key1"],
│ on subscriptions/identity/identity.tf line 578, in resource "azurerm_disk_encryption_set" "de_identity":
│ 578: resource "azurerm_disk_encryption_set" "de_identity" {
I have created an Azure disk encryption set resource in identity.tf file with the below code :
resource "azurerm_disk_encryption_set" "de_identity" {
for_each = local.kv_keys
name = format("des-%s-%s-%s", var.environment,var.location_short_name,var.instance_number)
resource_group_name = module.resource_group.rg_name_subs
location = var.location
key_vault_key_id = azurerm_key_vault_key.kv_key[each.key].id
identity {
type = "SystemAssigned"
}
}
Now i run this command below and it is throwing error :
terraform import --var-file=centralus.tfvars module.identity_subscription[0].azurerm_disk_encryption_set.de_identity "/subscriptions/xxxx61-41xx-451x-xxxx-8c25546c0829/resourceGroups/rg-identity-prd-cus-001/providers/Microsoft.Compute/diskEncryptionSets/des-prd-cus-001"
Error Message :
Error: Configuration for import target does not exist
│
│ The configuration for the given import module.identity_subscription[0].azurerm_disk_encryption_set.de_identity does not exist. All target instances
│ must have an associated configuration to be imported.
The structure of my folder is shown in screenshot
╵
Upvotes: -1
Views: 65
Reputation: 2286
Getting Error while trying to do Terraform Import of Azure Disk Encryption Sets
Continution from the comment discussion the errors mentioned was in general occurs due to two things
As Matthew-Schuchard mentioned whenever youre using the for_each configuration inside the plugin we should always need to provide literal quotes
Lets say in this format
terraform import --var-file=centralus.tfvars 'module.identity_subscription[0].azurerm_disk_encryption_set.de_identity["key2"]' /subscriptions/038xxxx-4xx1-4xx-9658-8c25546c0829/resourceGroups/rg-identity-prd-cus-001/providers/Microsoft.Compute/diskEncryptionSets/des-prd-cus-001
The use of escaped quotes ["key2"] is correct and required here.
Second thing as per the error discription
The invlovement of C:/Users/
... before subscriptions/..
. this states that shell misinterpreted the second argument as path
instead of resource id
Always make sure you have the quotes for keys in this manner "key2" or 'key2'
Make sure you have the valid key inputs inside tfvars.
Refer:
https://developer.hashicorp.com/terraform/language/import#import-multiple-instances-with-for_each
https://github.com/hashicorp/terraform/issues/33114
Upvotes: 0