我正在尝试在 ARM 模板中传递带有 IP 地址前缀(例如 10.0.0.0/24)的参数以部署 VNET
在 ARM 模板中,我想将 10.0.0.0/24 替换为 10.0.0.123 并将其分配给我想稍后用于创建 VM 的 NIC。
我希望有什么方法可以使用 ARM 模板来实现这一点?
我正在尝试在 ARM 模板中传递带有 IP 地址前缀(例如 10.0.0.0/24)的参数以部署 VNET
在 ARM 模板中,我想将 10.0.0.0/24 替换为 10.0.0.123 并将其分配给我想稍后用于创建 VM 的 NIC。
我希望有什么方法可以使用 ARM 模板来实现这一点?
好吧,没有漂亮的方法可以做到这一点,最简单的方法是:
"var1": "[first(split(parameters('addressPrefix'), '/'))]",
"var2": "[substring(variables('var1'), 0, sub(length(variables('var1'), 1)))]"
"var3": "[concat(variables('var2'), 'ipgoeshere')]"
或者,您可以只删除最后 4 个字符并连接 IP 地址,或者将部分拆分并连接成一个 IP 地址:
"var1": "[first(split(parameters('addressPrefix'), '/'))]",
"var2": "[concat(variables('var1')[0], '.', variables('var1')[1], '.', variables('var1')[2], '.ipgoeshere')]"
您可以使用"privateIPAllocationMethod": "Static"
和指定私有 IP 地址,如下所示:
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Static",
"privateIPAddress": "[parameters('privateIPAddress')]",
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses',parameters('publicIPAddressName'))]"
},
"subnet": {
"id": "[parameters('subnetRef')]"
}
}
}
]
这里有一个关于静态私有IP地址的示例模板,请参考。
我正在这样做
"variables" : {
"subnetAddress" : "[first(split(parameters('subnetAddressWithMask'), '/'))]",
"subnetOctets3" : "[take(split(variables('subnetAddress'), '.'), 3)]",
"subnetNetwork" : "[concat(variables('subnetOctets3')[0], '.', variables('subnetOctets3')[1], '.', variables('subnetOctets3')[2])]"
},
"outputs": {
"subnetAddress" : {
"type": "string",
"value" : "[variables('subnetAddress')]"
},
"subnetOctets3" :
{
"type": "array",
"value" : "[variables('subnetOctets3')]"
}
,
"subnetNetwork" : {
"type" : "string",
"value" : "[variables('subnetNetwork')]"
}
带输出
"Outputs": {
"deploymentAppGw": {
"Type": "Object",
"Value": {
"subnetAddress": {
"type": "String",
"value": "10.0.0.0"
},
"subnetOctets3": {
"type": "Array",
"value": [
"10",
"0",
"0"
]
},
"subnetNetwork": {
"type": "String",
"value": "10.0.0"
}
}
}
},
后来我以这种方式使用它:"[concat(variables('subnetNetwork'), '.', copyIndex(10))]"
或以类似的方式。