你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

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

先决条件

添加资源代码片段

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

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

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

屏幕截图显示如何为虚拟网络添加代码片段。

提示

如果未在 Visual Studio 中看到这些 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'
        }
      }
    ]
  }
}

此代码片段包含用于定义虚拟网络的所有值。 不过,你可以根据自己的需求修改此代码。 例如,name 并不是很适合用作虚拟网络的名称。 将 name 属性更改为 exampleVnet

name: 'exampleVnet'

请注意,location 具有红色的大括号下划线。 这表明有问题。 将光标悬停在 location 上。 错误消息为:当前上下文中不存在名称“location”。我们将在下一部分中创建位置参数。

添加参数

现在,我们将为存储帐户名称和位置添加两个参数。 在文件顶部,添加:

param storageName

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

屏幕截图显示如何将字符串类型添加到参数。

你的参数如下:

param storageName string

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

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

屏幕截图显示如何将修饰器添加到参数。

如下所示添加这两个修饰器并指定字符限制:

@minLength(3)
@maxLength(24)
param storageName string

还可以添加参数的说明。 请包含相应的信息,帮助部署 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 storageName string

存储帐户名称参数可供使用。

添加另一个位置参数:

param location string = resourceGroup().location

添加资源

我们将使用 Intellisense 来设置值,而不是使用代码片段来定义存储帐户。 与手动键入值相比,使用 Intellisense 完成此步骤要方便得多。

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

resource exampleStorage

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

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

屏幕截图显示如何选择资源类型的存储帐户。

选择“Microsoft.Storage/storageAccounts”后,你将看到可用的 API 版本。 选择“2021-09-01”或最新的 API 版本。 建议使用最新 API 版本。

屏幕截图显示如何选择资源类型的 API 版本。

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

屏幕截图显示如何添加所需属性。

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

resource exampleStorage 'Microsoft.Storage/storageAccounts@2021-09-01' = {
	name: 1
	location: 2
	sku: {
		name: 3
	}
	kind: 4
}

代码中有四个占位符。 使用 [TAB] 进行浏览并输入值。 同样,Intellisense 可为你提供帮助。 将 name 设置为 storageName,这是包含存储帐户名称的参数。 对于 location,请将其设置为 location。 添加 SKU 名称和类型时,Intellisense 会显示有效选项。

完成后,你的 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 storageName string
param location string = resourceGroup().location

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: storageName
  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'
        }
      }
    ]
  }
}

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

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

部署 Bicep 文件

尚无法通过 Visual Studio 完成 Bicep 文件部署。 可以使用 Azure CLI 或 Azure PowerShell 部署 Bicep 文件:

az group create --name exampleRG --location eastus

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

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

清理资源

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

az group delete --name exampleRG

后续步骤