首页 > 解决方案 > 在 ARM 模板中的属性名称值中调用引用/部署函数

问题描述

我正在尝试在单个 ARM 模板中创建 Sql 服务器和 Sql 数据库,如下所示

Sql Server -- 使用链接模板方法和类型资源部署

Sql 数据库——用于创建依赖于链接模板名称的数据库的新资源部分。

下面是我的部分 ARM 模板脚本(仅限资源部分)

 "resources": [
{
  "name": "sqlServerDeployment",
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-06-01",
  "resourceGroup": "[resourceGroup().name]",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "[parameters('sqlserver_Templatepath')]",
      "contentVersion": "1.0.0.0"
    },
    "parametersLink": {
      "contentVersion": "1.0.0.0",
      "uri": "[parameters('sqlserver_parameters_Templatepath')]"
    }
  }
},
{
  "comments": "If Elastic Pool Name is defined, then curent database will be added to elastic pool.",
  "type": "Microsoft.Sql/servers/databases",
  "apiVersion": "2020-08-01-preview",
  "name": "[concat('SampleSqlServer1-Test','/', parameters('databasename')[copyIndex()])]",
  "location": "[parameters('location')]",
  "tags": "[parameters('tagsArray')]",
  "sku": {
    "name": "[parameters('skutier')]",
    "tier": "[parameters('skutier')]"
  },
  "properties": {
    "collation": "[parameters('collation')]",
    "sampleName": "[parameters('databasename')]",
    "zoneRedundant": "[parameters('zoneRedundant')]",
    "elasticPoolId": "[if(not(empty(parameters('elasticPoolName'))),reference(resourceId('Microsoft.Sql/servers/elasticpools',parameters('elasticPoolName')),'2014-04-01'),'')]"
  },
  "copy": {
    "name": "createDatabases",
    "count": "[length(parameters('databasename'))]"
  },
  "dependsOn": [ "sqlServerDeployment" ]
}
]

我的查询:

目前,我正在硬编码 Sql Server 名称(SampleSqlServer1-Test),我在 Sql 数据库资源部分的sqlserver_parameters_Templatepath中传递它。

       "name": "[concat('SampleSqlServer1-Test','/', parameters('databasename')[copyIndex()])]",

但是如何从该模板的上述参数模板/输出中自动获取相同的 Sql 服务器名称并将其放入 Sqldatabase 的 Name 属性值中?是否可以在属性“名称”值中调用引用函数。像下面的东西

       "name": "[concat(reference/resourceId(<output of sqlServerDeployment>).SQLSERVERNAME,'/', parameters('databasename')[copyIndex()])]",

是否可以使用属性及其参数调用部署函数?说 sqlservername 是链接模板参数文件中的参数名称。如下所示。

    "name": "[concat(deployment().properties.parameters.sqlservername,'/', parameters('databasename')[copyIndex()])]",

标签: azureazure-resource-managerarm-templateazure-template

解决方案


推荐阅读