![](/img/trans.png)
[英]How to use depends_on in terraform if resources are created using count or 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.