你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如何使用 Azure CLI 别名扩展
使用别名扩展,用户可以通过使用现有命令定义自定义 Azure CLI 命令。 别名允许快捷方式,因此可以简化工作流。 Jinja2 模板引擎为 Azure CLI 别名提供支持,并提供高级参数处理。
注意
别名扩展处于公共预览阶段。 功能和配置文件格式可能发生变化。
安装别名扩展
为使用别名扩展而需安装的最低 Azure CLI 版本为 2.0.28。 若要检查 CLI 版本,请运行 az --version
。 如果需要更新安装,请按照安装 Azure CLI 中的说明执行操作。
使用 az extension add 命令安装别名扩展。
az extension add --name alias
使用 az extension list 验证扩展安装。 如果该别名扩展已正确安装,它会列入命令输出。
az extension list --output table --query '[].{Name:name}'
Name
------
alias
使别名扩展保持最新
该别名扩展处于活跃开发阶段,新版本将定期发布。 更新 CLI 时不会安装新版本。 请使用 az extension update 安装该扩展的更新。
az extension update --name alias
管理 Azure CLI 的别名
使用别名扩展可以创建和管理其他 CLI 命令的别名。 若要查看所有可用命令和参数详细信息,请结合 --help
运行别名命令。
az alias --help
创建简单的别名命令
别名的一个用途是缩短现有命令组或命令名称。 例如,可以将 group
命令组缩短为 rg
,将 list
命令缩短为 ls
。
az alias create --name rg --command group
az alias create --name ls --command list
这些新定义的别名现在可在其定义所在的任何位置使用。
az rg list
az rg ls
az vm ls
请勿将 az
包含在别名命令中。
别名也可以是完整命令的快捷方式。 下一个示例在表输出中列出了可用资源组及其位置:
az alias create --name ls-groups --command "group list --query '[].{Name:name, Location:location}' --output table"
现在 ls-groups
可以像任何其他 CLI 命令一样运行。
az ls-groups
使用参数创建别名命令
还可以将位置参数包含为别名中的 {{ arg_name }}
,来将其添加到别名命令中。 括号内的空格是必需的。
az alias create --name "alias_name {{ arg1 }} {{ arg2 }} ..." --command "invoke_including_args"
下一个示例别名演示如何使用位置参数获取 VM 的公共 IP 地址。
az alias create \
--name "get-vm-ip {{ resourceGroup }} {{ vmName }}" \
--command "vm list-ip-addresses --resource-group {{ resourceGroup }} --name {{ vmName }}
--query [0].virtualMachine.network.publicIpAddresses[0].ipAddress"
当运行此命令时,需要为位置参数提供值。
az get-vm-ip MyResourceGroup MyVM
还可以在别名命令中使用环境变量,在运行时会评估这些环境变量。 下一个示例将添加 create-rg
别名,该别名在 eastus
中创建资源组,并且添加 owner
标记。 此标记被分配了本地环境变量 USER
的值。
az alias create \
--name "create-rg {{ groupName }}" \
--command "group create --name {{ groupName }} --location eastus --tags owner=\$USER"
若要在别名命令中注册环境变量,必须转义美元符号 $
。
使用 Jinja2 模板处理参数
Jinja2 执行别名扩展中的参数替换。 使用 Jinja2 模板可以操控参数。
使用 Jinja2 模板可以编写接受与基础命令不同类型的参数的别名。 例如,可以编写接受存储 URL 的别名。 然后,此 URL 将受到分析,以将帐户和容器名称传递给存储命令。
az alias create \
--name 'storage-ls {{ url }}' \
--command "storage blob list
--account-name {{ url.replace('https://', '').split('.')[0] }}
--container-name {{ url.replace('https://', '').split('/')[1] }}"
若要了解 Jinja2 模板引擎,请参阅 Jinja2 文档。
别名配置文件
创建和修改别名的另一种方法是更改别名配置文件。 别名命令定义会写入位于 $AZURE_CONFIG_DIR/alias
的配置文件中。 AZURE_CONFIG_DIR
的默认值为 $HOME/.azure
(在 macOS 与 Linux 上)和 %USERPROFILE%\.azure
(在 Windows 上)。 别名配置文件以 INI 配置文件格式编写。 别名命令的格式为:
[alias_name]
command = invoked_commands
对于包含位置参数的别名,别名命令的格式为:
[alias_name {{ arg1 }} {{ arg2 }} ...]
command = invoked_commands_including_args
通过别名配置文件创建带有参数的别名命令
以下示例演示了包含参数的命令的别名。 此命令获取 VM 的公共 IP 地址。 别名命令必须在一行中输入,并在别名中使用所有参数。
[get-vm-ip {{ resourceGroup }} {{ vmName }}]
command = vm list-ip-addresses --resource-group {{ resourceGroup }} --name {{ vmName }} --query [0].virtualMachine.network.publicIpAddresses[0].ipAddress
卸载别名扩展
若要卸载扩展,请使用 az extension remove命令。
az extension remove --name alias
如果由于出现 bug 或其他扩展问题而卸载了该扩展,请提出 GitHub 问题,以便我们可以提供修复。