Inicio rápido: Creación de plantillas de archivos de Bicep con Visual Studio Code

Este inicio rápido le guiará por los pasos necesarios para crear un archivo Bicep con Visual Studio Code. Cree una cuenta de almacenamiento y una red virtual. También aprenderá cómo la extensión de Bicep simplifica el desarrollo al proporcionar seguridad de tipos, validación de sintaxis y autocompletar.

También se admite una experiencia de creación similar en Visual Studio. Consulte Inicio rápido: Creación de archivos de Bicep con Visual Studio.

Prerrequisitos

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

A fin de configurar el entorno para el desarrollo de Bicep, consulte Instalación de las herramientas de Bicep. Después de completar esos pasos, tiene Visual Studio Code y la Extensión Bicep. También tendrá la versión más reciente de la CLI de Azure o la versión más reciente del módulo de Azure PowerShell.

Adición del fragmento de código de un recurso

VS Code con la extensión de Bicep simplifica el desarrollo proporcionando fragmentos predefinidos. En este inicio rápido, agregará un fragmento de código que crea una red virtual.

Inicie Visual Studio Code y cree un nuevo archivo denominado main.bicep.

En main.bicep, escriba vnet y seleccione res-vnet en la lista y presione [TAB] o [ENTRAR].

Screenshot of adding snippet for virtual network.

Sugerencia

Si no ve esas opciones de IntelliSense en VS Code, asegúrese de que ha instalado la extensión Bicep tal como se especifica en Requisitos previos. Si ya ha instalado la extensión, dé un tiempo al servicio de lenguaje Bicep para que se inicie después de abrir el archivo Bicep. Normalmente se inicia rápidamente, pero no tiene opciones de IntelliSense hasta que se inicia. Una notificación en la esquina inferior derecha le indica que el servicio se está iniciando. Cuando esa notificación desaparece, quiere decir que el servicio se está ejecutando.

El archivo Bicep ahora contiene el código siguiente:

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'
        }
      }
    ]
  }
}

Dentro de este fragmento de código, encontrará todos los valores necesarios para definir una red virtual. Es posible que observe dos subrayados curdos. Un amarillo denota una advertencia relacionada con una versión obsoleta de la API, mientras que un subrayado rojo señala un error causado por una definición de parámetro que falta.

Quite @2019-11-01y reemplácelo por @. Seleccione la versión más reciente de la API.

Screenshot of updating API version.

Corregirá el error de definición de parámetro que falta en la sección siguiente.

También puede modificarlo para que cumpla sus requisitos. Por ejemplo, name no es un buen nombre para la red virtual. Cambie la propiedad name a examplevnet.

name: 'exampleVNet'

Adición del parámetro

El fragmento de código que ha agregado en la última sección pierde una definición de parámetro.

En la parte superior del archivo, agregue:

param location

Al agregar un espacio después de ubicación, observe que IntelliSense ofrece los tipos de datos que están disponibles para el parámetro. Seleccione string.

Screenshot of adding string type to parameter.

Asigne al parámetro un valor predeterminado:

param location string = resourceGroup().location

Para obtener más información acerca de la función usada en el valor predeterminado, consulte resourceGroup().

Agregue otro parámetro para el nombre de la cuenta de almacenamiento con un valor predeterminado:

param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

Para obtener más información, consulte Interpolación y uniqueString().

Este parámetro funciona bien, pero las cuentas de almacenamiento tienen límites para la longitud del nombre. El nombre debe tener al menos tres caracteres y no más de 24 caracteres. Para especificar esos requisitos, puede agregar decoradores al parámetro.

Agregue una línea arriba del parámetro y escriba @ . Se mostrarán los decoradores disponibles. Observe que hay decoradores para minLength y maxLength.

Screenshot of adding decorators to parameter.

Agregue ambos decoradores y especifique los límites de caracteres:

@minLength(3)
@maxLength(24)
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

También puede agregar una descripción para el parámetro. Incluya información para que las personas que implementarán el archivo Bicep comprendan el valor que se debe especificar.

@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 storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

Los parámetros están listos para usarse.

Agregar recurso

En lugar de usar un fragmento de código para definir la cuenta de almacenamiento, se usa IntelliSense para establecer los valores. Gracias a Intellisense, este paso es más sencillo que tener que escribir manualmente los valores.

Para definir un recurso, use la palabra clave resource. Debajo de la red virtual, escriba resource exampleStorage:

resource exampleStorage

exampleStorage es un nombre simbólico para el recurso que se va a implementar. Puede usar el nombre para hacer referencia al recurso en otras partes del archivo de Bicep.

Al agregar un espacio después del nombre simbólico, se muestra una lista de tipos de recursos. Siga escribiendo storageacc hasta que pueda seleccionarla en las opciones disponibles.

Screenshot of selecting storage accounts for resource type.

Después de seleccionar Microsoft.Storage/storageAccounts, se muestran las versiones de API disponibles. Seleccione la versión más reciente. Para la captura de pantalla siguiente, es 2023-01-01.

Screenshot of select API version for resource type.

Después de la comilla simple del tipo de recurso, agregue = y un espacio. Se mostrarán las opciones para agregar propiedades al recurso. Seleccione required-properties.

Screenshot of adding required properties.

Esta opción agrega todas las propiedades del tipo de recurso que son obligatorias para la implementación. Después de seleccionar esta opción, la cuenta de almacenamiento tendrá las siguientes propiedades:

resource exampleStorage 'Microsoft.Storage/storageAccounts@2023-01-01' =  {
  name:
  location:
  sku: {
    name:
  }
  kind:
}

Casi ha terminado. Solo tiene que proporcionar valores para esas propiedades.

De nuevo, IntelliSense le puede ayudar. Defina name como storageAccountName, que es el parámetro que contiene un nombre para la cuenta de almacenamiento. Para location, establézcalo enlocation, que es un parámetro que ha creado anteriormente. Al agregar sku.name y kind, intellisense presenta las opciones válidas.

Cuando haya terminado, tiene lo siguiente:

@minLength(3)
@maxLength(24)
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
  name: 'exampleVNet'
  location: resourceGroup().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-02-01' = {
  name: storageAccountName
  location: 'eastus'
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Para obtener más información sobre la sintaxis de Bicep, consulte Estructura de Bicep.

Visualización de recursos

Puede ver una representación de los recursos en el archivo.

En la esquina superior derecha, seleccione el botón del visualizador para abrir el visualizador de Bicep.

Screenshot of Bicep Visualizer.

El visualizador muestra los recursos definidos en el archivo Bicep con la información sobre las dependencias entre recursos. Los dos recursos que se definieron en este inicio rápido no tienen una relación de dependencia, por lo que no verá un conector entre ellos.

Screenshot of Bicep Visualizer diagram.

Implementación del archivo de Bicep

  1. Haga clic con el botón derecho en el archivo de Bicep dentro de VS Code y seleccione Implementar archivo de Bicep.

    Screenshot of Deploy Bicep file.

  2. En el cuadro de texto Escriba el nombre de la implementación, escriba deployStorageAndVNety presione [ENTRAR].

  3. En el cuadro de lista Seleccionar grupo de recursos de la parte superior, seleccione Crear nuevo grupo de recursos.

  4. Escriba exampleRG como nombre del grupo de recursos y presione [ENTRAR].

  5. Seleccione una ubicación para el grupo de recursos, seleccione Centro de EE. UU o una ubicación de su elección y presione [ENTRAR].

  6. En Seleccionar un archivo de parámetros, seleccione Ninguno.

    Screenshot of Select parameter file.

La creación del recurso tarda algunos minutos. Para obtener más información, consulte Implementación de archivos de Bicep con Visual Studio Code.

También puede usar la CLI de Azure o Azure PowerShell para implementar el archivo Bicep:

az group create --name exampleRG --location eastus

az deployment group create --resource-group exampleRG --template-file main.bicep --parameters storageAccountName=uniquename

Una vez finalizada la implementación, debería mostrarse un mensaje indicando que la implementación se realizó correctamente.

Limpieza de recursos

Cuando los recursos de Azure dejen de ser necesarios, use la CLI de Azure o el módulo de Azure PowerShell para eliminar el grupo de recursos y el recurso del servidor del inicio rápido.

az group delete --name exampleRG

Pasos siguientes