我正在尝试为资源组中的VM创建一个NIC。我遇到的问题是我正在尝试引用Azure中另一个资源组的子网。因此,我必须使用ARM模板中的订阅级别部署来引用它。
"subnetref": "[concat(subscription().id, '/resourceGroups/', parameters('HUB Network RG'), '/providers/Microsoft.Network/virtualNetworks/', parameters('HUB VNet'), '/virtualNetworks/subnets', parameters('HUB DC Subnet'))]"
上面是我要创建的子网引用变量。然后,我在下面找到要创建的VM NIC。
{
"type": "Microsoft.Network/networkInterfaces",
"name": "[variables('nicnamedc1')]",
"location": "[variables('location')]",
"apiVersion": "2018-10-01",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"privateIPAllocationMethod": "Dynamic",
"subnet": {
"id": "[variables('subnetRef')]"
}
}
}
]
}
},
然后我得到以下错误。
New-AzDeployment:14:54:23-资源 Microsoft.Network/networkInterfaces'before-nic'失败并显示消息 '{“错误”:{ “ code”:“ InvalidRequestFormat”, “ message”:“无法解析请求。”, “细节”: [ { “ code”:“ InvalidJsonReferenceFormat”, “消息”:“参考ID / subscriptions / 404422c0-743d-4459-9db0-01892d0c7348 / resourceGroups / hu b-network-rg / providers / Microsoft.Network / virtualNetworks / bsrgh-hub-vnetvirtualNetworks / subnetsdomain 格式不正确。该ID应参考资源 类型为virtualNetworks / subnets。路径 properties.ipConfigurations [0] .properties.subnet。”
我认为它抱怨的是我在顶部使用subnetref变量的格式。有没有更好的方法可以做到这一点,或者我在某个地方出错了?
答案 0 :(得分:1)
您忘记了代码中的/
:
"subnetref": "[concat(subscription().id, '/resourceGroups/', parameters('HUB Network RG'), '/providers/Microsoft.Network/virtualNetworks/', parameters('HUB VNet'), '/virtualNetworks/subnets/', parameters('HUB DC Subnet'))]"
但是最好使用resourceId()
函数:
resourceId(parameters('HUB Network RG'), 'Microsoft.Network/virtualNetworks/subnets', parameters('HUB VNet'), parameters('HUB DC Subnet'))
它更短,更不容易出错