Как ссылаться на подсети из другой виртуальной сети / группы ресурсов при создании NIC с использованием шаблонов ARM - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь создать сетевой адаптер для виртуальной машины в группе ресурсов.У меня проблема в том, что я пытаюсь сослаться на подсеть из другой группы ресурсов в Azure.Поэтому мне приходится ссылаться на него, используя развертывания на уровне подписки в шаблонах ARM.

"subnetref": "[concat(subscription().id, '/resourceGroups/', parameters('HUB Network RG'), '/providers/Microsoft.Network/virtualNetworks/', parameters('HUB VNet'), '/virtualNetworks/subnets', parameters('HUB DC Subnet'))]"

Выше указана переменная подсети ref, которую я пытаюсь создать.Затем у меня есть следующее для виртуальной сетевой карты, которую я пытаюсь создать.

{
    "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' завершился неудачно с сообщением '{"error": {"code": "InvalidRequestFormat", "message": "Не удалось проанализировать запрос.", "Details": [{"code":" InvalidJsonReferenceFormat "," message ":" Идентификатор ссылки / подписки / 404422c0-743d-4459-9db0-01892d0c7348 / resourceGroups / hu b-network-rg / provider / Microsoft.Network / virtualNetworks / bsrgh-hub-vnetvirtualNetworks / subnetsdomainнеправильно отформатирован. Идентификатор должен ссылаться на ресурсы типа virtualNetworks / subnets. Path properties.ipConfigurations [0] .properties.subnet. "

Я думаю, что он жалуется на формат, который ясделал переменную subnetref в верхней части.Есть ли лучший способ сделать это, или я где-то ошибаюсь?

1 Ответ

1 голос
/ 05 марта 2019

вы забыли / в вашем коде:

"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'))

она намного короче и менее подвержена ошибкам

...