Azure Проблема с ресурсом шаблона ARM для вложенных развертываний на уровне подписки - PullRequest
1 голос
/ 11 января 2020

Я работаю над шаблоном ARM до

A. развернуть группу ресурсов B. развернуть ASE env.

Для того, чтобы сделать оба, насколько я понимаю, мне нужно запустить развертывание на уровне подписки области действия New-AzDeployment -Name TestingASE -TemplateFile $HOME/azuredeploy.json -TemplateParameterFile $HOME/parameters.json -Location 'West Europe'

Мой шаблон уже довольно длинный - так что вот самые важные части (я думаю).

{
    "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
    "contentVersion": "1.0.0.1",
    "parameters": {
....
"resources": [
        // Resource Group
        {
            "type": "Microsoft.Resources/resourceGroups",
            "apiVersion": "2018-05-01",
            "location": "[parameters('Location')]",
            "name": "[parameters('rgName')]",
            "properties": {}
        },
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-05-01",
            "name": "storageDeployment",
            "resourceGroup": "[parameters('rgName')]",
            "dependsOn": [
                "[resourceId('Microsoft.Resources/resourceGroups/', parameters('rgName'))]"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "variables": {},
                    "resources": [
....
{
                            "apiVersion": "2019-04-01",
                            "name": "[parameters('asevnetname')]",
                            "type": "Microsoft.Network/virtualNetworks",
                            "location": "[parameters('Location')]",
                            "properties": {
                                "addressSpace": {
                                    "addressPrefixes": [
                                        "[parameters('addressPrefix')]"
                                    ]
                                },
                                "subnets": [
                                    {
                                        "name": "[parameters('subnetName')]",
...
{
                            "apiVersion": "2019-02-01",
                            "type": "Microsoft.Web/hostingEnvironments",
                            "name": "[parameters('aseName')]",
                            "kind": "ASEV2",
                            "location": "[parameters('Location')]",
                            "properties": {
                                "name": "[parameters('aseName')]",
                                "location": "[parameters('Location')]",
                                "InternalLoadBalancingMode": "[parameters('ilbMode')]",
                                "virtualNetwork": {
                                    "Id": "[resourceId(subscription().id, resourceGroup().Id, 'Microsoft.Network/virtualNetworks/subnets',parameters('asevnetname'),parameters('subnetName'))]"
                                }
....

Это дает мне вывод "Функция шаблона RESOURCEGROUP" не ожидается в этом месте "Пока насколько я понимаю, я следую рекомендациям https://docs.microsoft.com/en-gb/azure/azure-resource-manager/templates/template-functions-resource#resourcegroup

Функцию resourceGroup () нельзя использовать в шаблоне, развернутом на уровне подписки. Его можно использовать только в шаблонах, развернутых в группе ресурсов. Вы можете использовать функцию resourceGroup () в связанном или вложенном шаблоне (с внутренней областью действия), который предназначен для группы ресурсов, даже если родительский шаблон развернут в подписке. В этом случае связанный или вложенный шаблон развертывается на уровне группы ресурсов.

Спасибо за помощь в этом.

1 Ответ

0 голосов
/ 15 января 2020

Ошибка произошла в формате resourceId , это должно быть

resourceId([subscriptionId], [resourceGroupName], resourceType, resourceName1, [resourceName2], ...)

Чтобы получить идентификатор ресурса для ресурса в той же подписке, но в другой группе ресурсов, укажите имя группы ресурсов.

"[resourceId('otherResourceGroup', 'Microsoft.Storage/storageAccounts', 'examplestorage')]"

Таким образом, в этом случае идентификатор virtualNetwork в свойствах Microsoft.Web/hostingEnvironments должен быть

"virtualNetwork": {
 "Id": "[resourceId(parameters('rgName'), 'Microsoft.Network/virtualNetworks/subnets',parameters('asevnetname'),parameters('subnetName'))]"
}

или

"Id": "[resourceId(resourceGroup().name, 'Microsoft.Network/virtualNetworks/subnets',parameters('asevnetname'),parameters('subnetName'))]"

Для получения дополнительной информации вы можете получить больше ссылок на развертывание ASE в пределах su bnet из этого шаблона .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...