Java 用于多个实例的terraform tf状态文件

Java 用于多个实例的terraform tf状态文件,java,amazon-web-services,terraform,devops-services,Java,Amazon Web Services,Terraform,Devops Services,我想使用terraform为aws中的不同组件创建不同的实例。但如果我想销毁某个组件的特定实例,它将同时销毁不同组件的所有不同实例,因为所有组件都在一个文件夹中共享公共tfstate文件。所以解决方法是,我需要在不同的文件夹中创建不同的组件实例,为单独的tfstate文件运行terraform。我们是否需要为单独的组件创建单独的文件夹并在其中运行terraform 除此之外还有其他工作吗 谢谢好的,既然问题中没有那么多细节,让我猜猜 您希望运行terraformdestroy来销毁一些“实例”

我想使用terraform为aws中的不同组件创建不同的实例。但如果我想销毁某个组件的特定实例,它将同时销毁不同组件的所有不同实例,因为所有组件都在一个文件夹中共享公共tfstate文件。所以解决方法是,我需要在不同的文件夹中创建不同的组件实例,为单独的tfstate文件运行terraform。我们是否需要为单独的组件创建单独的文件夹并在其中运行terraform

除此之外还有其他工作吗


谢谢

好的,既然问题中没有那么多细节,让我猜猜

您希望运行
terraformdestroy
来销毁一些“实例”

但你不想让它毁掉你所有的资源

您考虑将资源分离到具有不同状态的不同文件夹中

但这是不需要的。如果您想销毁某些特定的“实例”/“资源”--只需将其从配置文件(
.tf
文件)中删除,然后运行
terraform apply
。这将破坏某些“实例”,但保留所有其他实例

假设您具有以下配置:

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个实例:web、应用程序、api。您想销毁
网站

不要运行
terraform destroy
,它将破坏您的所有状态,只需留下您需要的东西并运行
terraform plan


p.S.在不同文件夹中分离状态也有意义。例如,非常推荐将不同的环境划分为不同的状态文件。此外,您可以将更常见的内容(如VPC或S3 Bucket config)移动到一个单独的状态,在对EC2实例应用更频繁的更改时,该状态很少发生变化,从而不会将其置于风险之下。

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

您能提供更具体的信息吗?在
组件
实例
下,您是什么意思?您将创建哪些AWS资源?