我在azurecr.io中有一个容器实例的模板,可以在ARM模板中使用Azure Key Vault密钥吗?以下示例不起作用:
"imageRegistryCredentials": [
{
"server": "***.azurecr.io",
"username": "***",
"password": {
"reference": {
"keyVault": {
"id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
},
"secretName": "[parameters('secretName')]"
}
}
}
],我已经尝试过了:
"resources": [
{
...
"properties": {
"parameters":{
"secretPassword": {
"type": "securestring",
"reference": {
"keyVault": {
"id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
},
"secretName": "[parameters('secretName')]"
}
}
},和:
"imageRegistryCredentials": [
{
"server": "**.azurecr.io",
"username": "**",
"password": "[parameters('secretPassword')]"
}
],结果:
"error": {
"code": "InvalidTemplate",
"message": "Unable to process template language expressions for resource '/subscriptions/**/resourceGroups/**/providers/Microsoft.ContainerInstance/containerGroups/**' at line '28' and co
lumn '9'. 'The template parameter 'secretPassword' is not found. Please see https://aka.ms/arm-template/#parameters for
usage details.'"
}
}'发布于 2019-05-29 19:10:33
因此,我已经创建了一个变通方法,它使您能够通过使用github上的公开模板来相对简单地在模板中使用任何密钥库秘密。有关示例,请参阅https://github.com/bobvandevijver/azure-arm-keyvault-secret-output。
如果微软只是修复这个实现,显然会更好,但它是什么东西!
发布于 2019-02-08 21:38:29
只能在模板(或嵌套模板)的参数中使用密钥库引用。
因此,您需要将此部分移动到参数部分,或者将其移动到嵌套模板,并将其用作嵌套模板的参数。下面是将值从kv传递到嵌套模板的示例:
{
"apiVersion": "2017-05-10",
"name": "[concat('kvReference-', copyIndex())]",
"type": "Microsoft.Resources/deployments",
"copy": {
"name": "kvReference",
"count": 2
},
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "nested_template_uri"
},
"parameters": {
"cer": {
"reference": {
"keyVault": {
"id": "keyvaultId"
},
"secretName": "secretname"
}
}
}
}
},您可以将这些输入用作嵌套模板中的参数
https://stackoverflow.com/questions/54593568
复制相似问题