为 Bicep 模块创建专用注册表
要在你的组织内共享模块,你可以创建一个专用模块注册表。 然后你可以将模块发布到该注册表,并为需要部署模块的用户授予读取权限。 在注册表中共享模块后,你可以从 Bicep 文件中引用共享的模块。 若要使用公共模块,请参阅 Bicep 模块。
要使用模块注册表,必须具有 Bicep CLI 版本 0.4.1008 或更高版本。 要与 Azure CLI 一起使用,还必须具有 2.31.0 或更高版本;要与 Azure PowerShell 一起使用,还必须具有 7.0.0 或更高版本。
配置专用注册表
Bicep 注册表托管在 Azure 容器注册表 (ACR) 上。 使用以下步骤为模块配置注册表。
如果已有容器注册表,则可以直接使用。 如果需要创建容器注册表,请参阅快速入门:使用 Bicep 文件创建容器注册表。
可以为模块注册表使用任何可用的注册表 SKU。 注册表异地复制为用户提供了本地状态或作为热备份。
获取登录服务器名称。 从 Bicep 文件链接到注册表时需要此名称。 登录服务器名称的格式为:
<registry-name>.azurecr.cn
。要获取登录服务器名称,使用 Get-AzContainerRegistry。
Get-AzContainerRegistry -ResourceGroupName "<resource-group-name>" -Name "<registry-name>" | Select-Object LoginServer
要将模块发布到注册表,你必须具有推送映像的权限。 要从注册表部署模块,你必须具有拉取映像的权限。 有关授予足够访问权限的角色的详细信息,请参阅 Azure 容器注册表角色和权限。
根据用于部署模块的帐户类型,你可能需要自定义使用哪些凭据。 需要这些凭据才能从注册表获取模块。 默认情况下,凭据是从 Azure CLI 或 Azure PowerShell 获取的。 可以在 bicepconfig.json 文件中自定义获取凭据的优先顺序。 有关详细信息,请参阅用于还原模块的凭据。
重要
专用容器注册表仅对具有所需访问权限的用户可用。 但是,可以通过公共 Internet 进行访问。 为了提高安全性,可以要求通过专用终结点进行访问。 请参阅使用 Azure 专用链接以私密方式连接到 Azure 容器注册表。
专用容器注册表必须将策略 azureADAuthenticationAsArmPolicy
设置为 enabled
。 如果将 azureADAuthenticationAsArmPolicy
设置为 disabled
,发布模块时将收到 401(未授权)错误消息。 请参阅 Azure 容器注册表引入了条件访问策略。
将文件发布到注册表
设置容器注册表后,可以将文件发布到注册表。 使用 publish 命令并提供你打算用作模块的任何 Bicep 文件。 在注册表中指定模块的目标位置。 发布命令将创建一个存储在注册表中的 ARM 模板。 这意味着,如果发布引用其他本地模块的 Bicep 文件,这些模块将完全扩展为一个 JSON 文件并发布到注册表。
Publish-AzBicepModule -FilePath ./storage.bicep -Target br:exampleregistry.azurecr.cn/bicep/modules/storage:v1 -DocumentationUri https://www.contoso.com/exampleregistry.html
借助 Bicep CLI 版本 0.27.1 或更高版本,除了编译的 JSON 模板外,还可以使用 Bicep 源代码发布模块。 如果使用 Bicep 源代码将模块发布到注册表,则可以按 Visual Studio Code 中的 F12
(转到定义)查看 Bicep Code。 需要 Bicep 扩展版本 0.27 或更高版本才能查看 Bicep 文件。
Publish-AzBicepModule -FilePath ./storage.bicep -Target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 -DocumentationUri https://www.contoso.com/exampleregistry.html -WithSource
使用源开关时,清单中会显示另一层:
如果 Bicep 模块引用专用注册表中的模块,则 ACR 终结点可见。 若要隐藏完整终结点,可以配置专用注册表的别名。
在注册表中查看文件
若要在门户中查看已发布的模块:
登录 Azure 门户。
搜索“容器注册表”。
选择你的注册表。
从左侧菜单中选择“服务”->“存储库”。
选择模块路径(存储库)。 在前面的示例中,模块路径名称是 bicep/modules/storage。
选择标签。 在前面的示例中,标签是 v1。
工件引用与你将在 Bicep 文件中使用的引用相匹配。
你现在已准备好从 Bicep 文件引用注册表中的文件。 有关用于引用外部模块的语法示例,请参阅 Bicep 模块。
使用 Bicep 注册表文件
使用远程注册表中托管的 bicep 文件时,请务必了解本地计算机与注册表的交互方式。 首次声明对注册表的引用时,本地编辑器会尝试与 Azure 容器注册表通信,并将注册表的副本下载到本地缓存。
本地缓存位于:
在 Windows 上
%USERPROFILE%\.bicep\br\<registry-name>.azurecr.io\<module-path\<tag>
在 Linux 上
/home/<username>/.bicep
在 Mac 上
~/.bicep
本地计算机可以识别在对包含注册表引用的指定文件运行 restore
之前对远程注册表所做的任何更改。
az bicep restore --file <bicep-file> [--force]
有关详细信息,请参阅 restore
命令。
后续步骤
- 若要了解模块,请参阅 Bicep 模块。
- 若要为模块注册表配置别名,请参阅在 Bicep 配置文件中添加模块设置。
- 有关发布和还原模块的详细信息,请参阅 Bicep CLI 命令。