azure - 用于使用新的 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(预览)功能。
那么,任何人都可以建议我如何解决上述问题。
解决方案
我在 Azure Docs GitHub 帖子中找到了一个工作示例:
似乎与新的 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"
也有效。
推荐阅读
- android - 如何使视图从昏暗的背景中可见
- ios - 在匹配正则表达式时获取单个元素
- c# - 如何修复控制台应用程序异常“System.Drawing.dll 中的‘System.ArgumentException’”
- android - BasicNetwork.performRequest:意外响应代码 413
- cassandra-3.0 - 如何为 Cassandra 中的角色提供“仅插入”权限?
- python - 迭代相同长度行文件的每个字符串的索引,同时从各个索引中生成每个值的新字符串
- node.js - 如何知道客户端已连接 Eventhub
- linux - 检查进程是否已经死亡
- javascript - 跟踪已选中的 CheckBox
- java - Hadoop:MapReduce MinMax 结果与原始数据集不同