在 ARM 模板中使用 dependsOn 属性
using dependsOn property in ARM Template
我在部署其他资源之前先部署 VNET。它确实部署了第一个 VNET 模板,但在部署其他模板时出错,因为它表示子网处于配置状态,即资源正在更新。
我正在使用嵌套模板并尝试在 ARM 中使用 dependsOn 属性,但无法正常工作。是否可以在资源级别使用它?
"resources": [
{
"apiVersion": "2017-05-10",
"name": "vNet_ResourceUnit",
"type": "Microsoft.Resources/deployments",
"resourceGroup": "[resourceGroup().name]",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[variables('vnetTemplateUrl')]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"hyphenBasedPrefix": {
"value": "[variables('hyphenBasedPrefix')]"
},
"baseTemplateUrl": {
"value": "[parameters('baseTemplateUrl')]"
},
"vnetObject": {
"value": "[variables('vnet')]"
}
}
}
},
{
"apiversion": "2017-05-10",
"name": "keyVault_resourceunit",
"type": "microsoft.resources/deployments",
"resourcegroup": "[resourcegroup().name]",
"dependsOn": [
------
],
"properties": {
"mode": "incremental",
"templatelink": {
"uri": "[variables('keyVaultTemplateUrl')]",
"contentversion": "1.0.0.0"
},
"parameters": {
"hyphenbasedprefix": {
"value": "[variables('hyphenbasedprefix')]"
},
"basetemplateurl": {
"value": "[parameters('basetemplateurl')]"
},
"keyvaultobject": {
"value": "[variables('keyvault')]"
},
"vnetObject": {
"value": "[variables('vnet')]"
}
}
}
}
]
如何在资源级别使用此处的 dependsOn 属性?我确实尝试使用最后一个模板:
"[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]"
但是它不起作用。
我如何在 'keyVault_resourceunit' 本身中使用它?
您需要等待部署完成,而不是部署中的资源(因为它们在不同的部署中,模板对它们一无所知)。
"[resourceId('Microsoft.Resources/deployments', 'vNet_ResourceUnit')]"
不要在依赖项中使用资源 ID,而是尝试使用资源对象的名称,即您问题中代码第 3 行的值“vNet_ResourceUnit”。
"dependsOn": [
"vNet_ResourceUnit"
]
其作用是让 arm 进程等待资源部署(名为“vNet_ResourceUnit”)完全完成,然后再开始 keyVault_resourceunit 部署。
我在部署其他资源之前先部署 VNET。它确实部署了第一个 VNET 模板,但在部署其他模板时出错,因为它表示子网处于配置状态,即资源正在更新。
我正在使用嵌套模板并尝试在 ARM 中使用 dependsOn 属性,但无法正常工作。是否可以在资源级别使用它?
"resources": [
{
"apiVersion": "2017-05-10",
"name": "vNet_ResourceUnit",
"type": "Microsoft.Resources/deployments",
"resourceGroup": "[resourceGroup().name]",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "[variables('vnetTemplateUrl')]",
"contentVersion": "1.0.0.0"
},
"parameters": {
"hyphenBasedPrefix": {
"value": "[variables('hyphenBasedPrefix')]"
},
"baseTemplateUrl": {
"value": "[parameters('baseTemplateUrl')]"
},
"vnetObject": {
"value": "[variables('vnet')]"
}
}
}
},
{
"apiversion": "2017-05-10",
"name": "keyVault_resourceunit",
"type": "microsoft.resources/deployments",
"resourcegroup": "[resourcegroup().name]",
"dependsOn": [
------
],
"properties": {
"mode": "incremental",
"templatelink": {
"uri": "[variables('keyVaultTemplateUrl')]",
"contentversion": "1.0.0.0"
},
"parameters": {
"hyphenbasedprefix": {
"value": "[variables('hyphenbasedprefix')]"
},
"basetemplateurl": {
"value": "[parameters('basetemplateurl')]"
},
"keyvaultobject": {
"value": "[variables('keyvault')]"
},
"vnetObject": {
"value": "[variables('vnet')]"
}
}
}
}
]
如何在资源级别使用此处的 dependsOn 属性?我确实尝试使用最后一个模板:
"[resourceId('Microsoft.Network/virtualNetworks', parameters('vnetName'))]"
但是它不起作用。 我如何在 'keyVault_resourceunit' 本身中使用它?
您需要等待部署完成,而不是部署中的资源(因为它们在不同的部署中,模板对它们一无所知)。
"[resourceId('Microsoft.Resources/deployments', 'vNet_ResourceUnit')]"
不要在依赖项中使用资源 ID,而是尝试使用资源对象的名称,即您问题中代码第 3 行的值“vNet_ResourceUnit”。
"dependsOn": [
"vNet_ResourceUnit"
]
其作用是让 arm 进程等待资源部署(名为“vNet_ResourceUnit”)完全完成,然后再开始 keyVault_resourceunit 部署。