【发布时间】:2020-06-18 23:47:18
【问题描述】:
我的 azure 帐户中有一个由脚本创建的 consomosDB,我想创建一个 ARM 模板来通过 ARM 模板管理资源部署,如何确保 ARM 模板不会重新创建/覆盖资源因为是第一次使用ARM模板部署?
【问题讨论】:
标签: azure deployment azure-devops azure-cosmosdb arm-template
我的 azure 帐户中有一个由脚本创建的 consomosDB,我想创建一个 ARM 模板来通过 ARM 模板管理资源部署,如何确保 ARM 模板不会重新创建/覆盖资源因为是第一次使用ARM模板部署?
【问题讨论】:
标签: azure deployment azure-devops azure-cosmosdb arm-template
如果在模板中指定了资源,ARM 模板将不会重新创建/覆盖现有资源。如果资源的属性值发生更改,它将更新资源。请参阅下面来自official document 的摘录。
资源管理器尝试创建模板中指定的所有资源。如果资源组中已存在资源且其设置未更改,则不会对该资源执行任何操作。如果您更改资源的属性值,该资源将使用这些新值进行更新。如果您尝试更新现有资源的位置或类型,部署将失败并出现错误。而是部署具有您需要的位置或类型的新资源。
在完整模式下,资源管理器会删除资源组中存在但未在模板中指定的资源
如果您未指定某些属性,资源管理器会将部署解释为覆盖这些值。未包含在模板中的属性将重置为默认值。指定资源的所有非默认值,而不仅仅是您要更新的那些
因此,如果您希望现有资源保持不变,可以从 Azure 门户导出资源模板,以确保所有属性都已指定且未更改。
您还可以锁定资源,将锁定级别设置为 CanNotDelete 或 ReadOnly 以防止资源被删除或修改。查看文档Lock resources to prevent unexpected changes了解更多信息。
【讨论】:
要使用 ARM 模板修改现有资源,请从 Azure 门户中导出资源的模板。然后下载到本地。然后,您可以对其进行修改以更新 Cosmos 资源的设置。 ARM 模板具有 api 版本。这将与您用于创建 Cosmos 帐户的 PS 或 CLI 中的底层版本一致。修改 ARM 模板时,您需要记下 api-version,然后参考该版本 Cosmos DB schema reference 以确保属性与您部署的模板中的 api-version 匹配。
【讨论】: