代码之家  ›  专栏  ›  技术社区  ›  Milen

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

  •  7
  • Milen  · 技术社区  · 9 年前

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

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

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

    2 回复  |  直到 9 年前
        1
  •  8
  •   Michael B    9 年前

    Azure RM模板的本质是一个声明性结构,它定义了如何部署解决方案。如果它发现了模板中不存在的东西,那么根据它所做的事情的性质,应该将其更改为与模板匹配。

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

    另一种选择是在调用模板之前在脚本中修改这些参数。因此,如果S2已经存在,则可以将SQL数据库调整为S2。

        2
  •  1
  •   jschmitter    5 年前

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

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