Che cos'è Bicep?

Bicep è un linguaggio specifico di dominio (DSL) che usa la sintassi dichiarativa per distribuire le risorse di Azure. L'infrastruttura da distribuire in Azure viene definita in un file Bicep che viene quindi usato in tutto il ciclo di vita di sviluppo per distribuire ripetutamente l'infrastruttura. Le risorse vengono distribuite in modo coerente.

Bicep offre sintassi concisa, indipendenza dai tipi affidabile e supporto per il riutilizzo del codice. Bicep offre un'esperienza di creazione di prima classe per le soluzioni di infrastruttura come codice in Azure.

Vantaggi di Bicep

Bicep offre i vantaggi seguenti:

  • Supporto per tutti i tipi di risorse e le versioni api: Bicep supporta immediatamente tutte le versioni di anteprima e disponibilità generale per i servizi di Azure. Non appena un provider di risorse introduce nuovi tipi di risorse e versioni api, è possibile usarli nel file Bicep. Non è necessario attendere che gli strumenti vengano aggiornati prima di usare i nuovi servizi.

  • Sintassi semplice: rispetto al modello JSON equivalente, i file Bicep sono più concisi e facili da leggere. Bicep non richiede alcuna conoscenza precedente dei linguaggi di programmazione. La sintassi Bicep è dichiarativa e specifica le risorse e le proprietà delle risorse da distribuire.

    Gli esempi seguenti illustrano la differenza tra un file Bicep e il modello JSON equivalente. Entrambi gli esempi distribuiscono un account di archiviazione.

    param location string = resourceGroup().location
    param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
    
    resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
      name: storageAccountName
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
      properties: {
        accessTier: 'Hot'
      }
    }
    

  • Esperienza di creazione: quando si usa l'estensione Bicep per VS Code per creare i file Bicep, si ottiene un'esperienza di creazione di prima classe. L'editor offre funzionalità avanzate di sicurezza dei tipi, intellisense e convalida della sintassi.

    Esempio di creazione di file Bicep

  • Risultati ripetibili: è possibile distribuire ripetutamente l'infrastruttura nel corso del ciclo di vita dello sviluppo garantendo al contempo che le risorse vengano distribuite in uno stato coerente. I file Bicep sono idempotenti, il che significa che è possibile distribuire lo stesso file più volte e ottenere gli stessi tipi di risorse nello stesso stato. È possibile sviluppare un file che rappresenta lo stato desiderato, anziché sviluppare molti file separati per rappresentare gli aggiornamenti.

  • Orchestrazione: non è necessario preoccuparsi delle complessità delle operazioni di ordinamento. Resource Manager gestisce la distribuzione delle risorse interdipendenti, in modo che vengano create nell'ordine corretto. Quando possibile, Resource Manager distribuisce le risorse in parallelo, in modo che le distribuzioni terminino più velocemente rispetto alle distribuzioni seriali. Il file viene distribuito tramite un comando, anziché tramite più comandi imperativi.

    Confronto tra distribuzioni Bicep

  • Modularità: è possibile suddividere il codice Bicep in parti gestibili usando moduli. Il modulo distribuisce un set di risorse correlate. I moduli consentono di riutilizzare il codice e semplificare lo sviluppo. Aggiungere il modulo a un file Bicep ogni volta che è necessario distribuire tali risorse.

  • Integrazione con i servizi di Azure: Bicep è integrato con i servizi di Azure, ad esempio Criteri di Azure, specifiche di modello e blueprint.

  • Modifiche in anteprima: è possibile usare l'operazione di simulazione per ottenere un'anteprima delle modifiche prima di distribuire il file Bicep. Con la simulazione, vengono visualizzate le risorse che verranno create, aggiornate o eliminate e tutte le proprietà delle risorse che verranno modificate. L'operazione di simulazione controlla lo stato corrente dell'ambiente ed elimina la necessità di gestire lo stato.

  • Nessun file di stato o di stato da gestire: tutto lo stato viene archiviato in Azure. Gli utenti possono collaborare e avere la certezza che gli aggiornamenti vengano gestiti come previsto.

  • Nessun costo e open source: Bicep è completamente gratuito. Non è necessario pagare le funzionalità Premium. È supportato anche dal supporto Tecnico Microsoft.

Introduzione

Per iniziare con Bicep:

  1. Installare gli strumenti. Vedere Configurare ambienti di sviluppo e distribuzione Bicep. In alternativa, è possibile usare il repository Devcontainer/Codespaces di VS Code per ottenere un ambiente di creazione preconfigurato.
  2. Completare la guida introduttiva e i moduli Learn per Bicep.

Per decompilare un modello di Resource Manager esistente in Bicep, vedere Decompilazione di JSON del modello arm in Bicep. È possibile usare Bicep Playground per visualizzare Bicep e JSON equivalente affiancato.

Per informazioni sulle risorse disponibili nel file Bicep, vedere Informazioni di riferimento sulle risorse Bicep

Gli esempi bicep sono disponibili nel repository GitHub Bicep

Informazioni sulla lingua

Bicep non è destinato a un linguaggio di programmazione generale per scrivere applicazioni. Un file Bicep dichiara le risorse di Azure e le proprietà delle risorse, senza scrivere una sequenza di comandi di programmazione per creare risorse.

Per tenere traccia dello stato del lavoro Bicep, vedere il repository di progetti Bicep.

Per informazioni su Bicep, vedere il video seguente.

È possibile usare Bicep al posto di JSON per sviluppare modelli di Azure Resource Manager (modelli di ARM). Nella creazione di un modello di Resource Manager, la sintassi JSON può risultare troppo dettagliata e richiedere espressioni complesse. La sintassi Bicep riduce la complessità e migliora l'esperienza di sviluppo. Bicep è un'astrazione trasparente basata su JSON del modello di ARM e non perde alcuna delle funzionalità del modello JSON. Durante la distribuzione, l'interfaccia della riga di comando di Bicep converte un file Bicep in JSON del modello arm.

I tipi di risorse, le versioni dell'API e le proprietà validi in un modello di Resource Manager sono validi in un file Bicep.

Bicep offre una sintassi più semplice e concisa rispetto al codice JSON equivalente. Non si usano espressioni [...]tra parentesi quadre. Si chiamano invece direttamente le funzioni e si ottengono valori da parametri e variabili. Si assegna a ogni risorsa distribuita un nome simbolico, che semplifica il riferimento a tale risorsa nel modello.

Per un confronto completo della sintassi, vedere Confronto tra JSON e Bicep per i modelli.

Bicep gestisce automaticamente le dipendenze tra le risorse. È possibile evitare di impostare dependsOn quando il nome simbolico di una risorsa viene usato in un'altra dichiarazione di risorsa.

La struttura del file Bicep è più flessibile rispetto al modello JSON. È possibile dichiarare parametri, variabili e output in qualsiasi punto del file. In JSON è necessario dichiarare tutti i parametri, le variabili e gli output all'interno delle sezioni corrispondenti del modello.

Passaggi successivi

Introduzione alla guida introduttiva.

Per risposte alle domande comuni, vedere Domande frequenti su Bicep.