Azure 资源管理器 (ARM) 模板能够使用链接模板。这些链接模板可以定义要在 ARM 模板部署期间创建的其他资源。
ARM 模板支持确保某些资源先于其他资源创建的依赖项。
我想在链接模板中为在主模板中创建的资源指定依赖关系。如果我在链接模板中包含依赖项,它看起来像这样:
"resources": [
{
"apiVersion": "2015-08-01",
"type": "Microsoft.Web/sites/hostNameBindings",
"name": "[concat(parameters('siteName'),'/', parameters('fqdn'))]",
"dependsOn": [
"[concat('Microsoft.Web/sites/', parameters('siteName'))]"
],
"properties": {
"siteName": "[parameters('siteName')]"
}
}
]
虽然dependsOn
看起来正确,但资源是在 处创建的Microsoft.Web/sites/{siteNameParameter}
,部署 ARM 模板会输出以下错误消息:
InvalidTemplate:部署模板验证失败:'资源'Microsoft.Web/sites/blahblahblahblah'未在模板中定义。请参阅https://aka.ms/arm-template了解使用详情。
当我定义链接模板调用时,我目前正在主模板中定义此依赖项。这看起来很脆弱,很容易折断。有没有比在主 ARM 模板中定义依赖项更好的方法?
{
"apiVersion": "2015-01-01",
"name": "SomeName",
"type": "Microsoft.Resources/deployments",
"dependsOn": [
"[concat('Microsoft.Web/sites/', parameters('siteName'))]"
],
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://tempuri.org/supersecrettemplatepath/azuredeploy.json",
"contentVersion": "1.0.0.0"
},
"parameters":
{
"fqdn": {
"value": "www.tempuri.org"
},
"siteName": {
"value": "[parameters('siteName')]"
}
}
}
}