gpt4 book ai didi

azure - 链接的 ARM 模板导致模板无效

转载 作者:行者123 更新时间:2023-12-03 02:58:31 25 4
gpt4 key购买 nike

让我们从我想要完成的任务开始。

我想做的是创建一个 ARM 模板,在其中从 Azure Key Vault 检索 secret ,而无需指定有关特定 Key Vault 的太多详细信息。听起来很简单,并且可能在每个生产系统中都实现了。

快速搜索后我发现 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”方法中使用。

因此,我开始创建一个“主”ARM 模板和一个名为 appservice.json 的新模板,其中包含我的应用服务所需的所有内容,包括 appSettings阻止需要来自 Key Vault 的 secret 。

在我的主模板中,我完成了以下操作: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.4204720Z ##[error]Deployment template validation failed: 'The template variable 'sharedTemplateUrl' is not valid: The language expression property 'templateLink' doesn't exist, available properties are 'template, parameters, mode, debugSetting, provisioningState'.. Please see https://aka.ms/arm-template-expressions for usage details.'.

这时候我有点失落了。根据我从文档中了解到的情况,我所做的一切似乎都是正确的。显然我不是。关于如何继续这个工作有什么想法吗?

为了完整起见,我目前使用的两个实际文件:

为了尝试修复它,已经对其进行了多次迭代,但正如前面提到的,到目前为止,注释似乎有效。

最佳答案

首先,this这就是您应该如何在嵌套模板中使用 KV 的方式。管理员密码示例:

"adminPassword": {
"reference": {
"keyVault": {
"id": "kv_resource_id"
},
"secretName": "[concat('secret', copyindex(1))]"
}
},

当您调用它时,此部分应该位于嵌套模板参数中(只需查看示例链接)。

您的错误似乎出在变量中。因此,templateLink 属性仅在您从 url 部署主模板时才可用,如果您使用本地文件部署主模板,则它将不起作用。

enter image description here

将此与远程模板执行进行比较:

New-AzureRmResourceGroupDeployment -ResourceGroupName xxx -TemplateUri 'https://paste.ee/d/XI1Rc/0'

由于这是一个远程 URL,它应该显示相同的输出,但这次带有 templateLink 属性。

Name             Type                       Value
=============== ========================= ==========
test Object {

"name": "theDeploymentName",
"properties": {
"templateLink": {
"uri": "theRemoteTemplateUri"
},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [],
"outputs": {
"test": {
"type": "Object",
"value": "[deployment()]"
}
}
},
"parameters": {},
"mode": "Incremental",
"provisioningState": "Accepted"
}
}

关于azure - 链接的 ARM 模板导致模板无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51184075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com