首页 > 解决方案 > ARM 模板 - 解释参数部分下的“参考:{}”属性

问题描述

我见过这样的例子:

....
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
  "keyVaultSecretValue": {
    "reference": { <===========  Reference property
      "keyVault": {
        "id": "...."
      },
      "secretName": "...."
    }
  }
},
....

我找不到有关此reference属性可能用途的任何文档。

我可以将它用于例如:引用链接模板的输出变量吗?

像这样:

[reference('sqlServerLinkedTemplate').outputs.connectionString.value]

还是其他类型的参考?

标签: azure-resource-managerarm-template

解决方案


在顶部的示例中,reference指的是要向其中添加机密的 Key Vault。此处显示了一个示例:

{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
    "adminLogin": {
        "value": "exampleadmin"
    },
    "adminPassword": {
        "reference": {
        "keyVault": {
        "id": "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<vault-name>"
        },
        "secretName": "ExamplePassword"
        }
    },
    "sqlServerName": {
        "value": "<your-server-name>"
    }
}
}

将模板链接在一起是通过将模板嵌套在一起或将它们链接在一起来完成的。该文档对此有很好的信息。

链接模板的示例如下所示:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {},
    "resources": [
    {
        "type": "Microsoft.Resources/deployments",
        "apiVersion": "2019-10-01",
        "name": "linkedTemplate",
        "properties": {
        "mode": "Incremental",
        "templateLink": {
            "uri":"https://mystorageaccount.blob.core.windows.net/AzureTemplates/newStorageAccount.json",
            "contentVersion":"1.0.0.0"
        }
        }
    }
    ],
    "outputs": {
    }
}

推荐阅读