如何找到ARM模板和实际部署的资源之间的差异?

时间:2020-11-06 19:11:26

标签: azure deployment azure-resource-manager arm-template

手臂模板

ARM模板应允许您回滚到声明的云状态。但是,让我们面对现实吧,模板本身对于将部署哪些资源还是很晦涩,因为它们通常很长,而且不是很可读。

我的问题

潜在的问题是,尚不清楚指定的云环境包含什么和不包含什么。当人们开始在门户中单击时,声明的云基础设施和实际的云基础设施之间将存在不匹配。

问题是:在部署ARM模板时,是否有任何方法可以验证将修改或删除哪些资源?

  • 我们当然可以const getText = (obj: Obj1 | Obj2): string => { let property = "message" if (property in obj) { return obj.message } return obj.text } (或Powershell替代品),但这仅可以语法上验证模板。 我正在寻找的是az group deployment validate式的东西。
  • 我注意到what-if functionality处于预览状态。我们有什么保证,这也可以提供有关要删除的资源的准确信息?

1 个答案:

答案 0 :(得分:1)

假设

正如您已经发现的,What-If是旨在满足这一需求的工具,它显示了将要使用的资源的列表:

  • 已添加
  • 已更改(属性值为mmm)
  • 已移除
  • 忽略。

..并允许您确认更改并在出现任何问题时取消。

ARM模板确实支持incremental deployment,使未脚本化的资源保持不变,并且假设预览功能也不会改变它。

关于担保。

是的,假设分析功能本身今天仍在预览中,几乎没有什么偏执。显然您对预览功能没有任何保证,但是..

首先,它是可选的。您仍然拥有ARM模板,而不必仅依赖于假设分析。您也不必强迫自己通过假设功能进行部署。您可以检查报告,但拒绝更改,仍然可以通过常规的GA级ARM工具集进行部署。没有桥被烧毁(如果您信任小的确认要求子功能)。

其次,您还是应该进行测试。通常,您知道在ARM中进行了哪些更改,并且在假设分析中会亮起那些相同的更改。而且您可以以很小的风险来验证对开发/分阶段环境所做的更改的正确性。您将尽早了解它是否可以在您的方案中使用。

被告知。 除了测试之外,您还可以调查已知的缺点和问题,并考虑是否对您的案例很重要。查看此仓库: https://github.com/Azure/arm-template-whatif

摘要

假设分析是一项非常有用的功能,而且看起来已经足够成熟,我希望大多数常见方案都能按预期工作。只要您进行测试,并且有可用的恢复计划,那么我就不会太担心。