Terraform Planning 在规划更改时删除资源
Terraform Planning to delete resources when planning changes
我目前有一个如下所示的 terraform 目录:
└── aws
├── iam
│ └── iam.tf
├── services
│ └── services.tf
└── vpc.tf
后端是 S3,我们正在使用工作区。我为每个 tf 配置使用相同的工作区和后端配置。
我正在执行的步骤:
terraform init
在 /aws 目录中。
- Select 工作空间
terraform apply
vpc.tf
资源创建成功。
- cd ~/aws/services
terraform init
和 select 相同的工作空间
当我为 ~/aws/services/services.tf
执行 terraform plan
时,计划显示将创建 services.tf
资源,但它将删除之前由 vpc.tf
还有。
如果我转到 ~/aws/iam
并尝试 terraform plan
也尝试 iam.tf
,也会发生同样的情况。该计划显示将创建资源,但将删除 VPC 资源。
没有创建任何需要 VPC 资源的资源或更改 deleted/recreated/changed。
我不应该对这些文件使用相同的 workspace/backend 密钥吗?
所以,我认为问题在于我在每个 *.tf 文件中指的是同一个状态文件。为每个 *.tf 创建不同的文件似乎已经解决了这个问题。
如果这不是最佳做法,或者如果有一种方法可以写入一个状态文件,请告诉我。
当 terraform 运行s 时,它仅从当前目录中的所有 *.tf 文件创建它的依赖关系图。因此,当您在 aws/iam
目录中 运行 terraform apply
时,terraform 看不到您的 vpc.tf 文件。但是,当 Terraform 检查 s3 后端状态文件时,它会看到 vpc 资源;由于这些资源不在依赖图中,因此将它们标记为销毁。由于这种行为,通常的做法是为每个单独的目录使用不同的后端状态文件。这通过 "stacks" 或基础结构层将组件分开。
后端键的一个简单布局是为每个目录设置一个状态文件。即具有 aws/iam/terraform.tfstate
、aws/services/terraform.tfstate
和 aws/vpc/terraform.tfstate
的不同 s3 后端密钥。或者类似的效果。此设置将允许您的意图;能够在不影响 vpc 资源的情况下创建、修改、and/or 删除服务资源。
我目前有一个如下所示的 terraform 目录:
└── aws
├── iam
│ └── iam.tf
├── services
│ └── services.tf
└── vpc.tf
后端是 S3,我们正在使用工作区。我为每个 tf 配置使用相同的工作区和后端配置。
我正在执行的步骤:
terraform init
在 /aws 目录中。- Select 工作空间
terraform apply
vpc.tf
资源创建成功。- cd ~/aws/services
terraform init
和 select 相同的工作空间
当我为 ~/aws/services/services.tf
执行 terraform plan
时,计划显示将创建 services.tf
资源,但它将删除之前由 vpc.tf
还有。
如果我转到 ~/aws/iam
并尝试 terraform plan
也尝试 iam.tf
,也会发生同样的情况。该计划显示将创建资源,但将删除 VPC 资源。
没有创建任何需要 VPC 资源的资源或更改 deleted/recreated/changed。
我不应该对这些文件使用相同的 workspace/backend 密钥吗?
所以,我认为问题在于我在每个 *.tf 文件中指的是同一个状态文件。为每个 *.tf 创建不同的文件似乎已经解决了这个问题。
如果这不是最佳做法,或者如果有一种方法可以写入一个状态文件,请告诉我。
当 terraform 运行s 时,它仅从当前目录中的所有 *.tf 文件创建它的依赖关系图。因此,当您在 aws/iam
目录中 运行 terraform apply
时,terraform 看不到您的 vpc.tf 文件。但是,当 Terraform 检查 s3 后端状态文件时,它会看到 vpc 资源;由于这些资源不在依赖图中,因此将它们标记为销毁。由于这种行为,通常的做法是为每个单独的目录使用不同的后端状态文件。这通过 "stacks" 或基础结构层将组件分开。
后端键的一个简单布局是为每个目录设置一个状态文件。即具有 aws/iam/terraform.tfstate
、aws/services/terraform.tfstate
和 aws/vpc/terraform.tfstate
的不同 s3 后端密钥。或者类似的效果。此设置将允许您的意图;能够在不影响 vpc 资源的情况下创建、修改、and/or 删除服务资源。