Configurar seu ambiente Bicep

O Bicep dá suporte a um arquivo de configuração opcional chamado bicepconfig.json. Dentro desse arquivo, você pode adicionar valores que personalizam sua experiência de desenvolvimento do Bicep. Esse arquivo é mesclado com o arquivo de configuração padrão. Para obter mais informações, confira Noções básicas sobre o processo de mesclagem. Para personalizar a configuração, crie um arquivo de configuração no mesmo diretório ou um diretório pai dos arquivos Bicep. Se houver vários diretórios pai contendo arquivos bicepconfig.json, o Bicep usará a configuração do mais próximo. Para obter mais informações, confira Noções básicas sobre o processo de resolução de arquivos.

Para definir as configurações de extensão do Bicep, consulte VS Code e extensão Bicep.

Criar o arquivo de configuração no Visual Studio Code

Você pode usar qualquer editor de texto para criar o arquivo de configuração.

Para criar um arquivo bicepconfig.json no Visual Studio Code, abra a Paleta de Comandos ([CTRL/CMD]+[SHIFT]+P) e selecione Bicep: criar arquivo de configuração do Bicep. Para obter mais informações, confira Criar arquivo de configuração Bicep.

Screenshot of how to create Bicep configuration file in VS Code.

A extensão Bicep para Visual Studio Code dá suporte ao intelliSense para seu arquivo bicepconfig.json. Use o intelliSense para descobrir propriedades e valores disponíveis.

Screenshot of the intellisense support in configuring bicepconfig.json.

Entender o processo de mesclagem

O arquivo bicepconfig.json passa por um processo de mesclagem de baixo para cima recursivo com o arquivo de configuração padrão. Durante o processo de mesclagem, o Bicep examina cada caminho em ambas as configurações. Se um caminho não estiver presente na configuração padrão, o caminho e seu valor associado serão adicionados ao resultado final. Por outro lado, se houver um caminho na configuração padrão com um valor diferente, o valor de bicepconfig.json terá precedência no resultado mesclado.

Considere um cenário em que a configuração padrão é definida da seguinte maneira:

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

E o bicepconfig.json é definido da seguinte maneira:

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

A configuração mesclada resultante seria:

{
  "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"
      }
    }
  },
  ...
}

No exemplo anterior, o valor de cloud.credentialPrecedence é substituído, enquanto os valores de cloud.moduleAliases.ContosoRegistry e cloud.moduleAliases.CoreModules são acrescentados na configuração mesclada.

Entender o processo de resolução de arquivos

O arquivo bicepconfig.json pode ser colocado no mesmo diretório ou em um diretório pai dos arquivos Bicep. Se houver vários diretórios pai contendo arquivos bicepconfig.json, o Bicep usará o arquivo de configuração do mais próximo. Por exemplo, na estrutura de pasta fornecida em que cada pasta tem um arquivo bicepconfig.json:

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

Se você compilar main.bicep na pasta child, o arquivo bicepconfig.json na pasta child será usado. Os arquivos de configuração na pasta parent e na pasta root são ignorados. Se a pasta child não contiver um arquivo de configuração, o Bicep procurará uma configuração na pasta parent e, em seguida, na pasta root. Se nenhum arquivo de configuração for encontrado em nenhuma das pastas, o Bicep usará os valores padrão.

No contexto de um arquivo Bicep invocando vários módulos, cada módulo passa por compilação usando o bicepconfig.json mais próximo. Em seguida, o arquivo Bicep principal é compilado com seu bicepconfig.json correspondente. No cenário a seguir, modA.bicep é compilado usando o bicepconfig.json localizado na pasta A, modB.bicep é compilado com o bicepconfig.json na pasta B e, por fim, main.bicep é compilado usando o bicepconfig.json na pasta root.

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

Na ausência de um arquivo bicepconfig.json nas pastas A e B, todos os três arquivos Bicep são compilados usando o bicepconfig.json encontrado na pasta root. Se bicepconfig.json não estiver presente em nenhuma das pastas, o processo de compilação usará os valores padrão.

Configurar módulos do Bicep

Ao trabalhar com módulos, é possível adicionar aliases para caminhos de módulo. Esses aliases simplificam o arquivo Bicep porque você não precisa repetir caminhos complicados. Você também pode configurar a precedência de credencial para autenticação no Azure por meio da CLI do Bicep e do Visual Studio Code. As credenciais são usadas para publicar módulos em registros e restaurar módulos externos para o cache local ao usar a função inserir recurso. Para obter mais informações, consulte Adicionar configurações de módulo à configuração do Bicep.

Configurar regras do Linter

O linter Bicep verifica os erros de sintaxe e as violações de melhores práticas em arquivos Bicep. Você pode substituir as configurações padrão para a validação do arquivo Bicep modificando bicepconfig.json. Para obter mais informações, consulte Adicionar configurações de linter à configuração do Bicep.

Habilitar recursos experimentais

Você pode habilitar recursos experimentais adicionando a seção a seguir ao arquivo bicepconfig.json.

Veja um exemplo de como habilitar os recursos "compileTimeImports" e "userDefinedFunctions".

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

Para obter informações sobre o conjunto atual de recursos experimentais, consulte Recursos experimentais.

Próximas etapas