Configurare l'ambiente Bicep

Bicep supporta un file di configurazione facoltativo denominato bicepconfig.json. All'interno di 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 bicepconfig.json file, 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 di configurazione in Visual Studio Code

È possibile usare qualsiasi editor di testo per creare il file di configurazione.

Per creare un bicepconfig.json file in Visual Studio Code, aprire il 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 of how to create Bicep configuration file in VS Code.

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

Screenshot of the intellisense support in configuring bicepconfig.json.

Comprendere il processo di unione

Il bicepconfig.json file viene sottoposto a un processo di unione in basso ricorsivo con il file di configurazione predefinito. Durante il processo di unione, Bicep esamina ogni percorso in entrambe le configurazioni. Se un percorso non è presente nella configurazione predefinita, il percorso 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 la configurazione predefinita è definita come segue:

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

E viene 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 aggiunto nella configurazione unita.

Informazioni sul processo di risoluzione dei file

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

A diagram showing resolving `bicepconfig.json` found in multiple parent folders.

Se si esegue la compilazione main.bicep nella child cartella , viene usato il bicepconfig.json file nella child cartella . I file di configurazione nella parent cartella e nella root cartella vengono ignorati. Se la child cartella non contiene un file di configurazione, Bicep cerca una configurazione nella parent cartella e quindi la root cartella . 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 più bicepconfig.jsonvicino . Il file Bicep principale viene quindi compilato con il corrispondente bicepconfig.json. Nello scenario seguente, modA.bicep viene compilato usando l'oggetto bicepconfig.json che si trova nella A cartella , modB.bicep viene compilato con bicepconfig.json nella B cartella e infine main.bicep viene compilato usando bicepconfig.json nella root cartella .

A diagram showing resolving `bicepconfig.json` found in multiple parent folders with the module scenario.

In assenza di un bicepconfig.json file nelle A cartelle e B , tutti e tre i file Bicep vengono compilati usando trovato bicepconfig.json nella root cartella . Se bicepconfig.json non è presente in alcuna cartella, 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. Questi alias semplificano il file Bicep perché non è necessario ripetere percorsi complessi. È anche 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 vengono usate per pubblicare 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 Bicep config.

Configurare le regole Linter

Bicep linter 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 Bicep config.

Abilitare le funzionalità sperimentali

È possibile abilitare le funzionalità sperimentali aggiungendo la sezione seguente al bicepconfig.json file.

Ecco un esempio di abilitazione delle funzionalità 'compileTimeImports' e 'userDefinedFunctions'.

{
  "experimentalFeaturesEnabled": {
    "compileTimeImports": true,
    "userDefinedFunctions": true
  }
}

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

Passaggi successivi