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

meh*_*ran 4 deployment azure azure-devops azure-rm-template azure-cosmosdb

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

Lev*_*SFT 8

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

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

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

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

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

您还可以锁定资源,将锁定级别设置为CanNotDelete或ReadOnly,以防止资源被删除或修改。查看文档锁定资源以防止意外更改以获取更多信息。