빠른 시작: Visual Studio에서 Bicep 파일 만들기

이 빠른 시작은 Visual Studio에서 Bicep 파일을 만드는 단계를 안내합니다. 스토리지 계정 및 가상 네트워크를 만듭니다. 또한 Bicep 확장을 통해 형식 안전성, 구문 유효성 검사 및 자동 완성을 제공하여 개발을 간소화하는 방법을 알아봅니다.

비슷한 작성 환경이 Visual Studio Code에서도 지원됩니다. 빠른 시작: Visual Studio Code를 사용하여 Bicep 파일 만들기를 참조하세요.

필수 조건

리소스 코드 조각 추가

Visual Studio를 시작하고 main.bicep라는 새 파일을 만듭니다.

Bicep 확장이 포함된 Visual Studio는 미리 정의된 코드 조각을 제공하여 개발을 간소화합니다. 이 빠른 시작에서는 가상 네트워크를 만드는 코드 조각을 추가합니다.

main.bicepvnet를 입력합니다. 목록에서 res-vnet을 선택한 다음, [TAB] 또는 [ENTER] 키를 누릅니다.

Screenshot of adding snippet for virtual network.

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'

위치에 빨간색 곱슬 밑줄이 표시되었습니다. 문제가 있다는 뜻입니다. 커서로 위치를 가리킵니다. 이름 "위치"가 현재 컨텍스트에 없습니다라는 오류 메시지가 표시됩니다. 다음 섹션에서 위치 매개 변수를 만들겠습니다.

매개 변수 추가

이제 스토리지 계정 이름과 위치에 대한 두 가지 매개 변수를 추가하겠습니다. 다음을 파일 위쪽에 추가합니다.

param storageName

storageName 뒤에 공백을 추가하면 Intellisense는 매개 변수에 사용할 수 있는 데이터 형식을 제안합니다. 문자열을 선택합니다.

Screenshot of adding string type to parameter.

다음 매개 변수를 사용합니다.

param storageName string

이 매개 변수는 정상적으로 작동하지만 스토리지 계정에는 이름 길이의 제한이 있습니다. 이름에는 3~24자를 사용해야 합니다. 매개 변수에 데코레이터를 추가하여 관련 요구 사항을 지정할 수 있습니다.

매개 변수 위에 줄을 추가하고 @을 입력합니다. 사용 가능한 데코레이터가 표시됩니다. minLengthmaxLength의 데코레이터가 둘 다 있습니다.

Screenshot of adding decorators to parameter.

데코레이터를 둘 다 추가하고 아래와 같이 문자 제한을 지정합니다.

@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 파일의 다른 부분에 있는 리소스를 참조할 수 있습니다.

기호 이름 뒤에 공백을 추가하면 리소스 종류 목록이 표시됩니다. 사용 가능한 옵션에서 선택할 수 있을 때까지 스토리지를 계속 입력합니다.

Screenshot of selecting storage accounts for resource type.

Microsoft.Storage/storageAccounts를 선택한 후 사용 가능한 API 버전이 제공됩니다. 2021-09-01 또는 최신 API 버전을 선택합니다. 최신 API 버전을 사용하는 것이 좋습니다.

Screenshot of selecting API version for resource type.

리소스 종류의 작은따옴표 뒤에 = 및 공백을 추가합니다. 리소스에 속성을 추가할 수 있는 옵션이 제공됩니다. required-properties를 선택합니다.

Screenshot of adding required properties.

이 옵션은 배포에 필요한 리소스 종류의 모든 속성을 추가합니다. 이 옵션을 선택하면 스토리지 계정에 다음 속성이 포함됩니다.

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

코드에는 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@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 파일 배포

Bicep 파일 배포는 아직 Visual Studio에서 수행할 수 없습니다. 다음과 같이 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

다음 단계