部署 ARM 模板时如何在 TemplateParameterObject 参数中传递引用
How can I pass a reference in the TemplateParameterObject parameter when deploying an ARMtemplate
执行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
但我得到的只是:
Deployment template validation failed: 'The provided value for the template parameter 'adminPassword' at line '13' and column '27' is not valid.'.
目前,ARM 模板参数中的 Key Vault 引用似乎仅通过参数文件支持,而不通过参数对象支持:See here for the issue that's been raised with Microsoft
虽然它不像使用 -TemplateParameterObject
那样友好,但一种变通方法可以让您在不暴露您的 Key Vault 机密的情况下编写脚本,以编程方式创建和填充您的 JSON 模板文件,方法是通过PowerShell,然后将其传递给 New-AzureRmResourceGroupDeployment
。通过这样做,您可以继续间接引用 Key Vault 机密,而无需将其存储在本地或以任何方式将其公开为明文。
在 PowerShell 中不使用 TemplateParameterObject
参数的另一种解决方法是添加嵌套模板并传入包含 reference to the dynamically generated Azure Key Vault resource ID.
的参数
执行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
但我得到的只是:
Deployment template validation failed: 'The provided value for the template parameter 'adminPassword' at line '13' and column '27' is not valid.'.
目前,ARM 模板参数中的 Key Vault 引用似乎仅通过参数文件支持,而不通过参数对象支持:See here for the issue that's been raised with Microsoft
虽然它不像使用 -TemplateParameterObject
那样友好,但一种变通方法可以让您在不暴露您的 Key Vault 机密的情况下编写脚本,以编程方式创建和填充您的 JSON 模板文件,方法是通过PowerShell,然后将其传递给 New-AzureRmResourceGroupDeployment
。通过这样做,您可以继续间接引用 Key Vault 机密,而无需将其存储在本地或以任何方式将其公开为明文。
在 PowerShell 中不使用 TemplateParameterObject
参数的另一种解决方法是添加嵌套模板并传入包含 reference to the dynamically generated Azure Key Vault resource ID.