如何替换ARM模板中IP地址的最后一个八位字节
How to replace the last octet of IP address in ARM template
我正在尝试在 ARM 模板中传递带有 IP 地址前缀(例如 10.0.0.0/24)的参数以部署 VNET
在 ARM 模板中,我想用 10.0.0.123 替换 10.0.0.0/24 并将其分配给一个 NIC,稍后我想用它来创建 VM。
我希望有什么方法可以使用 ARM 模板实现这一点?
您可以使用 "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地址的例子template,请参考。
好吧,没有什么好的方法可以做到这一点,最简单的方法是:
"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')]"
我就是这样做的
"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))]"
或类似的方式。
我正在尝试在 ARM 模板中传递带有 IP 地址前缀(例如 10.0.0.0/24)的参数以部署 VNET
在 ARM 模板中,我想用 10.0.0.123 替换 10.0.0.0/24 并将其分配给一个 NIC,稍后我想用它来创建 VM。
我希望有什么方法可以使用 ARM 模板实现这一点?
您可以使用 "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地址的例子template,请参考。
好吧,没有什么好的方法可以做到这一点,最简单的方法是:
"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')]"
我就是这样做的
"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))]"
或类似的方式。