Terraform 資源不會從終端被銷毀

Terraform 資源不會從終端被銷毀

我想銷毀DEVAWS 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區塊,以便它使用本機狀態文件而不是遠端後端。青年MMV- 您可能想找一位具有 Terraform 技能的同事並讓他們來看看!

TL;DR - 對我來說聽起來有點像包裝器中的錯誤,或者某些內容被亂序刪除。

相關內容