如何在现有ARM模板上保持资源API版本的最新版本?

Ale*_*x S 6 azure azure-resource-manager

我有一个现有的Azure模板,它提供了以下资源

Microsoft.ClassicStorage/StorageAccounts (api version 2014-06-01)
microsoft.insights/components (api version 2014-08-01)
Run Code Online (Sandbox Code Playgroud)

还有一些......

使用文章资源提供程序和类型中的代码,我发现模板上的资源API版本背后的版本很少:

Microsoft.ClassicStorage/StorageAccounts. Current: 2014-06-01, available:

2016-11-01
2016-04-01
2015-12-01
2015-06-01
2014-06-01
2014-04-01-beta
2014-04-01
2014-01-01

microsoft.insights/components. Current: 2014-08-01, available:

2015-05-01
2014-12-01-preview
2014-08-01
2014-04-01
Run Code Online (Sandbox Code Playgroud)

以下是我的问题

  1. 在模板中维护资源API版本的最佳做法是什么?
  2. 我在哪里可以了解每个API版本中引入的更改?
  3. 如果我在已使用旧API版本配置的资源上更改API版本,Azure会做什么?

小智 7

  1. "在模板中维护资源API版本的最佳做法是什么?"

除非您使用的是以前的api版本未涵盖的新功能,否则您不需要更新资源的api-version字段.

主要是,如果它有效,请不要修复它.

ARM模板中嵌入式api-version字段的目的是确保模板在任何时间点继续按需运行.

我见过一些api版本的变量模板.我不喜欢那种做法.这使得更改api版本变得非常容易,因为更新该版本可能会使架构无效并导致任何数量的错误.

  1. "我在哪里可以了解每个API版本中引入的更改?"

它是一个非常原始的形式,但你可以在这个GitHub仓库中看到资源提供者的Swagger规范.

GitHub:azure/azure-rest-api-specsGitHub:azure/azure-resource-manager-schemas

Azure SDK,ARM模板甚至一些门户UI都将此repo作为自动生成的Swagger源.

对于最新的ARM版本功能,您可以使用此docs子站点,该子站点也是从规范生成的.

ARM模板资源定义

  1. 如果我在已使用旧API版本配置的资源上更改API版本,Azure会做什么?

如果更改api-version并执行更改,则如果尚未将资源配置更新为新版本,则Azure资源管理器API可能会响应对象架构错误.

您可以运行Validate调用来获取这些错误,而无需进行任何更改.

同样,除非您在新的api版本中使用新功能或配置,否则没有理由更新模板资源的api版本.


Ale*_*x S 5

根据其他答复,我为我的团队针对Resource Manager API版本起草了以下最佳实践文档。

Azure资源管理器API版本准则

  1. 对于添加到模板的新资源,请使用最新的API版本。使用资源提供者和类型一文作为如何获取资源类型的最新API版本的指南。

  2. 不要为了保持最新的API版本而更改已调配资源的API版本。一般原则-如果可行,请不要修复。

  3. 仅在Microsoft Azure提出建议或更新的API版本将允许使用新功能的情况下,才更改供应资源的API版本。

  4. 不要将模板变量用于API版本。API版本必须在模板中定义为文本。