1

执行New-AzureRmResourceGroupDeployment命令时可以通过参数传递模板TemplateParameterObject参数。这对简单的属性和数组很有用,但我似乎无法让它用于引用。所以在 ARM 模板参数文件中看起来像这样:

"adminPassword": {
  "reference": {
    "keyVault": {
      "id": "/subscriptions/365d8c14-efa0-437e-a2c8-c3ffc8f6287a/resourceGroups/musw1-prf-jboyd-kv-rg/providers/Microsoft.KeyVault/vaults/musw1-prf-jboyd-kv"
    },
    "secretName": "adminPassword"
  }
}

我试过这个:

$parameters = @{
    adminPassword = @{
        reference = @{
            keyVault = @{
                id = $KeyVaultId
            }
            secretName = 'adminPassword'
        }
    }
}

New-AzureRmResourceGroupDeployment `
    -ResourceGroupName $ResourceGroupName `
    -TemplateFile $TemplateFile `
    -TemplateParameterObject $parameters

但我得到的只是:

部署模板验证失败:“在“13”行和“27”列为模板参数“adminPassword”提供的值无效。”。

4

2 回答 2

1

目前,ARM 模板参数中的 Key Vault 引用似乎仅通过参数文件而不是参数对象受支持:有关 Microsoft 提出的问题,请参见此处

虽然它不像-TemplateParameterObject使用New-AzureRmResourceGroupDeployment. 通过这样做,您可以继续间接引用 Key Vault 机密,而无需将其存储在本地或以任何方式将其公开为明文。

于 2017-06-23T00:06:41.457 回答
0

在 PowerShell 中不使用TemplateParameterObject参数的另一种解决方法是添加嵌套模板并传入包含对动态生成的 Azure Key Vault 资源 ID 的引用的参数。

于 2020-11-05T16:46:18.050 回答