ARM模板:取决于 - 您是否参考链接的“Microsoft.Resources / deployments”或其中创建的资源?

时间:2018-03-21 22:32:00

标签: azure-resource-manager arm-template

我有一个父ARM模板(例如:myapp.assembly.json),它调用链接子ARM模板(web.serverFarm.json,web.site.json等)

目前,我已通过dependsOn

定义了关联子模板之间的关系
    父级ARM模板中的
  • 引用链接的Microsoft.Resources/deployments的名称(而不是在链接的资源模板中创建的资源的名称)。

我在期待:

  • 为另一个Microsoft.Resources/deployments定义了dependsOn的任何Microsoft.Resources/deployments都会等到创建所有这些资源。

我认为我观察的是:

  • 第一次运行ARM模板时,它会报告部署失败...寻找依赖项......
  • 但继续工作......所以无法立即重新部署......
  • 第二次,构建资源,部署完成。

我完全有可能错过dependsOn - 虽然我真的看起来并且不这么认为 - 或者dependsOn没有像我期望的那样得到尊重

任何建议都将受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

哎! 谢谢你@ 4c74356b41和@ bmoore-msft ......你是完全正确的(在我的鼻子前面是一个令人尴尬的日子:-()

我必须从子资源模板复制/粘贴到父程序集模板。

"webSiteConfigAppSettingsApplicationInsightsInstrumentationKey": {
  // FIX: Rely on the template instead of direct:"value": "[reference(resourceId('Microsoft.Insights/components', variables('insights').components.resourceName), '2015-05-01').InstrumentationKey]"
  "value": "[reference(variables('insights').components.armTemplateId).outputs.instrumentationKey.value]"
}

即: 我需要引用模板及其输出。 不是模板中创建的资源......父模板无法看到。

现在所有的工作都很顺利。