簡體   English   中英

Terraform 銷毀使用 for_each 創建的資源

[英]Terraform destroying resources created with for_each

我是 Terraform 的新手,正在嘗試獲得一些經驗。 但是我一開始就遇到了一些問題。 我聲明了一些名稱的變量,這些名稱將在 Azure 和連接到 web 應用程序的數據庫中創建為 web 應用程序。 稍后在代碼中我正在運行 for_each 並創建資源。 我的問題是資源創建得很好,但是運行 terraform destroy 命令並沒有破壞它們。

同時在創建這些資源之后,如果我運行 Terraform 計划,我會收到巨大的錯誤消息,指出它無法聯系 Azure api。 如果我手動刪除 Azure 門戶中的這些資源,我不會出錯。

如果我運行 Terraform destroy -target azurerm_mysql_database.mladenl222 它是成功的,但資源沒有被破壞。

如果我使用 ARM 模板創建 Azure web 應用程序,則會出現同樣的問題。 我使用預定義的 ARM 模板創建 web 應用程序,並在 Terraform 代碼中傳遞一些參數。 一切正常,並且正在創建資源,但 Terraform 銷毀命令不會破壞它。 命令狀態成功,但沒有刪除任何內容。 下面是一些代碼示例。

variable "students_2025"{
    type = set(string)
    default = ["test222","test12345"]
}

resource "azurerm_mysql_database" "default" {
   for_each = var.students_2025 
  name                = "${each.key}"
  resource_group_name = azurerm_resource_group.RG_mok_2025.name
  server_name         = azurerm_mysql_server.wp-db-mok-2025.name
  charset             = "utf8"
  collation           = "utf8_unicode_ci"
}

我使用了以下和 terraform 應用和銷毀按預期工作:

variable "students_2025"{
    type = set(string)
    default = ["test222","test12345"]
}

resource "azurerm_resource_group" "test" {
  name     = "amgar-mysql-server"
  location = "West Europe"
}

resource "azurerm_mysql_server" "test" {
  name                = "amgar-sql-server"
  location            = "${azurerm_resource_group.test.location}"
  resource_group_name = "${azurerm_resource_group.test.name}"

  sku {
    name     = "B_Gen5_2"
    capacity = 2
    tier     = "Basic"
    family   = "Gen5"
  }

  storage_profile {
    storage_mb            = 5120
    backup_retention_days = 7
    geo_redundant_backup  = "Disabled"
  }

  administrator_login          = "mysqladminun"
  administrator_login_password = "H@Sh1CoR3!"
  version                      = "5.7"
  ssl_enforcement              = "Enabled"
}

resource "azurerm_mysql_database" "test" {
  for_each = var.students_2025
  name                = each.key
  resource_group_name = "${azurerm_resource_group.test.name}"
  server_name         = "${azurerm_mysql_server.test.name}"
  charset             = "utf8"
  collation           = "utf8_unicode_ci"
}

我正在使用最新的 terraform 版本 0.12.9

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM