使用专用注册表中的模块
你已了解如何将模块发布到专用注册表中。 在本单元中,你将学习如何将注册表中已存在的模块用作 Bicep 模板的一部分。
使用 Bicep 模块
找到想要使用的模块后,可以在 Bicep 模板中创建模块定义。 下面是一个示例:
module myModule 'br:myregistry.azurecr.io/modulepath/modulename:moduleversion' = {
name: 'my-module'
params: {
moduleParameter1: 'value'
}
}
请注意,模块定义类似于本地模块的定义,但有一个重要的区别。 无需在文件系统上指定 Bicep 文件的路径,而是在注册表中包含模块的路径。
添加对模块的引用后,Visual Studio Code 尝试从注册表自动下载模块。 下载模块后,适用于 Visual Studio Code 的 Bicep 扩展会在你工作时为你提供 IntelliSense 和其他代码创作帮助。
别名
可以使用注册表别名来简化模块定义。 无需在每次定义模块时都指定注册表名称,而是使用其别名。 别名在一些方面有所帮助:
- 它们可以使 Bicep 文件更有条理,并有助于避免重复键入注册表的全名。
- 如果将来更改为新注册表,可以更新别名,而不是更新对它的每个引用。
- 某些组织需要将不同的注册表用于不同的情况,例如用于开发和生产环境。 可以通过修改配置文件来切换别名引用的注册表, 然后更改将应用到文件夹中的所有 Bicep 文件。
若要定义别名,需要在与 Bicep 文件相同的文件夹中创建 bicepconfig.json 文件。 在 bicepconfig.json 文件中,定义别名,如以下示例所示:
{
"moduleAliases": {
"br": {
"MyRegistry": {
"registry": "myregistry.azurecr.io"
}
}
}
}
在 Bicep 文件中定义模块时,请使用略有不同的模块路径类型,其中包括别名:
module myModule 'br/MyRegistry:bicep/my-module:v1' = {
// ...
}
提示
请注意,在你使用别名时,路径的开头是 br/
,而在你不使用别名时,路径的开头是 br:
。
别名还可以在注册表中包括模块的路径,这在为模块使用通用前缀时非常有用:
{
"moduleAliases": {
"br": {
"MyRegistryWithPath": {
"registry": "myregistry.azurecr.io",
"modulePath": "bicep"
}
}
}
}
然后,在 Bicep 文件中定义模块时,可以省略路径:
module myModule 'br/MyRegistryWithPath:my-module:v1' = {
// ...
}
生成 Bicep 文件
准备好部署 Bicep 文件时,像平时一样部署它。 Bicep 在部署过程中自动从注册表下载模块。 Bicep 将引用的所有模块嵌入到转译的 ARM 模板(JSON 文件)中。
你也可以使用 bicep restore
命令将模块下载过程与生成分开, 然后使用 bicep build
命令和 --no-restore
命令行开关来阻止生成过程下载模块。 但是,通常不需要分隔模块,只需让 Bicep 自动下载模块即可。