ARM 模板 - 取决于来自资源组外部的资源

ARM template - depending on resources from the outside of resource group

这是我在 Azure 上的内容:

Resource group: 'microservice-1'
App Service: 'app-service-1'
Database: 'database-1'

Resource group: 'microservice-2'
App Service: 'app-service-2'
Database: 'database-2'

Resource group: 'shared-infrastructure'
Database: 'shared-database-1'

两个微服务都使用 shared-database-1。每个微服务都包含部署微服务时使用的 create/update 资源组的 ARM 模板脚本。在 ARM 脚本中,我们可以定义依赖项 (dependsOn),以便以正确的顺序更新资源,但这仅适用于资源组。

这是我想要的场景运行:
Azure 中没有任何内容,我想发布 microservice-1。有没有 我可以使用 Azure / ARM 中的机制,因此 shared-infrastructure 版本(ARM 模板)在 microservice-1?

之前 运行

否,除非您在 ARM 模板中专门包含它。 DependOn 只是检查资源是否存在,它不会神奇地为你创建它。

但是您可以将它包含在您的模板中,如果它存在,它不会执行任何操作,除非您指定 deploymentmode = complete。

因此您可以创建 3 个模板:用于微服务 1、微服务 2 和共享基础设施。在您的微服务模板中,您可以包括部署以创建共享基础设施,如果它已经到位就不会这样做

根据评论编辑:

您可以在部署后在同一订阅中 link 资源。使用 ARM 无法做到这一点,但 PowerShell + ARM 可以做到这一点,您可以搜索共享资源的现有实例,如果不存在 - 使用 ARM 模板创建它,然后调用另一个 ARM 模板来部署实际服务.