如何找出ARM模板与实际部署资源的差异?
How to find differences between ARM template and actually deployed resources?
手臂模板
ARM 模板应该允许您回滚到声明的云状态。但是,让我们面对现实吧,模板本身对于将部署哪些资源来说是相当模糊的,因为它们通常很长而且人类可读性不强。
我的问题
潜在的问题是不清楚指定的云环境包含和不包含的内容。当人们开始点击门户时,声明的和实际的云基础设施之间存在不匹配。
问题是:有什么方法可以验证在部署 ARM 模板时哪些资源将被修改甚至删除?
- 当然我们可以
az group deployment validate
(或 Powershell 替代方案),但这只会在语法上验证模板。
我要找的是 terraform plan
-ish.
- 我注意到
what-if
functionality 处于预览状态。我们有什么保证这也会提供有关要删除的资源的准确信息?
假设
正如您已经发现的那样,What-If 是专为满足这一需求而设计的工具,它显示了一份资源列表:
- 已添加
- 已更改(具有 属性 个值,嗯)
- 已移除
- 忽略。
.. 并允许您确认更改并在出现任何错误时取消。
ARM 模板确实支持 incremental deployment,保持未编写脚本的资源完好无损,并且假设预览功能不会改变这一点。
关于保证..
是的,What-if 功能本身目前仍处于预览阶段,因此有点偏执是有道理的。显然 您无法获得预览功能的任何保证,但是..
首先,它是可选的。您仍然拥有 ARM 模板,不必单独依赖 What-If。您也不会被迫通过假设功能进行实际部署。您可以检查报告,但拒绝更改并仍然通过您常用的 GA 级 ARM 工具集进行部署。没有桥梁被烧毁(如果您信任小的确认询问子功能)。
其次,您无论如何都应该进行测试。 通常您知道在 ARM 中进行了哪些更改,并且这些相同的更改应该在 What-If 中显示出来。您可以验证对 dev/staging 环境所做更改的正确性,风险很小。它是否适用于您的场景,您将尽早了解。
通知。
除了测试之外,您还可以调查已知的缺点和问题,并考虑是否有任何问题对您的案例很重要。看到这个回购:
https://github.com/Azure/arm-template-whatif
总结
What-if 是一个非常有用的功能,而且看起来已经足够成熟,我希望大多数常见场景都能按预期运行。只要你测试过,有恢复计划,我就不会太担心。
手臂模板
ARM 模板应该允许您回滚到声明的云状态。但是,让我们面对现实吧,模板本身对于将部署哪些资源来说是相当模糊的,因为它们通常很长而且人类可读性不强。
我的问题
潜在的问题是不清楚指定的云环境包含和不包含的内容。当人们开始点击门户时,声明的和实际的云基础设施之间存在不匹配。
问题是:有什么方法可以验证在部署 ARM 模板时哪些资源将被修改甚至删除?
- 当然我们可以
az group deployment validate
(或 Powershell 替代方案),但这只会在语法上验证模板。 我要找的是terraform plan
-ish. - 我注意到
what-if
functionality 处于预览状态。我们有什么保证这也会提供有关要删除的资源的准确信息?
假设
正如您已经发现的那样,What-If 是专为满足这一需求而设计的工具,它显示了一份资源列表:
- 已添加
- 已更改(具有 属性 个值,嗯)
- 已移除
- 忽略。
.. 并允许您确认更改并在出现任何错误时取消。
ARM 模板确实支持 incremental deployment,保持未编写脚本的资源完好无损,并且假设预览功能不会改变这一点。
关于保证..
是的,What-if 功能本身目前仍处于预览阶段,因此有点偏执是有道理的。显然 您无法获得预览功能的任何保证,但是..
首先,它是可选的。您仍然拥有 ARM 模板,不必单独依赖 What-If。您也不会被迫通过假设功能进行实际部署。您可以检查报告,但拒绝更改并仍然通过您常用的 GA 级 ARM 工具集进行部署。没有桥梁被烧毁(如果您信任小的确认询问子功能)。
其次,您无论如何都应该进行测试。 通常您知道在 ARM 中进行了哪些更改,并且这些相同的更改应该在 What-If 中显示出来。您可以验证对 dev/staging 环境所做更改的正确性,风险很小。它是否适用于您的场景,您将尽早了解。
通知。 除了测试之外,您还可以调查已知的缺点和问题,并考虑是否有任何问题对您的案例很重要。看到这个回购: https://github.com/Azure/arm-template-whatif
总结
What-if 是一个非常有用的功能,而且看起来已经足够成熟,我希望大多数常见场景都能按预期运行。只要你测试过,有恢复计划,我就不会太担心。