Bicep 是一种特定于域的语言,它使用声明性语法来部署 Azure 资源。 在 Bicep 文件中,定义要部署到 Azure 的基础结构,然后在整个开发生命周期中使用该文件重复部署基础结构。 你的资源以一致的方式部署。
Bicep 提供简洁的语法、可靠的类型安全,并支持重复使用代码。 Bicep 为 Azure 中的 基础结构即代码 解决方案提供最佳创作体验。
Bicep 的优点
Bicep 具有下列优势:
支持所有资源类型和 API 版本:Bicep 直接支持 Azure 服务的所有预览版本和正式发布版本。 在资源提供程序引入新的资源类型和 API 版本后,即可在 Bicep 文件中使用它们。 在使用新服务之前,无需等待工具更新。
简单的语法:与等效的 JSON 模板相比,Bicep 文件更简洁且更易于阅读。 Bicep 不需要事先了解编程语言。 Bicep 语法是声明性的,可指定要部署的资源和资源属性。
以下示例显示了 Bicep 文件和等效 JSON 模板的区别。 这两个示例都部署了一个存储帐户:
param ___location string = resourceGroup().___location param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = { name: storageAccountName ___location: ___location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } }
创作体验:使用 VS Code 的 Bicep 扩展创建 Bicep 文件时,可获得一流的创作体验。 该编辑器提供了针对丰富类型的安全性、IntelliSense 和语法验证。
还可以使用 Visual Studio 的 Bicep 扩展在 Visual Studio 中创建 Bicep 文件。
可重复的结果:在开发生命周期内部署基础结构,并确保以一致的方式部署资源。 Bicep 文件是幂等的,这意味着,可以多次部署同一文件,并获得处于相同状态的相同资源类型。 可以开发一个文件来表示所需的状态,而不是开发大量的独立文件来表示更新。 例如,以下文件创建存储帐户。 如果在指定属性已存在的情况下部署此模板和存储帐户,则不会进行更改:
业务流程:无需担心有序操作的复杂性。 Azure 资源管理器协调相互依赖资源的部署,以便按正确的顺序创建它们。 如果可能,资源管理器会并行部署资源,这有助于您的部署比串行部署更快地完成。 通过一个命令部署文件,而无需使用多个强制性命令。
模块化:使用模块将 Bicep 代码分解为可管理的部分。 模块可帮助您重复使用代码并简化开发。 模块会部署一组相关资源。 需要部署这些资源时,将模块添加到 Bicep 文件。
与 Azure 服务的集成:Bicep 可与 Azure 服务(如 Azure Policy、模板规格和蓝图)集成。
预览更改:可以使用 what-if 操作在部署 Bicep 文件前预览更改。 通过 what-if 操作,可以看到要创建、更新或删除的资源,以及要更改的任何资源属性。 它会检查环境的当前状态,因此无需管理此状态。
没有要管理的状态或状态文件:Azure 存储所有状态。 你可以与他人协作,并确保你的更新按预期得到处理。
无成本和开源:由于 Bicep 是免费的,因此你无需为高级功能付费。 Microsoft 支持人员可提供相关支持。
开始使用
若要开始使用 Bicep,请执行以下操作:
安装工具。 有关详细信息,请参阅 设置 Bicep 开发和部署环境,或使用 VS Code devcontainer/Codespaces 存储库 获取预配置的创作环境。
若要将现有资源管理器模板反编译到 Bicep,请参阅 将 JSON Azure 资源管理器模板反编译到 Bicep。 可使用 Bicep Playground 并排查看 Bicep 和其等效的 JSON。
若要了解 Bicep 文件中可用的资源,请参阅 Bicep 资源参考。
你可以在 Bicep GitHub 存储库中找到 Bicep 示例。
关于语言
Bicep 不是用于编写应用程序的常规编程语言。 Bicep 文件声明 Azure 资源和资源属性,而不编写用于创建资源的编程命令序列。
若要跟踪 Bicep 工作的状态,请参阅 Bicep 项目存储库。
若要了解 Bicep,请观看以下视频:
可以使用 Bicep 而非 JSON 来开发资源管理器模板。 用于创建资源管理器模板的 JSON 语法可能比较繁琐,并需要复杂的表达式。 Bicep 语法降低了这种复杂性,改进了开发体验。 Bicep 是基于资源管理器 JSON 模板的透明抽象,不会丢失 JSON 模板功能。 在部署期间,Bicep CLI 将 Bicep 文件转换为资源管理器 JSON 模板。
资源管理器模板中有效的资源类型、API 版本和属性在 Bicep 文件中也有效。
Bicep 提供比等效的 JSON 更简洁的语法。 不使用括号表达式 [...]
。 而是可以直接调用函数,并从参数和变量获取值。 你将为每个已部署的资源指定一个符号名称,这样就可以轻松地在模板中引用该资源。
有关语法的完整比较,请参阅比较模板的 JSON 和 Bicep。
Bicep 自动管理资源之间的依赖关系。 当在其他资源声明中使用了某个资源的符号名称时,你不需要设置 dependsOn
。
Bicep 文件的结构比 JSON 模板更灵活。 可以在文件中的任意位置声明参数、变量和输出。 在 JSON 中,你必须在模板的相应部分声明所有参数、变量和输出。
获取支持
下面是针对 Azure 资源管理器 (ARM) 模板相关问题开具支持工单的步骤:
打开 Azure 门户。
选择右上角的“支持 + 故障排除”图标。
在“简要描述问题”中输入“ARM 模板”,然后选择“转到”。
在“哪个服务出现问题?”中,选择“监视和管理”下的“门户”,然后选择“下一步”。
选择一个订阅,然后选择“下一步”。
选择“ARM 模板问题”,然后选择“下一步”。
参与 Bicep
Bicep 是一个开源项目。 这意味着你可以为 Bicep 的发展做出贡献,并参与更广泛的 Bicep 社区。 贡献类型包括:
- Azure 快速入门模板。 可以将示例 Bicep 文件和 ARM 模板贡献到 Azure 快速入门模板存储库。 有关详细信息,请参阅 Azure 快速入门模板贡献指南。
- 文档。 Bicep 的文档也欢迎你的参与。 有关详细信息,请参阅我们的 参与者指南概述。
- 代码片段。 你有一个喜欢的代码片段,你认为社区会从中受益吗? 你可以将其添加到 Visual Studio Code 扩展的代码片段集合中。 有关详细信息,请参阅参与 Bicep。
- 代码更改。 如果你是开发人员,有想要在 Bicep 语言或工具中实现的想法,则可提交拉取请求。 有关详细信息,请参阅参与 Bicep。
后续步骤
- 若要开始,请参阅 快速入门:使用 Visual Studio Code 创建 Bicep 文件。
- 有关常见问题的解答,请参阅有关 Bicep 的常见问题解答。