多个实例的 terraform tf 状态文件

terraform tf state file for multiple instances

我想在 aws 中使用 terraform.But 为不同的组件创建不同的实例如果我想销毁组件的特定实例,它将同时销毁不同组件的所有不同实例,因为它们共享共同点tfstate 文件中的一个 folder.So 解决方法是我需要在不同的文件夹中创建不同的组件实例 运行 terraform 用于单独的 tfstate file.Should 我们需要为单独的组件创建单独的文件夹并且 运行 terraform 那里?

除此之外还有其他解决方法吗?

谢谢

好吧,问题没那么详细,我猜猜看吧

你希望运行宁terraform destroy摧毁你的一些'instances'。

但您不希望它破坏您所有的资源。

您考虑过将资源分成不同状态的不同文件夹。

但这不需要。如果您想销毁某些特定的 'instance'/'resource' -- 只需将其从您的配置(.tf 文件)和 运行 terraform apply 中删除。这将破坏一些 'instance' 但保留所有其他。

假设您有以下配置:

resource "aws_instance" "api" {
  ami           = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"
}

resource "aws_instance" "web" {
  ami           = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"
}

resource "aws_instance" "app" {
  ami           = "${data.aws_ami.ubuntu.id}"
  instance_type = "t2.micro"
}

3 个实例:网络、应用程序,api。你想摧毁 web

而不是运行宁terraform destroy,这会破坏你所有的状态,只留下你需要的任何东西和运行 terraform plan

P.S. 将不同文件夹中的状态分开也是有道理的。例如,非常非常推荐将不同的环境分成不同的状态文件。此外,您可以将一些更常见的东西(例如 VPC 或 S3 存储桶配置)移动到一个单独的状态,该状态很少更改,以免在对 EC2 实例应用一些更频繁的更改时将其置于风险之中。

只需在 .tf 文件中注释掉您不再需要的部分,然后再次 运行 plan/apply。它只会破坏你注释掉的部分。