首页 > 解决方案 > 资源组范围内的部署不允许使用 location 属性

问题描述

我创建了链接的 ARM 模板并尝试部署,但出现以下错误。

我正在使用链接模板部署 Sql Server 和服务器数据库。单个 ARM(Sql Server 和 sql 数据库工作正常)。

错误:无效部署;Message=资源组范围内的部署不允许使用“位置”属性。有关使用详情,请参阅https://aka.ms/deploy-to-subscription

如果我删除位置并尝试部署,我会遇到错误。

此定义需要 location 属性

我的错误是在 Schema 版本还是 api 版本中?

New-AzResourceGroupDeployment -Name "ARMLinkedDeployment" -ResourceGroupName "Test-POC-RG" -TemplateFile ".......\MainTemplates\SqlApp\azuredeploy.json" -TemplateParameterFile ".....\MainTemplates\SqlApp\parameters.json"

参数.json

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "sqlserver_linkedTemplatepath": {
        "value": "https://stvirtuosotest.blob.core.windows.net/armlinkedtemplates/azuredeploysql.json"
    },
    "sqldb_linkedTemplatepath": {
        "value": "https://stvirtuosotest.blob.core.windows.net/armlinkedtemplates/azuredeploysqldb.json"
    },
    "sqlserver_parameters_linkedTemplatepath": {
        "value": "https://stvirtuosotest.blob.core.windows.net/armlinkedtemplates/azuredeploy.sqlparameters.json"
    },
    "sqldb_parameters_linkedTemplatepath": {
        "value": "https://stvirtuosotest.blob.core.windows.net/armlinkedtemplates/azuredeploy.sqldbparameters.json"
    }
}
}

azuredeploy.json 文件

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "sqlserver_linkedTemplatepath": {
        "type": "string",
        "metadata": {
            "description": "The sql server arm template json file path from storage account.."
        }
    },
    "sqldb_linkedTemplatepath": {
        "type": "string",
        "metadata": {
            "description": "The sql database deploy arm template json file path from storage account."
        }
    },
    "sqldb_parameters_linkedTemplatepath": {
        "type": "string",
        "metadata": {
            "description": "The sql database arm parameters file json file path from storage account."
        }
    },
    "sqlserver_parameters_linkedTemplatepath": {
        "type": "string",
        "metadata": {
            "description": "The sql server arm parameters json file path from storage account."
        }
    }
},

"resources": [
    {
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2020-06-01",
        "name": "sqlDbDeployment",
        "resourceGroup": "[resourceGroup().name]",
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[parameters('sqldb_linkedTemplatepath')]",
                "contentVersion": "1.0.0.0"
            },
            "parametersLink": {
                "contentVersion": "1.0.0.0",
                "uri": "[parameters('sqldb_parameters_linkedTemplatepath')]"
            }
        },
        "dependsOn": [
            "sqlServerDeployment"
        ]
    },
    {
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2020-06-01",
        "name": "sqlServerDeployment",
        "resourceGroup": "[resourceGroup().name]",
        "properties": {
            "mode": "Incremental",
            "templateLink": {
                "uri": "[parameters('sqlserver_linkedTemplatepath')]",
                "contentVersion": "1.0.0.0"
            },
            "parametersLink": {
                "contentVersion": "1.0.0.0",
                "uri": "[parameters('sqlserver_parameters_linkedTemplatepath')]"
            }
        }
    }

],
"outputs": {
    "sqldbresourceid": {
        "type": "object",
        "value": "[reference('sqlDbDeployment').outputs.resourceGroup.resourceId]"
    },
    "sqlserverresourceid": {
        "type": "object",
        "value": "[reference('sqlServerDeployment').outputs.resourceGroup.resourceId]"
    }
}
}

标签: azurearmazure-sql-databaseazure-resource-managerarm-template

解决方案


这是我解决相同问题的方法。

参数.json 文件

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "value": "eastus2"
        }
    }
}

azuredeploy.json 文件

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "type": "string"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2021-04-01",
            "name": "deployment1",
            "resourceGroup": "[resourceGroup().name]",
            "properties": {
                "mode": "Incremental",
                "templateLink": {
                    "relativePath": "templates/template.json"
                },
                "parameters": {
                    "location": {
                        "value" : "[parameters('location')]"
                    }
                }
            }
        }
    ]
}

因此可以根据需要从 template.json 使用该位置。

参考:https ://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-test-cases#location-uses-parameter


推荐阅读