什么是 Bicep?

已完成

现在,你的团队已了解 Azure 资源管理器的工作原理,并且你决定使用 ARM 模板进行资源预配。 你了解可以通过两种不同的方式编写 ARM 模板:使用 JSON 和使用 Bicep。 你想要了解有关 Bicep 模板的详细信息,以便可以做出有关要使用哪种语言的明智决策。

在本单元中,你将了解 Bicep 模板语言及其为模板创作提供的好处。

Bicep 语言

Bicep 是一种资源管理器模板语言,用于以声明方式部署 Azure 资源。 Bicep 是针对特定方案或“域”设计的,这使它成为一种特定于域的语言。 Bicep 不应用作编写应用程序的标准编程语言。 Bicep 仅用于创建资源管理器模板。 无论是否体验使用其他编程语言,Bicep 都易于理解且易于学习。 所有资源类型、API 版本和属性在 Bicep 模板中都有效。

注意

如果你之前已了解如何使用 JSON 模板,则你可能会注意到,Bicep 简化了模板创建体验。 它提供更易于理解的语法,更好地支持模块化和可重用代码,并改进了类型安全性。 创建 JSON ARM 模板需要复杂的表达式,并且最终的结果可能是详细的。

Bicep 的优点

Bicep 为模板创作提供了许多通过 JSON 的改进,包括:

  • 更简单的语法:Bicep 为编写模板提供了更简单的语法。 可以直接引用参数和变量,而无需使用复杂的函数。 字符串内插用于替换串联来合并名称和其他项的值。 可以使用资源的符号名称(而不是复杂的引用语句)直接引用资源的属性。 这些语法改进有助于创作和读取 Bicep 模板。

  • 模块:可以将复杂模板部署分解为更小的模块文件,并在主模板中引用它们。 这些模块提供更轻松的管理和更大的可重用性。 甚至可与你的团队共享模块。

  • 自动依赖项管理:在大多数情况下,Bicep 会自动检测资源之间的依赖关系。 此过程将删除模板创作中涉及的一些工作。

  • 类型验证和 IntelliSense:适用于 Visual Studio Code 的 Bicep 扩展为所有 Azure 资源类型 API 定义提供丰富的验证和 IntelliSense。 此功能有助于提供更轻松的创作体验。

请查看下面定义 Azure 存储帐户的 Bicep 模板的示例。 模板自动生成存储帐户的名称。 完成部署后,资源 ID 将作为输出返回到执行模板的用户。

param location string = resourceGroup().location
param namePrefix string = 'storage'

var storageAccountName = '${namePrefix}${uniqueString(resourceGroup().id)}'
var storageAccountSku = 'Standard_RAGRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: storageAccountName
  location: location
  kind: 'StorageV2'
  sku: {
    name: storageAccountSku
  }
  properties: {
    accessTier: 'Hot'
    supportsHttpsTrafficOnly: true
  }
}

output storageAccountId string = storageAccount.id