【发布时间】:2021-06-01 17:00:21
【问题描述】:
我有一个使用 ARM 模板部署的 VMSS。这是 VMSS 资源部分下的 networkProfile 块。
"networkProfile": {
"networkInterfaceConfigurations": [
{
"name": "[variables('nicName')]",
"properties": {
"primary": true,
"ipConfigurations": [
{
"name": "[concat(variables('VMSSName'), '-ipconfig')]",
"properties": {
"subnet": {
"id": "[variables('subnetRef')]"
},
"applicationGatewayBackendAddressPools": "[variables('AppGatewayBackendAddressPool')]"
}
}
]
}
}
]
},
在变量部分,如果我使用resourceId() 函数并提供参数值,则它不会应用 VMSS 中的配置。例如:
"AppGatewayBackendAddressPool": "[resourceId(parameters('VirtualNetworkResourceGroup'),'Microsoft.Network/applicationGateways/backendAddressPools', parameters('ApplicationGatewayName'), parameters('BackendAddressPool'))]",
我也试过添加parameters('SubscriptionName'),但结果是一样的。
"AppGatewayBackendAddressPool": "[resourceId(parameters('SubscriptionName') ,parameters('VirtualNetworkResourceGroup'),'Microsoft.Network/applicationGateways/backendAddressPools', parameters('ApplicationGatewayName'), parameters('BackendAddressPool'))]",
当我像下面这样声明变量时,它会在 Networking -> Load Balancing 中应用 backendAddressPool 配置。
"AppGatewayBackendAddressPool": [
{ "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Network/applicationGateways/<applicationGatewayName>/backendAddressPools/<backendAddressPool>" }
],
我正在与subnetRef 类似,如下所示,效果很好。
"subnetRef": "[resourceId(parameters('VirtualNetworkResourceGroup'), 'Microsoft.Network/virtualNetworks/subnets', parameters('VirtualNetworkName'), parameters('SubnetName'))]",
我想通过定义单独的 parameters.json 文件来参数化部署,以便我可以将 applicationGatewayBackendAddressPools 附加到不同的虚拟机规模集。
【问题讨论】:
-
你不是缺少变量的连接吗?
-
是的@KedMardemootoo 这是我在资源部分缺少的 concat 函数。我已经发布了完整的解决方法作为答案。
标签: azure azure-application-gateway azure-vm-scale-set