什么是 Bicep?

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 文件是幂等的,这意味着,可以多次部署同一文件,并获得处于相同状态的相同资源类型。 可以开发一个文件来表示所需的状态,而不是开发大量的独立文件来表示更新。 例如,以下文件创建存储帐户。 如果在指定属性已存在的情况下部署此模板和存储帐户,则不会进行更改:

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

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

    将 Bicep 文件和基础结构之间的部署作为不在模板中的代码进行比较的图表。

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

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

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

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

  • 无成本和开放源代码:由于 Bicep 完全免费,因此无需为高级功能付费。 它还受 Microsoft 支持部门的支持。

入门

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

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

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

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

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

关于语言

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

若要跟踪 Bicep 工作的状态,请参阅 Bicep 项目存储库

可以使用 Bicep 而非 JSON 来开发资源管理器模板。 用于创建资源管理器模板的 JSON 语法可能比较繁琐,并需要复杂的表达式。 Bicep 语法降低了这种复杂性,改进了开发体验。 Bicep 是基于资源管理器 JSON 模板的透明抽象,不会丢失 JSON 模板功能。 在部署期间,Bicep CLI 将 Bicep 文件转换为资源管理器 JSON 模板。

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

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

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

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

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

获取支持

下面是针对 Azure 资源管理器 (ARM) 模板相关问题开具支持工单的步骤:

  1. 打开 Azure 门户

  2. 选择右上角的“支持 + 故障排除”图标

  3. 在“简要描述问题”中输入“ARM 模板”,然后选择“转到”

  4. 在“哪个服务出现问题?”中,选择“监视和管理”下的“门户”,然后选择“下一步”

  5. 选择一个订阅,然后选择“下一步”。

  6. 选择“ARM 模板问题”,然后选择“下一步”

    请求 ARM 模板支持的屏幕截图。

后续步骤

快速入门着手。

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