身体:
我使用 Terraform 和 AWS S3 后端来管理我的基础设施。我有两个文件夹(
folder1
和 folder2
),我尝试在 folder2
中部署资源,同时保留在 folder1
中创建的资源。两个文件夹都配置为使用相同的 S3 后端(相同的存储桶和状态文件)。
但是,当我在
terraform apply
中运行 folder2
时,Terraform 会尝试销毁在 folder1
中创建的资源。我已验证这两个文件夹都指向同一个 S3 存储桶,并对状态文件使用相同的密钥。
以下是我遵循的步骤:
folder1
中创建了资源,成功创建了资源并将状态存储在S3存储桶中。folder2
具有相同的 S3 后端配置(相同的存储桶,状态文件的相同密钥)。terraform init
中运行 terraform apply
和 folder2
,期望 Terraform 部署新资源,而不删除 folder1
中的现有资源。folder1
地形表演 在folder2中,它显示了从folder1创建的所有资源。
我可以采取任何步骤来确保
folder2
中的 Terraform 识别共享状态的资源并且不会尝试销毁它们?
有关此问题的任何指导将不胜感激!
“两个文件夹都配置为使用相同的 S3 后端(相同的存储桶和状态文件)。”
您尝试做的事情是不可能的,这不是 Terraform 的工作原理。 Terraform 代码的每个“文件夹”都需要有一个单独的状态文件。 “文件夹 2”尝试删除“文件夹 1”创建的所有资源的原因是它正在读取状态文件并查看所有这些资源,但它无法在 Terraform 代码中找到任何这些资源的定义在“文件夹 2”内,因此它认为您从代码中删除了这些资源,这会触发它现在删除实际资源。
您需要将它们配置为使用不同的状态文件,或者使用 Terraform Workspaces 为每个文件夹使用不同的工作空间,这也会自动创建单独的状态文件。