配置 Bicep 环境

Bicep 支持名为 bicepconfig.json 的可选配置文件。 在此文件中,可以添加用于自定义 Bicep 开发体验的值。 此文件已与默认配置文件合并。 有关详细信息,请参阅了解合并过程。 若要自定义配置,请在同一目录中或 Bicep 文件的父目录中创建配置文件。 如果有多个包含 bicepconfig.json 文件的父目录,Bicep 将使用最邻近的父目录中的配置。 有关详细信息,请参阅了解文件解析过程

要配置 Bicep 扩展设置,请参阅 VS Code 和 Bicep 扩展

在 Visual Studio Code 中创建配置文件

可以使用任何文本编辑器来创建配置文件。

若要在 Visual Studio Code 中创建 bicepconfig.json 文件,请打开命令面板 ([CTRL/CMD]+[SHIFT]+P),然后选择“Bicep: 创建 Bicep 配置文件”。 有关详细信息,请参阅创建 Bicep 配置文件

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

Visual Studio Code 的 Bicep 扩展支持用于 bicepconfig.json 文件的 Intellisense 功能。 使用 Intellisense 发现可用的属性和值。

Screenshot of the intellisense support in configuring bicepconfig.json.

了解合并过程

bicepconfig.json 文件使用默认配置文件执行自下而上的递归合并过程。 在合并过程中,Bicep 会检查这两个配置中的每个路径。 如果默认配置中不存在路径,则路径及其关联值将添加到最终结果中。 相反,如果默认配置中存在具有不同值的路径,则 bicepconfig.json 中的值会在合并结果中优先。

假设默认配置的定义如下:

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

并且 bicepconfig.json 定义如下:

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

生成的合并配置将为:

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

在前面的示例中,cloud.credentialPrecedence 的值被替换,同时 cloud.moduleAliases.ContosoRegistrycloud.moduleAliases.CoreModules 的值在合并配置中追加。

了解文件解析过程

bicepconfig.json 文件可以放置在 Bicep 文件的同一目录或父目录中。 如果有多个包含 bicepconfig.json 文件的父目录,Bicep 将使用最邻近的父目录中的配置文件。 例如,在给定的文件夹结构中,每个文件夹都有一个 bicepconfig.json 文件:

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

如果在 child 文件夹中编译 main.bicep,则会使用 child 文件夹中的 bicepconfig.json 文件。 将忽略 parent 文件夹和 root 文件夹中的配置文件。 如果 child 文件夹不包含配置文件,则 Bicep 会在 parent 文件夹中搜索配置,然后在 root 文件夹中搜索。 如果未在任何文件夹中找到配置文件,则 Bicep 会默认使用默认值

在调用多个模块的 Bicep 文件的上下文中,每个模块会使用最近的 bicepconfig.json 进行编译。 然后,主 Bicep 文件会通过其对应的 bicepconfig.json 进行编译。 在以下方案中,modA.bicep 使用 A 文件夹中的 bicepconfig.json 进行编译,modB.bicep 使用 B 文件夹中的 bicepconfig.json 进行编译,最后 main.bicep 使用 root 文件夹中的 bicepconfig.json 进行编译。

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

AB 文件夹中没有 bicepconfig.json 文件的情况下,所有三个 Bicep 文件都是使用 root 文件夹中的 bicepconfig.json 进行编译的。 如果 bicepconfig.json 不存在于任何文件夹中,则编译过程会默认使用默认值

配置 Bicep 模块

使用模块时,可以为模块路径添加别名。 这些别名可简化 Bicep 文件,因为不必重复复杂的路径。 还可以配置云配置文件和凭据优先级,以便从 Bicep CLI 和 Visual Studio Code 对 Azure 进行身份验证。 凭据用于将模块发布到注册表,并在使用 insert 资源函数时将外部模块还原到本地缓存。 有关详细信息,请参阅将模块设置添加到 Bicep 配置中

配置 Linter 规则

Bicep Linter 会检查 Bicep 文件是否存在语法错误以及是否违反最佳做法。 可以通过修改 bicepconfig.json 来覆盖 Bicep 文件验证的默认设置。 有关详细信息,请参阅将 Linter 设置添加到 Bicep 配置中

启用实验性功能

可以通过将以下部分添加到 bicepconfig.json 文件来启用实验性功能。

以下是启用“compileTimeImports”和“userDefinedFunctions”功能的示例。

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

有关当前试验性功能集的详细信息,请参阅试验性功能

后续步骤