ARM:解决方案模板:多个 VM:如何在不对 IP 进行硬编码的情况下配置后端地址数组的内容



我试图在通常的地方进行RTFM,但101-application-gateway中没有一个示例表现出这种模式。 我有一个部署 N 个 VM 的解决方案模板 ARM 模板。 我需要使用引用这 N 个 VM 的BackendAddresses预配和配置 Azure 应用程序网关。 我熟悉copycopyIndex()模式,但我看不到如何在这里应用它。 这些示例具有如下代码:

"backendAddressPools": [
{
"name": "appGatewayBackendPool",
"properties": {
"BackendAddresses": [
{
"IpAddress": "[parameters('backendIpAddress1')]"
},
{
"IpAddress": "[parameters('backendIpAddress2')]"
}
]
}
}
],

但我想做这样的事情:

"backendAddressPools": [
{
"name": "appGatewayBackendPool",
"properties": {
"BackendAddresses": [
{
"IpAddress": "[concat(variables('managedVMPrefix'), copyIndex(),variables('nicName'))]"
}
]
}
}
],

我确定这行不通,因为我需要在BackendAddressess数组中有 N 个条目。

任何想法如何做到这一点?

谢谢

艾德

在查看了复制工具的参考文档后,我意识到这是正确的语法:

"backendAddressPools": [
{
"name": "appGatewayBackendPool",
"properties": {
"copy": [{
"name": "BackendAddresses",
"count": "[parameters('numberOfInstances')]",
"input": {
"IpAddress": "[reference(concat(variables('managedVMPrefix'), copyIndex('BackendAddresses', 1), variables('publicIPAddressName'))).properties.ipAddress]"
}
}]
}
}
]

给定NumberOfInstances是 3 并且reference(concat(variables('managedVMPrefix'), copyIndex('BackendAddresses'), variables('nicName')))解析为mspVM1publicIpmspVM2publicIpmspVM1publicIp,它本身通过reference()函数传递以产生10.0.1.1010.0.1.1110.0.1.12,这会产生以下输出:

"backendAddressPools": [
{
"name": "appGatewayBackendPool",
"properties": {
"BackendAddresses": [
{
"IpAddress": "[10.0.1.10]"
},
{
"IpAddress": "[10.0.1.11]"
},
{
"IpAddress": "[10.0.1.12]"
}
]
}
}

我必须说,我认为 ARM 模板语法非常难以使用、理解和维护,但随着经验的积累,它可能会变得更容易。

相关内容

  • 没有找到相关文章

最新更新