ARM模板是否会覆盖脚本创建的现有资源?

问题描述 投票:0回答:1

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

azure deployment azure-devops azure-cosmosdb arm-template
1个回答
1
投票

要使用ARM模板修改现有资源,请从Azure门户内导出资源的模板。然后将其下载到本地。然后,您可以修改它以更新大同资源的设置。ARM 模板具有 api 版本。这将与您用于创建大同账户的 PS 或 CLI 中的底层版本相一致。当修改ARM模板时,您将需要注意api版本,然后参考该版本。大同数据库模式参考 以确保属性与您部署的模板中的 api 版本相匹配。


1
投票

如果资源是在模板中指定的,ARM 模板将不会重新创建或覆盖现有资源。如果资源的属性值发生变化,它将更新资源。请看下面的摘录 公文.

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

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

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

因此,如果你想让现有的资源保持不变,可以从Azure Portal导出资源模板,以确保所有的属性都被指定,而不是改变。

你也可以锁定资源,将锁定级别设置为CanNotDelete或ReadOnly,以保持资源不被删除或修改。检查文档 锁定资源以防止意外变化 更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.