【问题标题】:Does ARM template overwrite existing resource created by script?ARM 模板会覆盖脚本创建的现有资源吗?
【发布时间】:2020-06-18 23:47:18
【问题描述】:

我的 azure 帐户中有一个由脚本创建的 consomosDB,我想创建一个 ARM 模板来通过 ARM 模板管理资源部署,如何确保 ARM 模板不会重新创建/覆盖资源因为是第一次使用ARM模板部署?

【问题讨论】:

    标签: azure deployment azure-devops azure-cosmosdb arm-template


    【解决方案1】:

    如果在模板中指定了资源,ARM 模板将不会重新创建/覆盖现有资源。如果资源的属性值发生更改,它将更新资源。请参阅下面来自official document 的摘录。

    资源管理器尝试创建模板中指定的所有资源。如果资源组中已存在资源且其设置未更改,则不会对该资源执行任何操作。如果您更改资源的属性值,该资源将使用这些新值进行更新。如果您尝试更新现有资源的位置或类型,部署将失败并出现错误。而是部署具有您需要的位置或类型的新资源。

    在完整模式下,资源管理器会删除资源组中存在但未在模板中指定的资源

    如果您未指定某些属性,资源管理器会将部署解释为覆盖这些值。未包含在模板中的属性将重置为默认值。指定资源的所有非默认值,而不仅仅是您要更新的那些

    因此,如果您希望现有资源保持不变,可以从 Azure 门户导出资源模板,以确保所有属性都已指定且未更改。

    您还可以锁定资源,将锁定级别设置为 CanNotDelete 或 ReadOnly 以防止资源被删除或修改。查看文档Lock resources to prevent unexpected changes了解更多信息。

    【讨论】:

      【解决方案2】:

      要使用 ARM 模板修改现有资源,请从 Azure 门户中导出资源的模板。然后下载到本地。然后,您可以对其进行修改以更新 Cosmos 资源的设置。 ARM 模板具有 api 版本。这将与您用于创建 Cosmos 帐户的 PS 或 CLI 中的底层版本一致。修改 ARM 模板时,您需要记下 api-version,然后参考该版本 Cosmos DB schema reference 以确保属性与您部署的模板中的 api-version 匹配。

      【讨论】:

        猜你喜欢
        • 2020-12-10
        • 1970-01-01
        • 2016-12-03
        • 1970-01-01
        • 2021-04-13
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多