快速入门:使用 Visual Studio Code 创建 Bicep 文件

本快速入门逐步讲解使用 Visual Studio Code 创建 Bicep 文件的步骤。 你将创建一个存储帐户和一个虚拟网络。 你还将了解 Bicep 扩展如何通过提供类型安全性、语法验证和自动完成来简化开发。

Visual Studio 也支持类似的创作体验。 请参阅快速入门:使用 Visual Studio 创建 Bicep 文件

先决条件

如果没有 Azure 订阅,可在开始前创建一个试用帐户

若要设置环境以进行 Bicep 开发,请参阅安装 Bicep 工具。 完成这些步骤后,你将获得 Visual Studio CodeBicep 扩展。 你还将具备最新的Azure CLI 或最新的 Azure PowerShell 模块

添加资源代码片段

包含 Bicep 扩展的 VS Code 通过提供预定义的代码片段来简化开发。 在本快速入门中,你将添加用于创建虚拟网络的代码片段。

启动 Visual Studio Code 并创建名为 main.bicep 的新文件。

main.bicep 中,键入 vnet,从列表中选择 res-vnet,然后按 [TAB] 或 [ENTER]。

Screenshot of adding snippet for virtual network.

提示

如果在 VS Code 中没有看到这些 Intellisense 选项,请确保已按照先决条件中的规定安装了 Bicep 扩展。 如果已安装该扩展,请在打开 Bicep 文件后给 Bicep 语言服务一些时间来启动。 它通常启动很快,但在启动之前不会提供 Intellisense 选项。 右下角的通知指示服务正在启动。 当该通知消失时,服务正在运行。

Bicep 文件现在包含以下代码:

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: 'name'
  location: location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

在此代码片段中,可以找到定义虚拟网络所需的所有值。 你可能会注意到两个波浪下划线。 黄色波浪下划线表示与过时 API 版本相关的警告,而红色波浪下划线表示缺少参数定义导致的错误。

删除 @2019-11-01,并将其替换为 @。 选择最新的 API 版本。

Screenshot of updating API version.

在下一节中,你将修复缺少的参数定义错误。

可以根据自己的要求修改此代码。 例如,name 并不是很适合用作虚拟网络的名称。 将 name 属性更改为 examplevnet

name: 'exampleVNet'

添加参数

上一节中添加的代码片段缺少参数定义。

在文件的顶部,添加:

param location

location 后面添加空格时,可以发现 Intellisense 提供了该参数可用的数据类型。 选择“string”。

Screenshot of adding string type to parameter.

为参数提供默认值:

param location string = resourceGroup().location

有关在默认值中使用的函数的详细信息,请参阅 resourceGroup()

为具有默认值的存储帐户名称添加另一个参数:

param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

有关详细信息,请参阅内插uniqueString()

此参数可以正常工作,但存储帐户对名称的长度施加了限制。 该名称必须至少包含三个字符,并且不能超过 24 个字符。 可以通过为参数添加修饰器来指定这些要求。

在参数上方添加一行,然后键入 @。 你将看到可用的修饰器。 可以看到,minLength 和 maxLength 都有修饰器 。

Screenshot of adding decorators to parameter.

添加修饰器并指定字符限制:

@minLength(3)
@maxLength(24)
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

还可以添加参数的说明。 请包含相应的信息,帮助部署 Bicep 文件的人员了解要提供哪个值。

@minLength(3)
@maxLength(24)
@description('Provide a name for the storage account. Use only lower case letters and numbers. The name must be unique across Azure.')
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

你的参数可供使用。

添加资源

你将使用 intellisense 来设置值,而不是使用代码片段来定义存储帐户。 Intellisense 使此步骤比手动键入值更容易。

若要定义资源,请使用关键字 resource。 在虚拟网络下方,键入 resource exampleStorage:

resource exampleStorage

exampleStorage 是要部署的资源的符号名称。 可以使用此名称引用 Bicep 文件其他部分中的资源。

在该符号名称的后面添加空格时,会显示资源类型的列表。 不断键入 storageacc,直到可以从可用选项中选择它。

Screenshot of selecting storage accounts for resource type.

选择“Microsoft.Storage/storageAccounts”后,你将看到可用的 API 版本。 选择“最新版本”。 对于以下屏幕截图,为 2023-01-01

Screenshot of select API version for resource type.

在资源类型的单引号后面,添加 = 和一个空格。 你将看到用于为资源添加属性的选项。 选择“required-properties”。

Screenshot of adding required properties.

此选项用于添加在部署时所需的所有资源类型属性。 选择此选项后,存储帐户具有以下属性:

resource exampleStorage 'Microsoft.Storage/storageAccounts@2023-01-01' =  {
  name:
  location:
  sku: {
    name:
  }
  kind:
}

即将完成。 只需为这些属性提供值。

同样,Intellisense 可为你提供帮助。 将 name 设置为 storageAccountName,这是包含存储帐户名称的参数。 对于 location,将其设置为 location,这是之前创建的参数。 添加 sku.namekind 时,intellisense 会显示有效选项。

完成后,你将获得:

@minLength(3)
@maxLength(24)
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: 'exampleVNet'
  location: resourceGroup().location
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

resource exampleStorage 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  name: storageAccountName
  location: 'chinaeast'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

有关 Bicep 语法的详细信息,请参阅 Bicep 结构

可视化资源

可以查看文件中资源的表示形式。

在右上角,选择可视化工具按钮以打开 Bicep 可视化工具。

Screenshot of Bicep Visualizer.

可视化工具显示 Bicep 文件中定义的资源以及资源依赖关系信息。 本快速入门中定义的两个资源不存在依赖关系,因此你在这两个资源之间看不到连接器。

Screenshot of Bicep Visualizer diagram.

部署 Bicep 文件

  1. 右键单击 VS Code 中的 Bicep 文件,然后选择“部署 Bicep 文件”。

    Screenshot of Deploy Bicep file.

  2. 在“请输入部署的名称”文本框中,键入 deployStorageAndVNet,然后按 [ENTER]

  3. 在顶部的“选择资源组”列表框中,选择“创建新资源组”

  4. 输入 exampleRG 作为资源组名称,然后按 [ENTER]

  5. 选择资源组的位置,选择“中国东部”或所选位置,然后按 [Enter]。

  6. 在“选择参数文件”中,选择“无”。

    Screenshot of Select parameter file.

创建资源需要花费片刻时间。 有关详细信息,请参阅使用 Visual Studio Code 部署 Bicep 文件

可以使用 Azure CLI 或 Azure PowerShell 部署 Bicep 文件:

az group create --name exampleRG --location chinaeast

az deployment group create --resource-group exampleRG --template-file main.bicep --parameters storageAccountName=uniquename

部署完成后,应会看到一条指出部署成功的消息。

清理资源

如果不再需要本文中创建的 Azure 资源,请使用 Azure CLI 或 Azure PowerShell 模块删除快速入门资源组。

az group delete --name exampleRG