다음을 통해 공유


빠른 시작: Bicep으로 템플릿 사양 만들기 및 배포

이 빠른 시작에서는 Bicep 파일로 템플릿 사양을 만들고 배포하는 방법을 설명합니다. 조직의 사용자가 Microsoft Azure에서 리소스를 배포할 수 있도록 템플릿 사양이 리소스 그룹에 배포됩니다. 템플릿 사양을 사용하면 사용자에게 Bicep 파일을 변경할 수 있는 액세스 권한을 부여하지 않고도 배포 템플릿을 공유할 수 있습니다. 이 템플릿 사양 예제에서는 Bicep 파일을 사용하여 스토리지 계정을 배포합니다.

템플릿 사양을 만들 때 Bicep 파일은 JSON(JavaScript Object Notation)으로 변환됩니다. 템플릿 사양은 JSON을 사용하여 Azure 리소스를 배포합니다. 현재 Microsoft Azure Portal을 사용하여 Bicep 파일을 가져오고 템플릿 사양 리소스를 만들 수 없습니다.

필수 조건

이두박근 파일 만들기

로컬 Bicep 파일에서 템플릿 사양을 만듭니다. 다음 샘플을 복사하여 컴퓨터에 main.bicep으로 저장합니다. 이 예에서는 C:\templates\main.bicep 경로를 사용합니다. 다른 경로를 사용할 수 있지만 명령을 변경해야 합니다.

다음 Bicep 파일은 PowerShellCLI 탭에서 사용됩니다. Bicep 파일 탭은 Bicep과 JSON을 결합하여 템플릿 사양을 만들고 배포하는 다른 템플릿을 사용합니다.

@allowed([
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GRS'
  'Standard_GZRS'
  'Standard_LRS'
  'Standard_RAGRS'
  'Standard_RAGZRS'
  'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'

@description('Location for all resources.')
param location string = resourceGroup().location

var storageAccountName = 'storage${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountNameOutput string = storageAccount.name

템플릿 사양 만들기

템플릿 사양은 Microsoft.Resources/templateSpecs라는 리소스 형식입니다. 템플릿 사양을 만들려면 Azure CLI, Azure PowerShell 또는 Bicep 파일을 사용합니다.

이 예에서는 리소스 그룹 이름 templateSpecRG를 사용합니다. 다른 이름을 사용할 수 있지만 명령을 변경해야 합니다.

  1. 템플릿 사양을 포함할 새 리소스 그룹을 만듭니다.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. 해당 리소스 그룹에서 템플릿 사양을 만듭니다. 새 템플릿 사양에 storageSpec라는 이름을 지정합니다.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "1.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    

템플릿 사양 배포

템플릿 사양을 사용하여 스토리지 계정을 배포합니다. 이 예에서는 리소스 그룹 이름 storageRG를 사용합니다. 다른 이름을 사용할 수 있지만 명령을 변경해야 합니다.

  1. 새 스토리지 계정을 포함하는 리소스 그룹을 만듭니다.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. 템플릿 사양의 리소스 ID를 가져옵니다.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. 템플릿 사양을 배포합니다.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Bicep 파일 배포와 동일하게 매개 변수를 제공합니다. 스토리지 계정 유형에 대한 매개 변수를 사용하여 템플릿 사양을 다시 배포합니다.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageAccountType Standard_GRS
    

액세스 허가

조직의 다른 사용자가 템플릿 사양을 배포하도록 하려면 해당 사용자에게 읽기 액세스 권한을 부여해야 합니다. 공유하려는 템플릿 사양이 포함된 리소스 그룹에 대한 Microsoft Entra 그룹에 읽기 권한자 역할을 할당할 수 있습니다. 자세한 내용은 자습서: Azure PowerShell을 사용하여 Azure 리소스에 대한 그룹 액세스 권한 부여를 참조하세요.

Bicep 파일 업데이트

템플릿 사양이 만들어진 후 Bicep 파일을 업데이트하기로 결정했습니다. PowerShell 또는 CLI 탭의 예를 계속하려면 샘플을 복사하고 main.bicep 파일을 바꿉니다.

매개 변수 storageNamePrefix는 스토리지 계정 이름에 대한 접두사 값을 지정합니다. storageAccountName 변수는 접두사를 고유 문자열과 연결합니다.

@allowed([
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GRS'
  'Standard_GZRS'
  'Standard_LRS'
  'Standard_RAGRS'
  'Standard_RAGZRS'
  'Standard_ZRS'
])
@description('Storage account type.')
param storageAccountType string = 'Standard_LRS'

@description('Location for all resources.')
param location string = resourceGroup().location

@maxLength(11)
@description('The storage account name prefix.')
param storageNamePrefix string = 'storage'

var storageAccountName = '${toLower(storageNamePrefix)}${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountNameOutput string = storageAccount.name

템플릿 사양 버전 업데이트

수정된 템플릿에 대한 새 템플릿 사양을 만드는 대신 기존 템플릿 사양에 2.0이라는 새 버전을 추가합니다. 사용자는 두 버전 중 하나를 배포하도록 선택할 수 있습니다.

  1. 템플릿 사양의 새 버전을 만듭니다.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. 새 버전을 배포하려면 2.0 버전에 대한 리소스 ID를 가져옵니다.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. 새 버전을 배포하고 storageNamePrefix를 사용하여 스토리지 계정 이름에 대한 접두사를 지정합니다.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG `
      -storageNamePrefix "demo"
    

리소스 정리

이 빠른 시작에서 배포한 리소스를 정리하려면 두 리소스 그룹을 모두 삭제합니다. 리소스 그룹, 템플릿 사양 및 스토리지 계정이 삭제됩니다.

Azure PowerShell 또는 Azure CLI를 사용하여 리소스 그룹을 삭제합니다.

Remove-AzResourceGroup -Name "templateSpecRG"

Remove-AzResourceGroup -Name "storageRG"
az group delete --name templateSpecRG

az group delete --name storageRG

다음 단계