azure - Azure ARM 模板:功能限制,如何检测?
问题描述
仍在学习如何使用 ARM 模板进行 InfraAsCode。从我读到的 MS 文档中,我了解到 ARM 无法完成我通常使用 Powershell 所做的所有事情,并且在这种情况下我发现难以检测 ARM 限制。
让我解释一下我的理解,如果有人可以确认,那会很有帮助。
- 从 Portal,我设置我想要的资源并根据需要进行配置
- 然后从我的资源中,单击自动化>导出模板
- 现在我可以看到 ARM 如何部署我的资源了。
我注意到在 Step1 上做的一些配置没有在 step3 上列出。这是否意味着我发现了 ARM 限制,因此必须使用 Powershell(或 Azure CLI)完成剩余项目?
具体例子:
- 使用应用服务,我可以从 Azure 门户配置身份验证/授权
- 当我单击导出模板时,与我的身份验证/授权无关
因此:在我部署了我的 ARM 模板之后,我需要做一些额外的事情来完成身份验证/授权。我对吗 ?
谢谢
解决方案
简短的回答是“这取决于”。Azure 中有 2 个 api 表面,一个是“控制平面”,另一个是“数据平面”。很短,但是控制平面允许您 CRUD 资源(虚拟机、存储、站点),而数据平面允许您 CRUD 数据(blob、文件、keyVault、appConfig、sql 数据)。
控制平面中的任何事情都可以通过 ARM 模板完成。门户中的大多数事情都是在幕后使用 ARM 模板完成的,但这与您在执行“导出”时看到的模板不同。
门户中的导出对资源的当前状态执行 API GET,并且最好创建一个模板。由于缺少/不完整的模式、机密、只写属性(不通过 GET 返回),这并不总是可能的。所以这是尽力而为。
要查看使用的模板(如果使用了),您可以查看对 resourceGroup 进行的部署,并且在每个部署中,您都可以看到实际使用的模板。它里面没有秘密,但它可能有额外的设置,你需要为它提供秘密(在这种情况下是 authn)。
因此,此处的路径是查看门户在您创建资源时是否使用了模板,并将其用作重新创建资源的参考。它可能不是像 export 给你的单一模板(它将是原始状态,而不是当前状态),但应该填补空白。
这种帮助?
推荐阅读
- modelica - 如何在 JModelica 中读取 .mat 输出文件?
- javascript - 异步函数顺序运行,为什么?
- git - 在 Azure DevOps 存储库的另一个项目中签出子模块
- vue.js - VueJS 和 Jest:找不到模块“babel-core”
- sql - How in SQLite can i delete a repeated database table rows that have the same name if these repeated rows are associated with rows in another table?
- java - Java 8 - 如何从 List 创建 Iterable
和 new T 而不创建临时变量? - python - 使用python生成MDX(嵌入SQL)代码
- c# - ASP.NET 中字段的允许值
- azure - 如何从 azure cosmos DB 中保存和检索 Azure 空间锚点应用程序属性
- clojure - 添加到地图中的矢量