Bicep 的工作原理

已完成

你已了解 Bicep 模板语言及其在模板创作方面的优势。 在开始编写 Bicep 模板以预配资源之前,需要详细了解 Bicep 的工作原理。

在本单元中,你将了解 Bicep 如何与 Azure 资源管理器配合使用。

Bicep 部署

在上一单元中,你了解了 Bicep 是一种特定于域的语言,这意味着它是专为特定方案或“域”设计的。 Bicep 旨在方便部署和配置 Azure 资源。

将资源或一系列资源部署到 Azure 时,会将 Bicep 模板提交到资源管理器,这仍然需要 JSON 模板。 Bicep 中内置的工具可将 Bicep 模板转换为 JSON 模板。 此过程称为“转译”,它实质上将 ARM 模板视为中间语言。 提交部署时会自动进行转换,也可以手动进行转换。

Diagram that shows the workflow from a template author, a Bicep template, an emitted JSON template, and a deployment to Azure.

注意

转译是将使用一种语言编写的源代码转换为另一种语言的过程。

最新版本的 Azure CLI 和 Azure PowerShell 具有内置的 Bicep 支持。 可以使用相同的部署命令来部署 Bicep 和 JSON 模板。 例如,以下命令将 Bicep 模板部署到名为 storage-resource-group 的资源组:

az deployment group create \
  --template-file main.bicep \
  --resource-group storage-resource-group

提交此部署后,资源管理器会查看 Azure 中已部署的资源。 然后,它会查看你正在尝试部署的资源,并设置一系列步骤来实现此状态。 所有这些活动都涉及调用资源管理器 API。

可以使用 bicep build 命令查看提交到资源管理器的 JSON 模板。 下一个示例将 Bicep 模板转换为其相应的 JSON 模板:

bicep build main.bicep

比较 JSON 和 Bicep

Bicep 提供了要在编写模板时使用的更简单语法。 查看以下两个模板的示例。 左侧的模板为 Bicep 模板。 右侧的模板为 JSON 模板。

Screenshot that compares Bicep code on the left and the corresponding JSON code on the right.

请注意,Bicep 模板包含的代码更少。 语法更易于读取和理解,在右侧的 JSON 模板中没有复杂的表达式。

注意

若要并排查看等效的 JSON 和 Bicep 文件,请参阅 Bicep 操场