Condividi tramite


Configurare l'ambiente Bicep

Bicep supporta un file di configurazione facoltativo denominato bicepconfig.json. In questo file è possibile aggiungere valori che personalizzano l'esperienza di sviluppo Bicep. Questo file viene unito al file di configurazione predefinito. Per altre informazioni, vedere Informazioni sul processo di unione. Per personalizzare la configurazione, creare un file di configurazione nella stessa directory o in una directory padre dei file Bicep. Se sono presenti più directory padre contenenti file bicepconfig.json, Bicep usa la configurazione da quella più vicina. Per altre informazioni, vedere Informazioni sul processo di risoluzione dei file.

Per configurare le impostazioni dell'estensione Bicep, vedere estensione VS Code e Bicep.

Creare il file config in Visual Studio Code

Per creare il file di configurazione è possibile usare qualsiasi editor di testo.

Per creare un file bicepconfig.json in Visual Studio Code, aprire Riquadro comandi ([CTRL/CMD]+[MAIUSC]+P) e quindi selezionare Bicep: crea file di configurazione Bicep. Per altre informazioni, vedere Creare un file di configurazione Bicep.

Screenshot di come creare un file di configurazione Bicep in VS Code.

L'estensione Bicep per Visual Studio Code supporta intellisense per il file bicepconfig.json. Usare intellisense per individuare le proprietà e i valori disponibili.

Screenshot del supporto di IntelliSense nella configurazione di bicepconfig.json.

Comprendere il processo merge

Il file bicepconfig.json viene sottoposto a un processo di unione dal basso verso l’alto ricorsivo con il file di configurazione predefinito. Durante il processo di unione, Bicep esamina ciascun percorso in entrambe le configurazioni. Se un percorso non è presente nella configurazione predefinita, questo e il relativo valore associato vengono aggiunti nel risultato finale. Viceversa, se nella configurazione predefinita esiste un percorso con un valore diverso, il valore di bicepconfig.json ha la precedenza nel risultato unito.

Si consideri uno scenario in cui per impostazione predefinita la configurazione è definita come segue:

{
  "cloud": {
    ...
    "credentialPrecedence": [
      "AzureCLI",
      "AzurePowerShell"
    ]
  },
  "moduleAliases": {
    "ts": {},
    "br": {
      "public": {
        "registry": "mcr.microsoft.com",
        "modulePath": "bicep"
      }
    }
  },
  ...
}

E bicepconfig.json è definito come segue:

{
  "cloud": {
    "credentialPrecedence": [
      "AzurePowerShell",
      "AzureCLI"
    ]
  },
  "moduleAliases": {
    "br": {
      "ContosoRegistry": {
        "registry": "contosoregistry.azurecr.io"
      },
      "CoreModules": {
        "registry": "contosoregistry.azurecr.io",
        "modulePath": "bicep/modules/core"
      }
    }
  }
}

La configurazione unita risultante sarà:

{
  "cloud": {
    ...
    "credentialPrecedence": [
      "AzurePowerShell",
      "AzureCLI"
    ]
  },
  "moduleAliases": {
    "ts": {},
    "br": {
      "public": {
        "registry": "mcr.microsoft.com",
        "modulePath": "bicep"
      },
      "ContosoRegistry": {
        "registry": "contosoregistry.azurecr.io"
      },
      "CoreModules": {
        "registry": "contosoregistry.azurecr.io",
        "modulePath": "bicep/modules/core"
      }
    }
  },
  ...
}

Nell'esempio precedente il valore di cloud.credentialPrecedence viene sostituito, mentre il valore di cloud.moduleAliases.ContosoRegistry e cloud.moduleAliases.CoreModules viene accodato nella configurazione unita.

Informazioni sul processo di risoluzione file

Il file bicepconfig.json può essere inserito nella stessa directory o in una directory padre dei file Bicep. Se sono presenti più directory padre contenenti file bicepconfig.json, Bicep usa il file di configurazione di quella più vicina. Ad esempio, nella struttura di cartelle specificata in cui ogni cartella ha un file bicepconfig.json:

Diagramma che mostra la risoluzione di

Se si esegue la compilazione main.bicep nella cartella child, viene usato il file bicepconfig.json nella cartella child. I file di configurazione nelle cartelle parent e root vengono ignorati. Se la cartella child non contiene un file di configurazione, Bicep cerca una configurazione nella cartella parent e quindi nella cartella root. Se non viene trovato alcun file di configurazione in una delle cartelle, Bicep usa per impostazione predefinita i valori predefiniti.

Nel contesto di un file Bicep che richiama più moduli, ogni modulo viene sottoposto alla compilazione usando il bicepconfig.json più vicino. Il file Bicep principale viene quindi compilato con il suo corrispondente bicepconfig.json. Nello scenario seguente, modA.bicep viene compilato usando l'oggetto bicepconfig.json che si trova nella cartella A, modB.bicep viene compilato con bicepconfig.json nella cartella B e infine main.bicep viene compilato usando bicepconfig.json nella cartella root.

Diagramma che mostra la risoluzione di

In assenza di un file bicepconfig.json nelle cartelle A e B, tutti e tre i file Bicep vengono compilati usando il bicepconfig.json trovato nella cartella root. Se in nessuna cartella è presente bicepconfig.json, per impostazione predefinita il processo di compilazione usa i valori predefiniti.

Configurare i moduli Bicep

Quando si lavora con i moduli, è possibile aggiungere alias per i percorsi dei moduli. Gli alias semplificano il file Bicep perché consentono di non ripetere percorsi complessi. Inoltre è possibile configurare il profilo cloud e la precedenza delle credenziali per l'autenticazione in Azure dall'interfaccia della riga di comando di Bicep e da Visual Studio Code. Le credenziali sono usate per pubblicare i moduli nei registri e per ripristinare i moduli esterni nella cache locale, quando si usa la funzione di inserimento della risorsa. Per altre informazioni, vedere Aggiungere le impostazioni del modulo a config Bicep.

Configurare le regole Linter

Il linter Bicep controlla i file Bicep per individuare errori di sintassi e violazioni delle procedure consigliate. È possibile eseguire l'override delle impostazioni predefinite per la convalida del file Bicep modificando bicepconfig.json. Per altre informazioni, vedere Aggiungere impostazioni linter a config. Bicep.

Abilitare le funzionalità sperimentali

È possibile abilitare le funzionalità sperimentali aggiungendo la sezione seguente al file bicepconfig.json. L'uso di funzionalità sperimentali abilita automaticamente la generazione di codice della versione 2.0 del linguaggio.

Ecco un esempio di abilitazione delle funzionalità 'asserzioni' e 'testFramework'.

{
  "experimentalFeaturesEnabled": {
    "assertions": true,
    "testFramework": true
  }
}

Per informazioni sul set corrente di funzionalità sperimentali, vedere Funzionalità sperimentali.

Passaggi successivi