【问题标题】:ARM template - depending on resources from the outside of resource groupARM 模板 - 取决于资源组外部的资源
【发布时间】:2016-11-10 11:21:22
【问题描述】:

这是我在 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。每个微服务都包含 ARM 模板脚本,用于创建/更新部署微服务时使用的资源组。在 ARM 脚本中,我们可以定义依赖项 (dependsOn),以便以正确的顺序更新资源,但这仅适用于资源组。

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

【问题讨论】:

    标签: azure azure-resource-manager arm-template azure-resource-group


    【解决方案1】:

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

    但是你可以在你的模板中包含它,如果它存在,它不会做任何事情,除非你指定deploymentmode = complete。

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

    基于 cmets 编辑:

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

    【讨论】:

    • 问题是“如何包含它”。我知道链接模板,但这只能在同一个资源组中使用。
    • 部署azure.microsoft.com/en-us/documentation/articles/…后可以链接同一个订阅中的资源。但这并不能帮助您解决问题,目前还没有办法做您正在做的事情。
    • 确保这一点的方法是每次运行多个部署 - 如上所述,这只会“让它如此”,所以如果它存在,它就是一个空操作,如果它不存在它会创建它。在这种情况下,部署模式无关紧要,除非您在组中有不在模板中的额外资源 - 如果您执行“完整”模式将删除它们,但其行为与现有资源的增量相同。
    • 感谢 Brian,实际上,当我想到它时,ARM 无法做到这一点,但 PowerShell + ARM 可以做到这一点,您可以搜索共享资源的现有实例,如果它不存在- 使用 ARM 模板创建它,然后调用另一个 ARM 模板来部署实际服务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    相关资源
    最近更新 更多