首页 > 解决方案 > 用于使用新的 VNet 集成功能配置应用服务的 ARM 模板?

问题描述

我正在处理 ARM 模板,我已经创建了包含两个或更多天蓝色应用程序服务以及应用程序服务计划的模板文件,然后配置了每个应用程序服务的 VNET 集成。

这是示例 JSON 代码:

    {
  "comments": "Web-App-01",
  "name": "[variables('app_name_01')]",
  "type": "Microsoft.Web/sites",
  "location": "[variables('location')]",
  "apiVersion": "2016-08-01",
  "dependsOn": [
    "[resourceId('Microsoft.Web/serverfarms', variables('asp_name_01'))]"
  ],
  "tags": {
    "displayName": "[variables('app_name_01')]"
  },
  "properties": {
    "name": "[variables('app_name_01')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('asp_name_01'))]",
    "siteConfig": {
      "alwaysOn": true
    }
  },
    "resources": [
      {
        "type": "Microsoft.Web/sites/virtualNetworkConnections",
        "name": "[concat(variables('app_name_01'), '/', variables('vnet_connection_name'),uniqueString('asdsdaxsdsd'))]",
        "apiVersion": "2016-08-01",
        "location": "[variables('location')]",
        "properties": {
          "vnetResourceId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vm_vnet_name'), variables('web_subnet_name'))]"
        },
        "dependsOn": [
          "[resourceId('Microsoft.Web/sites', variables('app_name_01'))]",
          "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vm_vnet_name'), variables('web_subnet_name'))]"
        ]
      }
    ]
},
{
  "comments": "Web-App-02",
  "name": "[variables('app_name_02')]",
  "type": "Microsoft.Web/sites",
  "location": "[variables('location')]",
  "apiVersion": "2016-08-01",
  "dependsOn": [
    "[resourceId('Microsoft.Web/serverfarms', variables('asp_name_02'))]"
  ],
  "tags": {
    "displayName": "[variables('app_name_02')]"
  },
  "properties": {
    "name": "[variables('app_name_02')]",
    "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('asp_name_01'))]",
    "siteConfig": {
      "alwaysOn": true
    }
  },
    "resources": [
      {
        "type": "Microsoft.Web/sites/virtualNetworkConnections",
        "name": "[concat(variables('app_name_02'), '/', variables('vnet_connection_name'),uniqueString('asdsdaxsdsd'))]",
        "apiVersion": "2016-08-01",
        "location": "[variables('location')]",
        "properties": {
          "vnetResourceId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vm_vnet_name'), variables('web_subnet_name'))]"
        },
        "dependsOn": [
          "[resourceId('Microsoft.Web/sites', variables('app_name_02'))]",
          "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vm_vnet_name'), variables('web_subnet_name'))]"
        ]
      }
    ]
}

上面的代码适用于少数 azure 应用程序服务,但对于其余应用程序服务,我在 Azure 应用程序服务的 VNET 集成期间收到内部服务器错误或冲突或错误请求。

注意:当我部署上面的 JSON 代码时,配置了旧的 VNET 集成而不是新的 VNET(预览)功能。因此,我需要为每个应用服务配置新的 VNET(预览)功能。

那么,任何人都可以建议我如何解决上述问题。

标签: azureazure-web-app-serviceazure-virtual-networkarm-template

解决方案


我在 Azure Docs GitHub 帖子中找到了一个工作示例:

我们如何将新的 vnet 集成与 ARM 模板集成?

似乎与新的 VNet 集成以不同的方式工作,它使用Microsoft.Web/sites/config名为的子资源virtualNetwork而不是Microsoft.Web/sites/virtualNetworkConnections子资源

以及需要在目标子网/vnet 上设置的一些要求(在链接中描述)。集成部分看起来像这样:

   {
      "apiVersion": "2018-02-01",
      "type": "Microsoft.Web/sites",
      "name": "[parameters('appName')]",
      "location": "[resourceGroup().location]",

...

      "resources": [
        {
          "name": "virtualNetwork",
          "type": "config",
          "apiVersion": "2018-02-01",
          "location": "[resourceGroup().location]",
          "properties": {
            "subnetResourceid": "[parameters('subnetResourceId')]",
            "swiftSupported": true
          },
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', parameters('appName'))]"
          ]
        }
      ]
   },

"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/networkConfig/virtualNetwork"除此之外,除了定义了端点的 azure-rest-api-specs 中对它的引用之外,我还没有发现太多其他文档:

azure-rest-api-specs / WebApps.json

似乎(正如规范所建议的那样)替换"type": "config""type": "networkConfig"也有效。


推荐阅读