Azure CLI 提供用于加载扩展的功能。 Azure CLI 扩展被形容成 Python 轮子,它们未随附在 CLI 中,但可作为 CLI 命令运行。 使用扩展可以访问试验性命令和预发行的命令,以及编写自己的 CLI 接口。 本文介绍如何管理扩展,并解答有关其用法的常见问题。
如何查找扩展
若要查看 Microsoft 提供和维护的 Azure CLI 扩展,请使用 az extension list-available 命令。
az extension list-available --output table
我们还在文档站点上提供了扩展列表。
如何安装扩展
手动安装扩展
找到要安装的扩展后,请使用 az extension add 来安装它。 如果扩展显示在输出 az extension list-available
中,则可以按名称安装它。
az extension add --name <extension-name>
如果此扩展来自外部资源,或者你有指向它的直接链接,则可以提供源 URL 或本地路径。 该扩展必须是已编译的 Python wheel 文件。
az extension add --source <URL-or-path>
从版本 开始,还可以按照 2.20.0
中的格式构建专用扩展索引,然后将 Azure CLI 使用的扩展索引 URL 设置为该索引。 之后,可以按名称安装专用扩展索引中的扩展。
az config set extension.index_url=<URL>
az extension add --name <extension-name>
安装扩展后,它将显示在 shell 变量的值 $AZURE_EXTENSION_DIR
下。 如果此变量未设置,则默认位置位于 $HOME/.azure/cliextensions
Linux 和 macOS 以及 %USERPROFILE%\.azure\cliextensions
Windows 上。
自动安装扩展
运行未安装的扩展命令时,Azure CLI 可识别你运行的命令,并自动安装版本至少为 2.10.0
的扩展。 此功能(称为 动态安装)默认从版本 2.12.0
开始启用。 还可通过以前受支持的版本的配置来启用它。
az config set extension.use_dynamic_install=yes_prompt
使用以下配置命令可在不提示的情况下实现动态安装。
az config set extension.use_dynamic_install=yes_without_prompt
使用以下配置命令可关闭动态安装功能,将其恢复到默认行为。 如果未安装扩展,则扩展命令将返回“找不到命令”错误。
az config set extension.use_dynamic_install=no
默认情况下,提示动态安装的扩展命令在安装扩展后继续运行。 可通过将 run_after_dynamic_install
属性设置为 no
,更改默认行为并退出命令而不重新运行。
az config set extension.run_after_dynamic_install=no
如何更新扩展
如果已按名称安装了扩展,则可以使用 az extension update 更新该扩展。
az extension update --name <extension-name>
否则,可以按照安装扩展说明,从源更新扩展。
如果无法使用 CLI 解析扩展名称,请卸载该扩展,然后尝试重新安装它。 扩展也可能是基本 CLI 的一部分。 按照 安装 Azure CLI 中所述更新 CLI,并检查扩展的命令是否可用。
如何卸载扩展
如果不再需要某个扩展,请使用 az extension remove 将其卸载。
az extension remove --name <extension-name>
您还可以手动删除扩展程序,只需从其安装位置删除即可。
$AZURE_EXTENSION_DIR
shell 变量定义模块的安装位置。 如果此变量未设置,默认情况下在 Linux 和 macOS 上该值为 $HOME/.azure/cliextensions
,在 Windows 上为 %USERPROFILE%\.azure\cliextensions
。
rm -rf $AZURE_EXTENSION_DIR/<extension-name>
常见问题
以下是一些有关 CLI 扩展的其他常见问题的答案。
哪些文件格式可用于安装?
当前,只有编译的 Python wheel 才能作为扩展进行安装。
扩展是否可以替换现有命令?
是的。 扩展可以替换现有命令,但 CLI 在运行替换命令之前发出警告。
如何判断扩展是否处于预发布阶段?
扩展的文档和版本控制将显示该扩展是否是预发行版。 Microsoft 通常以 CLI 扩展的形式发布预览版命令,以后会提供相应的选项用于将这些命令移到主要 CLI 产品中。 将命令从扩展功能中移出后,应卸载旧扩展。
扩展是否可以彼此依赖?
否。 由于 CLI 不能保证加载顺序,因此可能无法满足依赖关系方面的要求。 删除一个扩展不会影响其他任何扩展。
扩展是否随 CLI 一起更新?
否。 扩展必须单独更新,如更新扩展所述。
如何开发我们自己的扩展?
有关更多帮助,请查阅官方存储库。 Azure/azure-cli-extensions