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

时间:2020-06-18 23:47:18

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

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

2 个答案:

答案 0 :(得分:2)

如果在模板中指定了资源,则

ARM模板将不会重新创建/覆盖现有资源。如果资源的属性值更改,它将更新资源。请参见下面的official document摘录。

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

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

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

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

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

答案 1 :(得分:1)

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