繁体   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