0

我读过一些关于 Azure Bicep 的东西,我觉得这是新的东西——

Azure 资源管理器和 ARM 模板以 JSON 语法编写,使用起来可能很麻烦。Azure Bicep 是一种域特定语言 (DSL),它提供对 Azure 资源管理器和 ARM 模板的透明抽象,支持更简洁的代码语法,更好地支持模块化和代码重用。与使用 ARM 模板 JSON 相比,Azure Bicep 为创作 Azure IaC 提供了一些改进。

我想了解 ARM 模板和 Azure Bicep 之间的比较,比如这两者的优缺点、限制和用例。

4

4 回答 4

2

我认为 Bicep 的官方 GitHub 存储库几乎包含您在问题中提到的所有答案。

部分摘录:

Bicep 是一种域特定语言 (DSL),用于以声明方式部署 Azure 资源。它旨在通过更简洁的语法、改进的类型安全性以及对模块化和代码重用的更好支持来极大地简化创作体验。Bicep 是对 ARM 和 ARM 模板的透明抽象

二头肌的生活如何变得更好?

  • 与等效的 JSON 相比,语法更简单
  • [...]

已知限制

  • 不支持单行对象和数组(即 ['a', 'b', 'c'])
  • [...]

常问问题

这准备好用于生产了吗?是的。从 v0.3 开始,Bicep 现在受到 Microsoft 支持计划的支持,Bicep 与 ARM 模板可以实现的功能 100% 相同。在撰写本文时,目前尚无重大更改计划,但仍有可能需要在未来进行。

更新:更新了提取,因为它现在可以生产了。

于 2020-09-13T06:39:07.020 回答
0

BICEP 比 ARM 模板语法更容易理解。
BICEP 被设计为 Yaml/TS/Js 格式的组合,没有不必要的标点符号。Bicep 是一种类似于 CSS 的标记语言,具有循环、if、三元运算和验证语法的 VS Code 智能感知插件。Bicep 仍然需要用户理解 Azure 资源管理器“资源”(Bicep 术语),但它为 devops 猴子提供了比容易出错的 json jibberish {","}; 更甜的语法糖。Bicep 还增加了对不属于 Json 的评论的支持。Bicep 与 -c (“检查健全性”)一起使用也更安全一些,因为所有内容(默认情况下)都限定在 ResourceGroup 级别。

BICEP 提供与 ARM 相同的功能,因为它是一个编译器,可以生成 ARM 模板,但添加了更高级别的功能,例如循环、包含、符号引用。ARM 是二头肌的底层语言,它也被 terraform 或自我管理的 K8 自动缩放等工具使用。

一个缺点是 BICEP 转换为 ARM,因此如果您的二头肌代码中有错误,您最终可能需要学习 ARM 以了解发生了什么。

于 2021-04-04T07:31:33.440 回答
0

我认为考虑 BICEP 的最佳方式是生成 ARM 模板的简单且不易出错的过程。归根结底,BICEP 工具只是一个转译器,即将 BICEP 文件转换为单个 ARM 模板,可以按照您习惯的方式进行部署。它没有添加额外的抽象层,因此您始终可以使用最新的资源管理器 API 版本和属性。

玩了一会儿,我很兴奋。在 BICEP 出现之前,我一直在使用链接模板来实现模块化并尽可能地重用代码,但是处理大而冗长的 JSON 文件很麻烦。

随着 VSCode BICEP 扩展和微软在智能感知和 BICEP linting 方面的努力,以及快速查看 ARM 输出的能力,我认为我们将享受到显着的生产力提升。

此外,BICEP 反编译器看起来像是一个非常有用的迁移工具,可以将现有的 ARM 模板转换为 BICEP。

ARM 模板过去一直是令人沮丧和痛苦的根源,但 BICEP 是巨大的进步。显然,Terraform 在这方面也做得很好,但除非您是专门的多云和多资源提供者,否则我相信 BICEP 提供了一种明智的方法。

于 2021-01-22T09:26:42.817 回答
0

一个缺点是 BICEP 转换为 ARM,因此如果您的二头肌代码中有错误,您最终可能需要学习 ARM 以了解发生了什么。

我认为当您遇到 TF 问题时,这个缺点比调试更容易。

目前,ARM模板和BICEP的关系是直截了当的,一对一的,非常直截了当。不幸的是,使用 Azure 需要了解 Azure REST API 规范和 ARM Tempate。但我喜欢 Bisp,因为我不想每次都与 ARM Tempate 搏斗。

二头肌让我的 Azure Life 快乐。

于 2021-05-28T00:46:21.820 回答