Azure Terraform正在摧毁为每个人创建的资源
我是新的地形和实验,以获得一些经验。但一开始我遇到了一些问题。我用一些名称声明变量,这些名称将被创建为Azure中的web应用以及连接到同名web应用的数据库。在后面的代码中,我将为每个_运行并创建资源。我的问题是,资源被创建得很好,但运行terraform destroy命令并没有破坏它们 在创建这些资源的同时,如果我运行Terraform plan,我会收到一条巨大的错误消息,说明它无法联系Azure api。如果我在Azure portal中手动删除这些资源,则不会出现错误 如果我运行Terraform destroy-target azurerm_mysql_database.mladenl222,它会成功,但资源不会被销毁 如果我使用ARM模板创建Azure web应用程序,也会出现同样的问题。我使用预定义的ARM模板创建web应用程序,并在Terraform代码中传递一些参数。所有工作正常,资源正在被创建,但它并没有被Terraform destroy命令破坏。命令状态为成功,但未删除任何内容。下面是一些代码示例Azure Terraform正在摧毁为每个人创建的资源,azure,arm,terraform,Azure,Arm,Terraform,我是新的地形和实验,以获得一些经验。但一开始我遇到了一些问题。我用一些名称声明变量,这些名称将被创建为Azure中的web应用以及连接到同名web应用的数据库。在后面的代码中,我将为每个_运行并创建资源。我的问题是,资源被创建得很好,但运行terraform destroy命令并没有破坏它们 在创建这些资源的同时,如果我运行Terraform plan,我会收到一条巨大的错误消息,说明它无法联系Azure api。如果我在Azure portal中手动删除这些资源,则不会出现错误 如果我运行Te
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 apply and destroy正在按预期工作:
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
希望这有帮助 我不确定foreach的问题,但是对于模板,它是预期的。terraform对你的模板一无所知。因此,它将无法删除模板创建的资源。如果从命令行中删除
-target
选项,Terraform是否会按预期销毁对象?-target
选项仅用于特殊情况,不用于日常使用,并为地形的行为增加了相当多的额外复杂性。您应该能够在大多数情况下运行所有Terraform命令,而无需-target
。您好,谢谢您的回答。如果我只是尝试运行terraform destroy,我会得到如下所示的错误消息。对于由for_创建的每个资源都相同。如果运行terraform apply,将显示相同的错误消息。我需要手动删除azure portal中的这些资源,以便能够在其他资源上运行计划或应用。对AzureRM应用程序服务源代码管理“mladenl222”发出读取请求时出错:web.AppsClient#GetSourceControl:响应请求失败:StatusCode=400