Guia de início rápido: criar e implantar uma especificação de modelo com o Bicep

Este guia de início rápido descreve como criar e implantar uma especificação de modelo com um arquivo Bicep. Uma especificação de modelo é implantada em um grupo de recursos para que as pessoas em sua organização possam implantar recursos no Microsoft Azure. As especificações de modelo permitem que você compartilhe modelos de implantação sem a necessidade de dar aos usuários acesso para alterar o arquivo Bicep. Este exemplo de especificação de modelo usa um arquivo Bicep para implantar uma conta de armazenamento.

Quando você cria uma especificação de modelo, o arquivo Bicep é transpilado em JavaScript Object Notation (JSON). A especificação de modelo usa JSON para implantar recursos do Azure. Atualmente, você não pode usar o portal do Microsoft Azure para importar um arquivo Bicep e criar um recurso de especificação de modelo.

Pré-requisitos

Criar arquivo Bicep

Você cria uma especificação de modelo a partir de um arquivo Bicep local. Copie o exemplo a seguir e salve-o em seu computador como main.bicep. Os exemplos usam o caminho C:\templates\main.bicep. Você pode usar um caminho diferente, mas precisará alterar os comandos.

O seguinte arquivo Bicep é usado nas guias PowerShell e CLI . A guia do arquivo Bicep usa um modelo diferente que combina Bicep e JSON para criar e implantar uma especificação de modelo.

@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

Criar especificação de modelo

A especificação do modelo é um tipo de recurso chamado Microsoft.Resources/templateSpecs. Para criar uma especificação de modelo, use a CLI do Azure, o Azure PowerShell ou um arquivo Bicep.

Este exemplo usa o nome templateSpecRGdo grupo de recursos . Você pode usar um nome diferente, mas precisará alterar os comandos.

  1. Crie um novo grupo de recursos para conter a especificação do modelo.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Crie a especificação do modelo nesse grupo de recursos. Dê à nova especificação de modelo o nome storageSpec.

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

Implantar especificação de modelo

Use a especificação do modelo para implantar uma conta de armazenamento. Este exemplo usa o nome storageRGdo grupo de recursos . Você pode usar um nome diferente, mas precisará alterar os comandos.

  1. Crie um grupo de recursos para conter a nova conta de armazenamento.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Obtenha a ID do recurso da especificação do modelo.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Implante a especificação do modelo.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Você fornece parâmetros exatamente como faria para uma implantação de arquivo Bicep. Reimplante a especificação do modelo com um parâmetro para o tipo de conta de armazenamento.

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

Conceder acesso

Se você quiser permitir que outros usuários em sua organização implantem sua especificação de modelo, será necessário conceder-lhes acesso de leitura. Você pode atribuir a função Leitor a um grupo do Microsoft Entra para o grupo de recursos que contém especificações de modelo que você deseja compartilhar. Para obter mais informações, consulte Tutorial: Conceder a um grupo acesso aos recursos do Azure usando o Azure PowerShell.

Atualizar arquivo Bicep

Depois que a especificação do modelo foi criada, você decidiu atualizar o arquivo Bicep. Para continuar com os exemplos nas guias PowerShell ou CLI , copie o exemplo e substitua o arquivo main.bicep .

O parâmetro storageNamePrefix especifica um valor de prefixo para o nome da conta de armazenamento. A storageAccountName variável concatena o prefixo com uma cadeia de caracteres exclusiva.

@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

Atualizar versão de especificação do modelo

Em vez de criar uma nova especificação de modelo para o modelo revisado, adicione uma nova versão nomeada 2.0 à especificação de modelo existente. Os usuários podem optar por implantar qualquer uma das versões.

  1. Crie uma nova versão da especificação do modelo.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. Para implantar a nova versão, obtenha o ID do recurso para a 2.0 versão.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Implante a nova versão e use o para especificar um prefixo para o storageNamePrefix nome da conta de armazenamento.

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

Clean up resources (Limpar recursos)

Para limpar os recursos implantados neste início rápido, exclua ambos os grupos de recursos. O grupo de recursos, as especificações do modelo e as contas de armazenamento serão excluídos.

Use o Azure PowerShell ou a CLI do Azure para excluir os grupos de recursos.

Remove-AzResourceGroup -Name "templateSpecRG"

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

az group delete --name storageRG

Próximos passos