gpt4 book ai didi

json - ARM 错误 : The Template Resource is not found using resource(), copyIndex()

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

我正在尝试通过在 copyIndex 循环内转换运行时资源属性来有条件地提供资源属性值。

部署以下 ARM 模板后,我收到错误:

Unable to process template language expressions for resource '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachines/{vm-name}/extensions/Microsoft.EnterpriseCloud.Monitoring' at line '30' and column '10'. 'The template resource '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/virtualMachines/{vm-name}' is not found.' (Code: InvalidTemplate)

"type": "[variables('extensionType')[reference(concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachines')[copyIndex()].name)).storageProfile.osDisk.osType]]",

但是,VM 以其提供的 ID 存在,因此引擎无法找到它是没有意义的。如果我对扩展类型进行硬编码,则不会出现错误,并且扩展会安装在具有相同 ID 的虚拟机上。

不幸的是,我不知道这是否是 ARM 中的一个错误,或者我只是做错了什么......

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"workspaceResourceId": { "type": "string" },
"virtualMachines": { "type": "array" }
},
"variables": {
"extensionType": {
"Windows": "MicrosoftMonitoringAgent",
"Linux": "OmsAgentForLinux"
}
},
"resources": [
{
"copy": {
"name": "VMMonitoringExtensionsCopy",
"count": "[length(parameters('virtualMachines'))]"
},
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2015-05-01-preview",
"location": "[parameters('virtualMachines')[copyIndex()].location]",
"name": "[concat(parameters('virtualMachines')[copyIndex()].name, '/Microsoft.EnterpriseCloud.Monitoring')]",
"properties": {
"publisher": "Microsoft.EnterpriseCloud.Monitoring",
"type": "[variables('extensionType')[reference(concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachines')[copyIndex()].name)).storageProfile.osDisk.osType]]",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"settings": {
"workspaceId": "[reference(parameters('workspaceResourceId'), '2015-11-01-preview').customerId]"
},
"protectedSettings": {
"workspaceKey": "[listKeys(parameters('workspaceResourceId'), '2015-11-01-preview').primarySharedKey]"
}
}
}
]
}

为 virtualMachines 传入的对象数组如下所示:

[
{ "name": "vm-name", "location": "azure-region" }
]

最佳答案

您可以尝试以下几件事:

1) 假设虚拟机未在同一模板中定义,请尝试在引用函数中使用“完整”resourceId。请参阅本文档中的最后一个示例: https://azure.microsoft.com/en-us/documentation/articles/resource-group-template-functions/#reference - 看起来错误已经知道完整的resourceId,但是值得尝试

2) 另一种想法是引用函数是在运行时计算的,资源提供者不喜欢这个表达式,但这是一个小玩意。

我会再做一些研究,看看我们是否能解决这个问题。

关于json - ARM 错误 : The Template Resource is not found using resource(), copyIndex(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37446931/

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