首页 > 解决方案 > Azure ARM 模板:功能限制,如何检测?

问题描述

仍在学习如何使用 ARM 模板进行 InfraAsCode。从我读到的 MS 文档中,我了解到 ARM 无法完成我通常使用 Powershell 所做的所有事情,并且在这种情况下我发现难以检测 ARM 限制。

让我解释一下我的理解,如果有人可以确认,那会很有帮助。

  1. 从 Portal,我设置我想要的资源并根据需要进行配置
  2. 然后从我的资源中,单击自动化>导出模板
  3. 现在我可以看到 ARM 如何部署我的资源了。

我注意到在 Step1 上做的一些配置没有在 step3 上列出。这是否意味着我发现了 ARM 限制,因此必须使用 Powershell(或 Azure CLI)完成剩余项目?

具体例子:

因此:在我部署了我的 ARM 模板之后,我需要做一些额外的事情来完成身份验证/授权。我对吗 ?

谢谢

标签: azureazure-resource-managerarm-template

解决方案


简短的回答是“这取决于”。Azure 中有 2 个 api 表面,一个是“控制平面”,另一个是“数据平面”。很短,但是控制平面允许您 CRUD 资源(虚拟机、存储、站点),而数据平面允许您 CRUD 数据(blob、文件、keyVault、appConfig、sql 数据)。

控制平面中的任何事情都可以通过 ARM 模板完成。门户中的大多数事情都是在幕后使用 ARM 模板完成的,但这与您在执行“导出”时看到的模板不同。

门户中的导出对资源的当前状态执行 API GET,并且最好创建一个模板。由于缺少/不完整的模式、机密、只写属性(不通过 GET 返回),这并不总是可能的。所以这是尽力而为。

要查看使用的模板(如果使用了),您可以查看对 resourceGroup 进行的部署,并且在每个部署中,您都可以看到实际使用的模板。它里面没有秘密,但它可能有额外的设置,你需要为它提供秘密(在这种情况下是 authn)。

因此,此处的路径是查看门户在您创建资源时是否使用了模板,并将其用作重新创建资源的参考。它可能不是像 export 给你的单一模板(它将是原始状态,而不是当前状态),但应该填补空白。

这种帮助?


推荐阅读