gpt4 book ai didi

azure 嵌套模板依赖项处理错误

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

Azure 似乎处理嵌套模板依赖项,如果找不到资源就会失败。

例如,我有 3 个嵌套模板:

  • 模板 #1:创建 VNet 和专用 DNS 区域。
  • 模板 #2:创建网卡(可能带有虚拟机)
  • 模板 #3:在 DNS 区域中添加网卡的 A 记录。

模板 Json:

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"apiVersion": "2017-05-10",
"name": "VnetTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"properties":{
"subnets":[
{
"properties":{
"addressPrefix":"10.0.0.0/24"
},
"name":"default"
}
],
"addressSpace":{
"addressPrefixes":[
"10.0.0.0/24"
]
}
},
"type":"Microsoft.Network/virtualNetworks",
"location":"[resourceGroup().location]",
"name":"my_vnet",
"apiVersion":"2017-10-01"
},
{
"properties":{
"resolutionVirtualNetworks":[
{
"id":"[resourceId('Microsoft.Network/virtualNetworks/','my_vnet')]"
}
],
"zoneType":"Private"
},
"type":"Microsoft.Network/dnsZones",
"location":"global",
"dependsOn":["my_vnet"],
"name":"my.dns",
"apiVersion":"2017-10-01"
}
]
}
}
},
{
"apiVersion": "2017-05-10",
"name": "NicTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"properties":{
"ipConfigurations":[
{
"properties":{
"privateIPAllocationMethod":"Dynamic",
"subnet":{
"id":"[resourceId('Microsoft.Network/virtualNetworks/subnets', 'my_vnet', 'default')]"
}
},
"name":"app_vnic_IPConf"
}
]
},
"type":"Microsoft.Network/networkInterfaces",
"location":"[resourceGroup().location]",
"name":"app_vnic",
"apiVersion":"2017-10-01"
}
]
}
},
"dependsOn":[
"VnetTemplate"
]
},
{
"apiVersion": "2017-05-10",
"name": "DnsRecordTemplate",
"type": "Microsoft.Resources/deployments",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"properties":{
"TTL":3600,
"ARecords":[
{
"ipv4Address":"[reference(resourceId('Microsoft.Network/networkInterfaces/','app_vnic'), '2017-10-01').ipConfigurations[0].properties.privateIPAddress]"
}
]
},
"type":"Microsoft.Network/dnsZones/A",
"name":"my.dns/my_app",
"apiVersion":"2017-10-01"
}
]
}
},
"dependsOn": [
"NicTemplate"
]
}
]
}

我预计在前两个模板完成之前不会处理最后一个嵌套模板,但事实并非如此。

Screen Shot 2

Screen Shot 1

(此示例简化了我在部署在多个资源组上的更大模板时遇到的问题)

知道如何处理吗?

最佳答案

这不是真的,如果您再次部署模板,它就会起作用,并且部署将相互等待。所以模板中的dependsOn属性没有任何问题。但是,如果您查看该错误,您会发现该错误是关于 app_vnic NIC 未找到。此错误来自引用函数,而不是来自在其应有的时间之前开始的嵌套内联模板(根据依赖项)。

要解决此问题,您需要将带有引用函数的模板转换为常规嵌套模板(非内联)。将其上传到一些可公开访问的位置并像这样引用它:

{
"name": "NestedDeployment1",
"type": "Microsoft.Resources/deployments",
"apiVersion": "2015-01-01",
"dependsOn": [
"NicTemplate"
],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "url_goes_here",
"contentVersion": "1.0.0.0"
}
}
}

这样就可以了。

我必须承认这是一个错误,但公平地说,嵌套内联模板充满了奇怪的行为,我建议不要使用它们(除非您知道自己在做什么)。

关于 azure 嵌套模板依赖项处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53249756/

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