Inicio rápido: creación e implementación de una especificación de plantilla con Bicep

En este inicio rápido se describe cómo crear e implementar una especificación de plantilla con un archivo Bicep. Una especificación de plantilla se implementa en un grupo de recursos para que los usuarios de su organización puedan implementar recursos en Microsoft Azure. Las especificaciones de plantilla permiten compartir plantillas de implementación sin necesidad de proporcionar a los usuarios acceso para cambiar el archivo Bicep. En este ejemplo de especificación de plantilla se usa un archivo Bicep para implementar una cuenta de almacenamiento.

Al crear una especificación de plantilla, el archivo Bicep se transpila en notación de objetos JavaScript (JSON). La especificación de plantilla usa JSON para implementar recursos de Azure. Actualmente, no puede usar el Microsoft Azure Portal para importar un archivo Bicep y crear un recurso de especificación de plantilla.

Requisitos previos

Creación de un archivo de Bicep

Las especificaciones de plantilla se crean a partir de un archivo Bicep local. Copie el ejemplo siguiente y guárdelo en el equipo como main.bicep. En los ejemplos se usa la ruta de acceso C:\templates\main.bicep. Puede usar otra ruta de acceso, pero deberá cambiar los comandos.

El siguiente archivo Bicep se usa en las pestañas PowerShell y CLI. La pestaña Bicep file (Archivo Bicep) usa una plantilla diferente que combina Bicep y JSON para crear e implementar una especificación de plantilla.

@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

Creación de una especificación de plantilla

La especificación de plantilla es un tipo de recurso llamado Microsoft.Resources/templateSpecs. Para crear una especificación de plantilla, use CLI de Azure, Azure PowerShell o un archivo Bicep.

Este ejemplo usa el nombre de grupo de recursos templateSpecRG. Puede usar otro nombre, pero deberá cambiar los comandos.

  1. Cree un nuevo grupo de recursos que contiene la especificación de plantilla.

    New-AzResourceGroup `
      -Name templateSpecRG `
      -Location westus2
    
  2. Cree la especificación de plantilla en ese grupo de recursos. Asigne a la nueva especificación de plantilla el nombre storageSpec.

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

Implementación de la especificación de plantilla

Use la especificación de plantilla para implementar una cuenta de almacenamiento. Este ejemplo usa el nombre de grupo de recursos storageRG. Puede usar otro nombre, pero deberá cambiar los comandos.

  1. Cree un grupo de recursos que contenga la cuenta de almacenamiento nueva.

    New-AzResourceGroup `
      -Name storageRG `
      -Location westus2
    
  2. Obtenga el id. de recurso de la especificación de plantilla.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
    
  3. Implemente la especificación de plantilla.

    New-AzResourceGroupDeployment `
      -TemplateSpecId $id `
      -ResourceGroupName storageRG
    
  4. Proporcione los parámetros exactamente como lo haría para una implementación de archivos Bicep. Vuelva a implementar la especificación de plantilla con un parámetro para el tipo de cuenta de almacenamiento.

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

Conceder acceso

Si quiere permitir que otros usuarios de su organización implementen la especificación de plantilla, debe concederles acceso de lectura. Puede asignar el rol Lector a un grupo de Microsoft Entra para el grupo de recursos que contiene las especificaciones de plantilla que quiere compartir. Para más información, consulte el Tutorial: Concesión de acceso de grupo a recursos de Azure mediante Azure PowerShell.

Creación de un archivo de Bicep

Después de crear la especificación de plantilla, ha decidido actualizar el archivo Bicep. Para continuar con los ejemplos de las pestañas PowerShell o CLI, copie el ejemplo y reemplace el archivo main.bicep.

El parámetro storageNamePrefix especifica un valor de prefijo para el nombre de la cuenta de almacenamiento. La variable storageAccountName concatena el prefijo con una cadena única.

@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

Actualización de la versión de la especificación de plantilla

En lugar de crear una nueva especificación de plantilla para la plantilla revisada, agregue una nueva versión denominada 2.0 a la especificación de plantilla existente. Los usuarios pueden elegir la versión que desean implementar.

  1. Cree una nueva versión de la especificación de plantilla.

    New-AzTemplateSpec `
      -Name storageSpec `
      -Version "2.0" `
      -ResourceGroupName templateSpecRG `
      -Location westus2 `
      -TemplateFile "C:\templates\main.bicep"
    
  2. Para implementar la nueva versión, obtenga el identificador de recurso de la versión 2.0.

    $id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
    
  3. Implemente la nueva versión y use storageNamePrefix para especificar un prefijo para el nombre de la cuenta de almacenamiento.

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

Limpieza de recursos

Para limpiar los recursos que implementó en esta guía de inicio rápido, elimine los dos grupos de recursos. Se eliminarán el grupo de recursos, las especificaciones de plantilla y las cuentas de almacenamiento.

Use Azure PowerShell o la CLI de Azure para eliminar los grupos de recursos.

Remove-AzResourceGroup -Name "templateSpecRG"

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

az group delete --name storageRG

Pasos siguientes