Terraform 资源不会被终端销毁

Terraform 资源不会被终端销毁

我想DEV从托管在 AWS EKS 上的 Kubernetes 中销毁环境。资源分为两部分:基础设施部分和应用程序部分。我使用Terraform/Terragrunt部署/销毁基础设施,helm使用 / 部署/销毁应用程序。有多个 Pod 正在运行,我可以通过运行 来销毁版本helm uninstall <release-name>。但是,在销毁基础设施时,我遇到了错误。以下是我所做的:

为了销毁基础设施,我运行了:ENV=DEV make destroy。对于此命令,它返回以下内容:

cd infra/DEV && terragrunt destroy

Remote state S3 bucket aib-iac-tf-state does not exist or you don't have permissions to access it. Would you like Terragrunt to create it? (y/n)

为此,我尝试了两者yn但它返回此错误:

make: *** [Makefile:30: destroy] Error 1

假设我的访问权限被 root 用户更改,以在 内创建/删除资源S3 Bucket,但我发现事实并非如此。S3 Bucket aib-iac-tf-state存储中确实存在 。

然后我根据错误信息检查了*Makefile*第 30 行。第 29 行和第 30 行的内容如下:

destroy:
    cd ${INFRA_DIR}/${ENV} && terragrunt destroy ${TF_VARS}

我仍然无法销毁资源。如能得到任何帮助我将不胜感激。

答案1

Terraform 的错误提示是远程状态存储桶不存在,因此无法读取远程状态以了解要销毁的内容。这听起来像是您通过 Make 使用的包装器中的配置错误。

如果可以的话,请检查.tf文件中是否存在如下块:

terraform {
  backend "s3" {
    bucket = "mybucket"
    key    = "path/to/my/key"
    region = "us-east-1"
  }
}

并确保存储桶具有正确的名称。您可能需要与您的 AWS 账户进行比较,以找到保存正确数据的存储桶。

如果您找不到类似的东西 - 请在本地工作区中检查文件.tfstate,然后删除该backend块,以便它使用本地状态文件而不是远程后端。年龄变化率- 您可能想要找一位具有 Terraform 技能的同事并让他们看看!

TL;DR - 对我来说这听起来有点像包装器中的错误,或者某些东西被无序删除了。

相关内容