首页 > 解决方案 > azurerm_resource_group_template_deployment 创建的资源未检测到差异

问题描述

Terraform v0.14.7
 + provider registry.terraform.io/hashicorp/azurerm v2.44.0

我遇到了通过 azurerm_resource_group_template_deployment 创建的资源的问题。我有一些带有虚拟路径的 Web 应用程序,这些虚拟路径是由 azurerm_resource_group_template_deployment 创建的。如果我转到 Azure 门户并删除 Web 应用程序,然后运行 ​​terraform apply 以重新创建这些资源,则 Web 应用程序创建得很好,但虚拟路径不是。Terraform 似乎没有检测到这些缺失的虚拟路径。我已经在 Github 上提交了一个问题,但维护人员已将其标记为问题,所以我不确定我是否会在那里得到回复。

以前有没有其他人注意到这个问题?我认为 Terraform 将能够检测差异并应用缺失的内容。如果我将这些资源标记为受污染,Terraform 甚至无法销毁它们。我收到此错误:

Error: removing items provisioned by this Template Deployment: deleting Nested Resource "/subscriptions/000-000-000-000/resourceGroups/rg/providers/Microsoft.Web/sites/api/slots/staging/config/web": pollingTrackerBase#updateRawBody: failed to unmarshal response body: StatusCode=0 -- Original Error: invalid character '<' looking for beginning of value

这是地形配置

resource "azurerm_resource_group_template_deployment" "api_virtual_directory" {
  name                = "api_virtual_directory"
  resource_group_name = azurerm_resource_group.digital.name
  deployment_mode     = "Incremental"
  template_content    = <<TEMPLATE
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "webAppName": {
        "type": "String",
        "defaultValue": "${module.webapp["api"].name}"
    },
    "virtualApplications":{
      "type": "Array",
      "defaultValue":[
        {
        "virtualPath": "/",
        "physicalPath": "site\\wwwroot",
        "preloadEnabled": false,
        "virtualDirectories": null
        },
        {
        "virtualPath": "/app1",
        "physicalPath": "site\\wwwroot\\app1",
        "preloadEnabled": false,
        "virtualDirectories": null
        },
        {
        "virtualPath": "/app2",
        "physicalPath": "site\\wwwroot\\app2",
        "preloadEnabled": false,
        "virtualDirectories": null
        }
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Web/sites/config",
      "name": "[concat(parameters('webAppName'), '/web')]",
      "apiVersion": "2020-06-01",
      "properties": {
          "virtualApplications": "[parameters('virtualApplications')]"
      }
    }
  ]
}
TEMPLATE
  depends_on          = [module.webapp["api"]]
}

标签: terraformterraform-provider-azure

解决方案


推荐阅读