当我尝试使用 Azure CLI 中的模板规范进行部署时,出现错误。 错误消息是
Unable to retrieve the template artifact
。
模板规格名称为
test
,主模板和链接模板保存在本地PC上。
我将分享主模板和每个模板的路径(主模板和链接模板)。
main_template.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"env":{
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
"name": "storage",
"properties": {
"mode": "Incremental",
"templateLink": {
"relativePath": "linked/linkedtemplate_storage.json"
},
"parameters": {
"env": {
"value": "[parameters('env')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
"name": "monitoring",
"properties": {
"mode": "Incremental",
"templateLink": {
"relativePath": "linked/linkedtemplate_monitoring.json"
},
"parameters": {
"env": {
"value": "[parameters('env')]"
},
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
"name": "notification",
"properties": {
"mode": "Incremental",
"templateLink": {
"relativePath": "linked/linkedtemplate_notification.json"
},
"parameters": {
"env": {
"value": "[parameters('env')]"
}
}
}
}
]
}
路径
main
:“C:\Users emplate\maintemplate.json”
linked(Storage)
:“C:\Users emplate\linked\linkedtemplate_storage.json”
linked(Monitoring)
:“C:\Users emplate\linked\linkedtemplate_monitoring.json”
`linked(通知): "C:\Users emplate\linked\linkedtemplate_notification.json"
这是部署命令。
$id = $(az ts show --name test --resource-group rg-nonprod-japan-rubiconclientbridge01-na-idbridge-n01-devops --version "1.0" --query "id")
az deployment group create \
--resource-group rg-nonprod-japan-rubiconclientbridge01-na-idbridge-n01-infrastructure \
--template-spec $id \
--parameters "@.\maintemplate.parameters-dev.json" \
我认为主模板中的链接模板路径是正确的,所以我不知道为什么会发生该错误。
有人知道我该怎么办吗?
任何答案都会有所帮助,如果您想了解更多信息,请随时询问我。
谢谢你。
使用给定命令执行部署时,我也收到了相同的错误。当无法从 Azure
"Unable to retrieve the template artifact"
命令正确访问链接的模板时,可能会出现 az ts show
问题。
可能有几个原因导致其无法按预期工作。
首先,检索模板规范 ID 工作正常,但当它传递到
az deployment group create
命令时,请确保模板规范 ID 读取正确。
我尝试直接传递它,如下所示,而不是从
az ts show
检索它以查明问题是否与任一命令有关。它按预期工作,没有任何冲突。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
"name": "storage",
"properties": {
"mode": "Incremental",
"templateLink": {
"relativePath": "storage.json"
},
"parameters": {
"location": {
"value": "[parameters('location')]"
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-06-01",
"name": "monitoring",
"properties": {
"mode": "Incremental",
"templateLink": {
"relativePath": "monitor.json"
},
"parameters": {
"location": {
"value": "[parameters('location')]"
}
}
}
}
]
}
az deployment group create --resource-group ipresources --template-spec "/subscriptions/xxxx/res
ourceGroups/ipresources/providers/Microsoft.Resources/templateSpecs/secondtemp/versions/1.0" --template-file "linkedtemp.json"
此外,问题可能出在
relative path
块的 templateLink
字段上。另一种方法是分别使用存储帐户的模板规范的 ID 和监控 Json 模板,以避免此处的混淆。
首先使用
az ts create
为存储帐户创建 ts 规范,并对监控模板执行相同的操作。现在,在模板链接 ID
字段下传递每个单独模板规范的 ID,如下所示。
"templateLink": {
"id": "/subscriptions/xxxx/resourceGroups/ipresources/providers/Microsoft.Resources/templateSpecs/secondtemp/versions/1.0"
}
或
根据此MSDoc,您还可以在上传文件内容后通过提供 GitHub Uri 或 blob Uri 来在
uri
下的 templateLink
字段进行部署(Json
)。请参阅给定的 MS 文档以了解清晰的程序。
"templateLink": {
"uri": "blob uri or Git Uri"
}