Краткое руководство: Создание файлов Bicep с помощью Visual Studio

В этом кратком руководстве описаны шаги по созданию файла Bicep в Visual Studio. Вы создаете учетную запись хранения и виртуальную сеть. Вы также узнаете, как расширение Bicep упрощает разработку, предоставляя безопасность типов, проверку синтаксиса и автозавершение.

Аналогичные возможности разработки также поддерживаются в Visual Studio Code. См. раздел Quickstart: создание файлов Bicep с помощью Visual Studio Code.

Предпосылки

Замечание

Чтобы обеспечить доступность всех диагностик, созданных Bicep (ошибки, предупреждения и информационные сообщения) как собственных диагностик MSBuild, настройте BicepTreatInfoAsWarnings в файле проекта. Рассмотрим пример.

<Project Sdk="Microsoft.Build.NoTargets">
  <PropertyGroup>
    <TargetFramework>net472</TargetFramework>
    <BicepTreatInfoAsWarnings>true</BicepTreatInfoAsWarnings>
  </PropertyGroup>
</Project>

Добавление фрагмента ресурсов

Запустите Visual Studio и создайте файл с именем main.bicep.

Visual Studio с расширением Bicep упрощает разработку, предоставляя предопределенные фрагменты кода. В этом кратком руководстве вы добавите фрагмент кода, который создает виртуальную сеть.

В main.bicep введите виртуальную сеть. Выберите res-vnet из списка, а затем нажмите клавишу [TAB] или [ВВОД].

Снимок экрана: добавление кода для виртуальной сети.

Подсказка

Если эти параметры intellisense не отображаются в Visual Studio, убедитесь, что вы установили расширение Bicep, как указано в Prerequisites. Если вы установили расширение, предоставьте службе языка Bicep некоторое время, чтобы начать работу после открытия файла Bicep. Обычно он запускается быстро, но подсказки intellisense недоступны до его запуска.

Теперь файл Bicep содержит следующий код:

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2025-01-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" не существует в текущем контексте. Мы создадим параметр расположения в следующем разделе.

Добавление параметров

Теперь мы добавим два параметра для имени учетной записи хранения и расположения. В верхней части файла добавьте:

param storageName

При добавлении пространства после имени хранилища обратите внимание, что intellisense предлагает типы данных, доступные для параметра. Выберите строковое значение.

Снимок экрана: добавление строкового типа к параметру.

У вас есть следующий параметр:

param storageName string

Этот параметр работает нормально, однако в отношении учетных записей хранения предусматриваются ограничения по длине имени. Имя должно содержать не менее трех символов и не более 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. В вашей виртуальной сети введите ресурс exampleStorage.

resource exampleStorage

exampleStorage — это символическое имя развертываемого ресурса. Это имя можно использовать для ссылки на ресурс в других частях файла Bicep.

При добавлении пробела после символического имени отобразится список типов ресурсов. Продолжайте вводить хранилище , пока не сможете выбрать его из доступных параметров.

Снимок экрана: выбор учетных записей хранения для типа ресурса.

После выбора Майкрософт.Storage/storageAccounts отображаются доступные версии API. Выберите 2021-09-01 или последнюю версию API. Рекомендуется использовать последнюю версию API.

Снимок экрана: выбор версии API для типа ресурса.

После одинарной кавычки, указанной для типа ресурса, добавьте = и пробел. Вам предлагаются параметры для добавления свойств в ресурс. Выберите обязательные свойства.

Снимок экрана: добавление обязательных свойств.

Этот параметр добавляет все свойства для типа ресурса, требуемые для его развертывания. После выбора этого параметра ваша учетная запись хранения будет иметь следующие свойства.

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

В коде есть четыре заполнителя. Используйте [TAB], чтобы пройти их и ввести значения. Опять же, intellisense помогает вам. Установите значение name для storageName – параметра, содержащего имя учетной записи хранения. Для locationпараметра , задайте для него значение location. При добавлении имени и типа SKU intellisense предоставляет допустимые параметры.

Закончив работу, у вас есть следующие возможности:

@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@2025-01-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@2025-06-01' = {
  name: storageName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Дополнительные сведения о синтаксисе Bicep см. в разделе Bicep структура.

Разверните файл Bicep

Развертывание файлов Bicep пока невозможно выполнять непосредственно из Visual Studio. Вы можете развернуть файл Bicep с помощью Azure CLI или Azure PowerShell:

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

Дальнейшие действия

Создавайте файлы Bicep с помощью Visual Studio Code