Compartir a través de

什么是 Bicep?

Bicep 是一种特定于域的语言 (DSL),使用声明性语法来部署 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-04-01' = {
      name: storageAccountName
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
      properties: {
        accessTier: 'Hot'
      }
    }
    

  • 创作体验:使用 VS Code 创建 Bicep 文件时,可获得一流的创作体验。 编辑器提供丰富的类型安全、智能感知和语法验证。

  • 可反复效果:在整个开发生命周期内反复部署基础结构,并确保以一致的方式部署资源。 Bicep 文件是幂等的,这意味着,可以多次部署同一文件,并获得处于相同状态的相同资源类型。 可以开发一个文件来表示所需的状态,而无需开发大量的独立文件来表示更新。 例如,以下文件创建存储帐户。 如果你部署此模板且具有指定属性的存储帐户已存在,则不会进行更改。

    param location string = resourceGroup().location
    
    resource mystore 'Microsoft.Storage/storageAccounts@2023-04-01' = {
      name: 'mystorageaccount'
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
    }
    

  • 业务流程:无需担心有序操作的复杂性。 资源管理器会协调相互依赖的资源的部署,以按正确的顺序创建这些资源。 在可能的情况下,资源管理器将会并行部署资源,因此,其完成速度比串行部署更快。 通过一个命令部署文件,而无需使用多个强制性命令。

    Bicep 部署比较

  • 模块化:可以使用模块将 Bicep 代码分解为可管理的部分。 该模块会部署一组相关资源。 通过模块,你可以重用代码和简化开发。 需要部署这些资源时,可以随时将模块添加到 Bicep 文件。

  • 与 Azure 服务的集成:Bicep 与 Azure 服务(如 Azure Policy、模板规格和蓝图)集成。

  • 预览更改:可以使用模拟操作在部署 Bicep 文件前预览更改。 通过 What-if,你可查看将创建、更新或删除的资源,以及将更改的任何资源属性。 模拟操作会检查环境的当前状态,因此无需管理状态。

  • 无需管理状态或状态文件:所有状态均存储在 Azure 中。 用户可以相互协作,并确保按预期处理其更新。

  • 免费和开源:Bicep 是完全免费的。 无需为高级功能付费。 它也受 Azure 支持。

入门

若要开始使用 Bicep,请执行以下操作:

  1. 安装工具。 请参阅设置 Bicep 开发和部署环境。 或者,可使用 VS Code 开发容器/Codespaces 存储库获取预配置的创作环境。
  2. 完成此快速入门

若要将现有 ARM 模板反向编译为 Bicep,请参阅将 ARM 模板 JSON 反向编译为 Bicep。 可使用 Bicep Playground 并排查看 Bicep 和等效的 JSON。

若要了解 Bicep 文件中可用的资源,请参阅 Bicep 资源参考

有关 Bicep 示例,请参阅 Bicep GitHub 存储库

关于语言

Bicep 不是用于编写应用程序的常规编程语言。 Bicep 文件声明 Azure 资源和资源属性,而不编写用于创建资源的编程命令序列。

若要跟踪 Bicep 工作的状态,请参阅 Bicep 项目存储库。 可以使用 Bicep 而非 JSON 来开发 Azure 资源管理器模板(ARM 模板)。 用于创建 ARM 模板的 JSON 语法可能比较繁琐,需要使用复杂的表达式。 Bicep 语法降低了这种复杂性,改进了开发体验。 Bicep 是基于 ARM 模板 JSON 的透明抽象,不会丢失任何 JSON 模板功能。 在部署过程中,Bicep CLI 将 Bicep 文件转换为 ARM 模板 JSON。

在 ARM 模板中有效的资源类型、API 版本和属性在 Bicep 文件中有效。

与等效的 JSON 相比,Bicep 提供了更简单且更简洁的语法。 不使用括号表达式 [...]。 而是可以直接调用函数,并从参数和变量获取值。 你将为每个已部署的资源指定一个符号名称,这样就可以轻松地在模板中引用该资源。

有关语法的完整比较,请参阅比较模板的 JSON 和 Bicep

Bicep 自动管理资源之间的依赖关系。 当在其他资源声明中使用了某个资源的符号名称时,你不需要设置 dependsOn

Bicep 文件的结构比 JSON 模板更灵活。 可以在文件中的任意位置声明参数、变量和输出。 在 JSON 中,你必须在模板的相应部分声明所有参数、变量和输出。

后续步骤

快速入门着手。

有关常见问题的解答,请参阅有关 Bicep 的常见问题解答