Guida introduttiva: Creare file Bicep con Visual Studio Code

Questa guida di avvio rapido illustra i passaggi per creare un file Bicep con Visual Studio Code. Vengono creati un account di archiviazione e una rete virtuale. Si apprende anche come l'estensione Bicep semplifica lo sviluppo fornendo sicurezza dei tipi, convalida della sintassi e completamento automatico.

Un'esperienza simile di creazione è supportata anche in Visual Studio. Vedere Guida introduttiva: Creare file Bicep con Visual Studio.

Prerequisiti

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Per configurare l'ambiente per lo sviluppo Bicep, vedere Installare gli strumenti Bicep. Dopo aver completato questi passaggi, si dispone di Visual Studio Code e dell'estensione Bicep. È disponibile anche la versione più recente dell'interfaccia della riga di comando di Azure o la versione più recente modulo di Azure PowerShell.

Aggiungere un frammento di risorsa

Visual Studio Code con l'estensione Bicep semplifica lo sviluppo fornendo frammenti predefiniti. In questa guida di avviamento rapido viene aggiunto un frammento di codice che crea una rete virtuale.

Avviare Visual Studio Code e creare un nuovo file denominato main.bicep.

In main.bicep, digitare vnet, quindi selezionare res-vnet dall'elenco e quindi premere [TAB] o [INVIO].

Screenshot of adding snippet for virtual network.

Suggerimento

Se queste opzioni di IntelliSense non vengono visualizzate in Visual Studio Code, assicurarsi di aver installato l'estensione Bicep come specificato in Prerequisiti. Se l'estensione è stata installata, concedere al servizio di linguaggio Bicep un po' di tempo per avviarsi dopo aver aperto il file Bicep. In genere si avvia rapidamente, ma non si hanno opzioni intellisense fino all'avvio. Una notifica nell'angolo in basso a destra indica che il servizio è in fase di avvio. Quando la notifica scompare, il servizio è in esecuzione.

Il file Bicep contiene ora il codice seguente:

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

All'interno di questo frammento di codice sono disponibili tutti i valori necessari per la definizione di una rete virtuale. Si possono notare due sottolineature curve. Una gialla indica un avviso correlato a una versione obsoleta dell'API, mentre una sottolineatura rossa segnala un errore causato da una definizione di parametro mancante.

Rimuovere @2019-11-01, e sostituirlo con @. Selezionare la versione più recente dell'API.

Screenshot of updating API version.

Nella sezione successiva verrà corretto l'errore di definizione del parametro mancante.

È anche possibile modificare questo codice per soddisfare i requisiti. Ad esempio, name non è un nome ottimale per la rete virtuale. Modificare la proprietà name in examplevnet.

name: 'exampleVNet'

Aggiungi parametro

Il frammento di codice aggiunto nell'ultima sezione non contiene una definizione di parametro.

Nella parte superiore del file aggiungere:

param location

Si noti che, quando si aggiunge uno spazio dopo percorso, intellisense offre i tipi di dati che sono disponibili per il parametro. Selezionare stringa.

Screenshot of adding string type to parameter.

Assegnare al parametro un valore predefinito:

param location string = resourceGroup().location

Per altre informazioni sulla funzione usata nel valore predefinito, vedere resourceGroup().

Aggiungere un altro parametro per il nome dell'account di archiviazione con un valore predefinito:

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

Per altre informazioni, vedere Interpolazione e uniqueString().

Questo parametro funziona correttamente, ma gli account di archiviazione hanno limiti sulla lunghezza del nome. Il nome deve avere una lunghezza compresa tra 3 e 24 caratteri. È possibile specificare tali requisiti aggiungendo elementi Decorator al parametro .

Aggiungere una riga sopra il parametro e digitare @. Gil elementi Decorator disponibili vengono visualizzati. Si noti che sono presenti elementi Decorator sia per minLengthche per maxLength.

Screenshot of adding decorators to parameter.

Aggiungere entrambi gli elementi Decorator e specificare i limiti dei caratteri:

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

È anche possibile aggiungere una descrizione per il parametro . Includere informazioni che consentano agli utenti che distribuiscono il file Bicep di comprendere il valore da fornire.

@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)}'

I parametri sono pronti per l'uso.

Aggiungere la risorsa

Anziché usare un frammento di codice per definire l'account di archiviazione, si usa intellisense per impostare i valori. IntelliSense rende questo passaggio più semplice rispetto alla necessità di digitare manualmente i valori.

Per definire una risorsa, usare la parola chiave resource. Sotto la rete virtuale digitare risorsa exampleStorage:

resource exampleStorage

exampleStorage è un nome simbolico per la risorsa che si sta distribuendo. È possibile usare questo nome per fare riferimento alla risorsa in altre parti del file Bicep.

Quando si aggiunge uno spazio dopo il nome simbolico, viene visualizzato un elenco di tipi di risorse. Continuare a digitare storageacc fino a quando non è possibile selezionarlo nelle opzioni disponibili.

Screenshot of selecting storage accounts for resource type.

Dopo aver selezionato Microsoft.Storage/storageAccounts, vengono visualizzate le versioni API disponibili. Selezionare la versione più recente. Per lo screenshot seguente, è 2023-01-01.

Screenshot of select API version for resource type.

Dopo l’offerta singola per il tipo di risorsa, aggiungere = e uno spazio. Vengono visualizzate le opzioni per l'aggiunta di proprietà alla risorsa. Selezionare required-properties(Proprietà obbligatorie).

Screenshot of adding required properties.

Questa opzione aggiunge tutte le proprietà per il tipo di risorsa che sono necessarie per la distribuzione. Dopo aver selezionato questa opzione, l'account di archiviazione ha le proprietà seguenti:

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

La procedura è quasi terminata. Specificare solo i valori per tali proprietà.

Anche in questo caso, intelliSense aiuta. Impostare name su storageAccountName, ovvero il parametro che contiene un nome per l'account di archiviazione. Per location, impostarlo su location, ovvero un parametro creato in precedenza. Quando si aggiungono sku.name e kind, intelliSense presenta le opzioni valide.

Al termine, si dispone di:

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

Per ulteriori informazioni sulla sintassi Bicep, vedere Struttura Bicep.

Visualizzare le risorse

È possibile visualizzare una rappresentazione delle risorse nel file.

Nell'angolo in alto a destra selezionare il pulsante del visualizzatore per aprire il visualizzatore Bicep.

Screenshot of Bicep Visualizer.

Il visualizzatore mostra le risorse definite nel file Bicep con le informazioni sulle dipendenze delle risorse. Le due risorse definite in questa guida introduttiva non hanno una relazione di dipendenza, quindi non viene visualizzato un connettore tra le due risorse.

Screenshot of Bicep Visualizer diagram.

Distribuire il file Bicep

  1. Fare clic con il pulsante destro del mouse sul file Bicep all'interno di VS Code e quindi scegliere Distribuisci file Bicep.

    Screenshot of Deploy Bicep file.

  2. Nella casella di testo Immettere il nome per la distribuzione, digitare deployStorageAndVNete quindi premere [INVIO].

  3. Nella casella di riepilogo nella parte superiore Selezionare gruppo di risorse, selezionare Crea nuovo gruppo di risorse.

  4. Immettere exampleRG come nome del gruppo di risorse e quindi premere [INVIO].

  5. Selezionare una località per il gruppo di risorse, selezionare Stati Uniti centrali o una località di propria scelta e quindi premere [INVIO].

  6. Da Selezionare un file di parametri, selezionare Nessuno.

    Screenshot of Select parameter file.

La creazione delle risorse richiede alcuni minuti. Per altre informazioni, vedere Distribuire file Bicep con Visual Studio Code.

È possibile distribuire il file Bicep anche usando l'interfaccia della riga di comando di Azure o Azure PowerShell:

az group create --name exampleRG --location eastus

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

Al termine della distribuzione, verrà visualizzato un messaggio che indica che la distribuzione è andata a buon fine.

Pulire le risorse

Quando le risorse non sono più necessarie, usare l'interfaccia della riga di comando di Azure o il modulo di Azure PowerShell per eliminare il gruppo di risorse dell'argomento di avvio rapido.

az group delete --name exampleRG

Passaggi successivi