让我们从我要完成的事情开始。
我想做的是创建一个arm模板,在那里我可以从azure密钥库中检索机密,而不需要指定太多关于特定密钥库的详细信息。听起来很简单,而且可能是在每个生产系统中实现的。
快速搜索我发现
the syntax for such a thing is the following
是的。
"parameters": {
"adminPassword": {
"reference": {
"keyVault": {
"id": "[resourceId(subscription().subscriptionId, parameters('vaultResourceGroup'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
},
"secretName": "[parameters('secretName')]"
}
},
据我所知,您需要将其添加到外部模板中,因为使用的方法不能在“main”方法中使用。
所以我开始创建一个“main”arm模板和一个名为
appservice.json
其中包含了我的应用程序服务所需的所有内容,包括
appSettings
需要密钥库中的秘密的块。
在我的主模板中,我做了以下工作,
as described in the documentation
是的。
{
"apiVersion": "2017-05-10",
"name": "linkedTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[uri(deployment().properties.templateLink.uri, 'appservice.json')]",
"contentVersion": "1.0.0.0"
},
但是,在部署时,我遇到了以下错误。
"error": {
"code": "InvalidTemplate",
"message": "Unable to process template language expressions for resource '/subscriptions/ba49bae7-2b37-4504-914b-441763a2bcd3/resourceGroups/cfpexchange-jan-test/providers/Microsoft.Resources/deployments/linkedTemplate' at line '1' and column '1526'. 'The language expression property 'templateLink' doesn't exist, available properties are 'name, properties'.'"
}
我还尝试了以下操作,因为我注意到visual studio中的intellisense告诉我
properties
不退出,我应该使用
templateLink
直接。
{
"apiVersion": "2017-05-10",
"name": "linkedTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[uri(deployment().templateLink.uri, 'appservice.json')]",
"contentVersion": "1.0.0.0"
},
这当然也不对。
"error": {
"code": "InvalidTemplate",
"message": "Unable to process template language expressions for resource '/subscriptions/ba49bae7-2b37-4504-914b-441763a2bcd3/resourceGroups/cfpexchange-jan-test/providers/Microsoft.Resources/deployments/linkedTemplate' at line '1' and column '1526'. 'The language expression property 'templateLink' doesn't exist, available properties are 'name, properties'.'"
}
当将其用作变量时,如在文档中
"variables": {
"sharedTemplateUrl": "[uri(deployment().properties.templateLink.uri, 'shared-resources.json')]"
},
...
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[variables('sharedTemplateUrl')]",
"contentVersion": "1.0.0.0"
},
我也有一个错误。
2018-07:04T19:14:34.42047 20Z[Y]错误部署模板验证失败:“模板变量'SyrdMtPayull”无效:语言表达式属性“TimePeleLink”不存在,可用属性是“模板、参数、模式、调试设置、提供状态”。请看
https://aka.ms/arm-template-expressions
有关用法的详细信息。
这个时候我有点迷路了。从我对文档的理解来看,似乎我做的一切都是正确的。显然我不是。关于如何继续下去有什么想法吗?
为了完整起见,我现在使用的两个实际文件是:
为了尝试修复它,已经对它进行了多次迭代,但是正如前面提到的,到目前为止没有任何效果。