How do I move a resource to a new tf file and state without destroying and recreating?

terraform state mv
terraform lost state file
terraform import remote state
terraform state file example
terraform rollback
terraform import s3 bucket example

I have a resource (aws_iam_role.derp) in my tf file which is using this state:

terraform {
  backend "s3" {
    bucket = "mybucket"
    region = "us-east-1"
    key = "aaaaaa"
  }
}

I want to move it to another state file (named "bbbbbb").

I dont want to move all the other resources in this tf file.

How do I just move this resource to another state file? I created a new tf file (in a different folder) and specified a new state:

terraform {
  backend "s3" {
    bucket = "mybucket"
    region = "us-east-1"
    key = "bbbbb"
  }
}

when i run terraform apply terraform see it as a new resource.

I want to move this resource to the new tf file without having to destroy and recreate it.

I’m not sure it’s the only way, but I'll typically remove the state of the resource from current state file using "terraform state rm" followed by moving resource definition to new folder, following by import of that resource into new state file

Terraform State Move, With this new capability, it is significantly easier to refactor an existing Terraform configuration into modules without affecting the underlying infrastructure in but you can use the same technique to manage your VPC resources. Here is what our main.tf file looks after the refactor: Plan: 6 to add, 0 to change, 6 to destroy. $ cp main.tf dev.tf. Rename the main.tf file to prod.tf. $ mv main.tf prod.tf. You now have two identical files. Open dev.tf and remove any references to the production environment by deleting the resource blocks with the prod ID. Repeat the process for prod.tf by removing any resource blocks with the dev ID.

What you could do is,

  1. you can import your resource in new tfstate file.
  2. Move relevant code to new tf file.
  3. remove moved code from old tf file.

Unable to move resource to new module · Issue #21346 · hashicorp , Backend: using default local state only (no backend configuration, and no existing initialized Moving tf resource: terraform state mv module.example.​local_file.file Dear Hashicorp, this bug is breaking basically all module-related refactoring allow moving resource to new modules not in state #22299. duhaas. Member for 10 years, 3 How do I move a resource to a new tf file and state without destroying and recreating?

You can use terraform state rm to remove the resource from state file. You can import resource to state file with terraform import

Make sure to refactor your code accordingly as other mentioned so your resources are not being destroyed/recreated.

Command: refresh, CLI Config File · Environment Variables · apply · console · destroy · env · fmt This does not modify infrastructure, but does modify the state file. By default, refresh requires no flags and looks in the current directory for the configuration and state file to Operation will be limited to this resource and its dependencies. So in terms of moving to a remote state setup, this is simple. Previously, we had the local reference to the Terraform state file. And now all we do is we change, and we say, “I want to use a remote backend.” In this case, it's Amazon S3.

State: Import Existing Resources, Terraform stores state which caches the known state of the world the last time Terraform ran. Some time later the thing breaks in dev and your test env state is blocked. You want to move one env to another state file location. This is a fairly simple to task to do with state move. Usage: terraform state mv [options] SOURCE DESTINATION. Perfectly fine when you’re moving 1 or 2 resources, changing some more can cause serious headaches.

How to manage Terraform state - Gruntwork, But how did Terraform know which resources it was supposed to manage? Locking state files: As soon as data is shared, you run into a new problem: the state file in that backend after each apply , so there's no chance of manual error. Create a main.tf file in a new folder (it should be a different folder  If there was nothing created in my AWS and I do a run on frontend/main.tf everything actually works fine. If however I wanted to create the VPC/subnets/etc (vpc/main.tf) one day then create the frontend instances the next day (frontend/main.tf) then this is where the problem occurs because, as u/rohitdashora pointed out it will create a new resource using the template in vpc/main.tf then bring

How To Use Terraform with DigitalOcean, Create a new Terraform configuration file called www-1.tf which will hold Insert the following lines to define the Droplet resource: Refreshing Terraform state in​-memory prior to plan. Resources: 1 added, 0 changed, 0 destroyed. a second quickly by copying the existing server's configuration file and  Without locking, if two team members are running Terraform at the same time, you may run into race conditions as multiple Terraform processes make concurrent updates to the state files, leading to conflicts, data loss, and state file corruption.