Azure - 不允许 Arm 模板修改现有资源

Azure - do not allow Arm template to modify existing resources

我有一个 arm 模板,它在单个资源组中提供了很少的资源。然后更改其中一些资源(针对不同的资源组更改定价层)。

例如在我的 arm 模板中 Sql 数据库最初是为 S1 性能配置的,然后由用户扩展到 S2。然后我编辑我的 arm 模板以添加存储帐户资源,例如。当我将更新的模板发布到现有资源组(Sql 数据库扩展到 S2 的资源组)以添加存储帐户时,我看到我的数据库缩小到 S1(我手臂中的默认值模板)。

我的问题是:有没有办法防止arm模板修改现有资源的属性?

Azure RM 模板的本质是一个定义解决方案部署方式的声明性结构。如果它发现模板中没有的东西,根据它所做的性质,它应该更改它以匹配模板。

您最好将模板转换为 Powershell 脚本(或 REST API 调用),这样您就可以在创建/修改详细信息之前检查状态。

另一种方法是在调用模板之前在脚本中修改这些参数。这样您就可以将 SQL 数据库调整为 S2(如果已经存在)。

我建议不要允许通过门户进行手动更改(在生产环境中)。

允许来自基础设施即代码 (IaC) 和 Azure 门户的更改违背了 IaC 的许多目的。 IaC 不仅旨在作为一种自动化手段,还旨在作为资源的文档和幂等控制。如果您要允许从门户手动更新,您的 IaC 将不断过时,维护它的价值将相对较小。