快速入門:使用 Bicep 建立及部署範本規格

本快速入門會說明如何使用 Bicep 檔案建立及部署範本規格。 範本規格會部署到資源群組,讓組織中的人員可在 Microsoft Azure 中部署資源。 範本規格可讓您共用部署範本,卻不必為使用者提供變更 Bicep 檔案的存取權。 此範本規格範例會使用 Bicep 檔案來部署儲存體帳戶。

當您建立範本規格時,Bicep 檔案會轉譯成 JavaScript 物件標記法 (JSON)。 範本規格會使用 JSON 部署 Azure 資源。 目前尚無法使用 Microsoft Azure 入口網站匯入 Bicep 檔案並建立範本規格資源。

必要條件

建立 Bicep 檔案

您可以從本機 Bicep 檔案建立範本規格。 複製下列範例,並在您的電腦儲存為 main.bicep。 這些範例使用 C:\templates\main.bicep 路徑。 您可以使用不同的路徑,但如此即必須變更命令。

下列 Bicep 檔案用於 [PowerShell] 和 [CLI] 索引標籤中。 [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@2022-09-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 = (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 = (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

下一步