Azure/azure-cli
GitHub: Azure/azure-cli
微软 Azure 官方的跨平台命令行工具,让用户通过终端高效管理和自动化编排 Azure 云资源。
Stars: 4572 | Forks: 3433
# Microsoft Azure CLI
[](https://pypi.python.org/pypi/azure-cli)
[](https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=246&branchName=dev)
[](https://azurecli.slack.com)
出色的云需要出色的工具;我们很高兴向您介绍 *Azure CLI*,这是我们为 Azure 打造的下一代跨平台命令行体验。
立即从 [Azure Cloud Shell](https://portal.azure.com/#cloudshell) 开始体验吧!
## 安装说明
有关详细的安装说明,请参阅[安装指南](https://learn.microsoft.com/cli/azure/install-azure-cli)。
有关常见安装问题及其解决方法的列表,请访问[安装故障排除](https://github.com/Azure/azure-cli/blob/dev/doc/install_troubleshooting.md)。
### 开发者安装(见下文)
- [Docker](#docker)
- [Edge 构建](#edge-builds)
- [开发者设置](#developer-setup)
## 用法
```
$ az [ group ] [ subgroup ] [ command ] {parameters}
```
### 入门指南
有关深入的说明,请参阅[“入门”指南](https://learn.microsoft.com/cli/azure/get-started-with-az-cli2)。
如需获取用法和帮助内容,请传入 `-h` 参数,例如:
```
$ az storage -h
$ az vm create -h
```
### 亮点
以下是一些功能和概念,可以帮助您充分利用 Azure CLI。

以下示例展示了使用 `--output table` 格式的效果,您可以使用 `az configure` 命令更改默认设置。
#### Tab 补全
我们支持对组、命令以及某些参数进行 Tab 补全
```
# 查找 resource group 和名称
$ az vm show -g [tab][tab]
AccountingGroup RGOne WebPropertiesRG
$ az vm show -g WebPropertiesRG -n [tab][tab]
StoreVM Bizlogic
$ az vm show -g WebPropertiesRG -n Bizlogic
```
#### 查询
您可以使用 `--query` 参数和 [JMESPath](http://jmespath.org/) 查询语法来自定义输出。
```
$ az vm list --query "[?provisioningState=='Succeeded'].{ name: name, os: storageProfile.osDisk.osType }"
Name Os
---------------------- -------
storevm Linux
bizlogic Linux
demo32111vm Windows
dcos-master-39DB807E-0 Linux
```
#### 退出代码
出于脚本编写的目的,我们会针对不同场景输出特定的退出代码。
|退出代码 |场景 |
|---|---|
|0 |命令成功运行。 |
|1 |一般性错误;服务器返回错误状态码、CLI 验证失败等。 |
|2 |解析器错误;请检查命令行输入。 |
|3 |缺少 ARM 资源;用于 `show` 命令的存在性检查。 |
### 常见场景及高效使用 Azure CLI
请查看[高效使用 Azure CLI 的技巧](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively)。其中介绍了一些常见场景:
- [输出格式(json、table 或 tsv)](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#output-formatting-json-table-or-tsv)
- [将值从一个命令传递到另一个命令](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#pass-values-from-one-command-to-another)
- [异步操作](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#async-operations)
- [通用更新参数](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#generic-update-arguments)
- [通用资源命令 - `az resource`](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#generic-resource-commands---az-resource)
- [REST API 命令 - `az rest`](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#rest-api-command---az-rest)
- [引号问题](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#quoting-issues)
- [在代理后工作](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#work-behind-a-proxy)
- [并发构建](https://learn.microsoft.com/en-us/cli/azure/use-cli-effectively#concurrent-builds)
### 更多示例和代码片段
如需获取更多用法示例,请查看我们的 [GitHub 示例仓库](http://github.com/Azure/azure-cli-samples) 或 [https://learn.microsoft.com/cli/azure/overview](https://learn.microsoft.com/cli/azure/overview)。
### 在 Visual Studio Code 中编写和运行命令
借助 [Azure CLI Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.azurecli) Visual Studio Code 扩展,您可以创建 `.azcli` 文件并使用以下功能:
- 为命令及其参数提供 IntelliSense。
- 命令的代码片段,可自动插入所需参数。
- 在集成终端中运行当前命令。
- 运行当前命令并在并排编辑器中显示其输出。
- 鼠标悬停时显示文档。
- 在状态栏中显示当前订阅和默认值。
- 要为 `.ps1` 或 `.sh` 等其他文件类型启用 IntelliSense,请参阅 [microsoft/vscode-azurecli#48](https://github.com/microsoft/vscode-azurecli/issues/48)。

## 数据收集
该软件可能会收集有关您以及您如何使用该软件的信息,并将其发送给 Microsoft。Microsoft 可能会使用此信息来提供服务并改进我们的产品和服务。您可以按照仓库中的说明关闭遥测。软件中的某些功能也可能允许您和 Microsoft 从您的应用程序用户那里收集数据。如果您使用这些功能,您必须遵守适用法律,包括向您的应用程序用户提供适当的通知以及 Microsoft 隐私声明的副本。我们的隐私声明位于 https://go.microsoft.com/fwlink/?LinkID=824704。您可以在帮助文档和我们的隐私声明中了解有关数据收集和使用的更多信息。您对该软件的使用即表示您同意这些惯例。
### 遥测配置
遥测收集默认开启。要选择退出,请运行 `az config set core.collect_telemetry=no` 将其关闭。
## 报告问题和反馈
如果您在使用该工具时遇到任何错误,请在我们的 GitHub 仓库的 [Issues](https://github.com/Azure/azure-cli/issues) 部分提交问题。
要在命令行提供反馈,请尝试使用 `az feedback` 命令。
\[Microsoft 内部] 您可以通过 azpycli@microsoft.com 联系开发团队。
## 开发者安装
### Docker
我们维护了一个预配置了 Azure CLI 的 Docker 镜像。
有关可用版本,请查看我们的 [Docker 标签](https://mcr.microsoft.com/v2/azure-cli/tags/list)。
```
$ docker run -u $(id -u):$(id -g) -v ${HOME}:/home/az -e HOME=/home/az --rm -it mcr.microsoft.com/azure-cli:
```
### Edge 构建
如果您想获取 `dev` 分支的最新构建,可以使用我们的“edge”构建。
您可以通过以下链接下载最新的构建:
| 包 | 链接 |
|:-----------------:|:-------------------------------------------|
| MSI | https://aka.ms/InstallAzureCliWindowsEdge |
| Homebrew Formula | https://aka.ms/InstallAzureCliHomebrewEdge |
| Ubuntu Bionic Deb | https://aka.ms/InstallAzureCliBionicEdge |
| Ubuntu Focal Deb | https://aka.ms/InstallAzureCliFocalEdge |
| Ubuntu Jammy Deb | https://aka.ms/InstallAzureCliJammyEdge |
| RPM el8 | https://aka.ms/InstallAzureCliRpmEl8Edge |
在 Windows 上,您需要先卸载正式版,然后才能安装 edge 构建。(详见 https://github.com/Azure/azure-cli/issues/25607#issuecomment-1452855212)
您可以使用以下命令轻松安装最新的 Homebrew edge 构建:
```
# 您需要先使用 `brew uninstall azure-cli` 卸载稳定版本
curl --location --silent --output azure-cli.rb https://aka.ms/InstallAzureCliHomebrewEdge
brew install --build-from-source azure-cli.rb
```
您可以使用以下命令在 Ubuntu Jammy 上安装 edge 构建:
```
curl --location --silent --output azure-cli_jammy.deb https://aka.ms/InstallAzureCliJammyEdge && dpkg -i azure-cli_jammy.deb
```
并使用 rpm 包在 RHEL 8 或 CentOS Stream 8 上安装 edge 构建:
```
dnf install -y $(curl --location --silent --output /dev/null --write-out %{url_effective} https://aka.ms/InstallAzureCliRpmEl8Edge)
```
以下是在虚拟环境中使用 pip3 安装 edge 构建的示例。`--upgrade-strategy=eager` 选项也将安装依赖项的 edge 构建。
```
$ python3 -m venv env
$ . env/bin/activate
$ pip3 install --pre azure-cli --extra-index-url https://azurecliprod.blob.core.windows.net/edge --upgrade-strategy=eager
```
要升级当前的 edge 构建,请传入 `--upgrade` 选项。由于该源会频繁更新,因此也推荐使用 `--no-cache-dir` 选项。
```
$ pip3 install --upgrade --pre azure-cli --extra-index-url https://azurecliprod.blob.core.windows.net/edge --no-cache-dir --upgrade-strategy=eager
```
edge 构建作为 Azure DevOps Pipelines 的一部分,会在每个合并到 `dev` 分支的 PR 时生成。
### 获取任意提交或 PR 的构建
如果您想获取任意提交或 PR 的构建,请参阅:
[在发布前试用新功能](doc/try_new_features_before_release.md)
## 开发者设置
如果您想设置开发环境并为 CLI 做出贡献,请参阅:
[配置您的计算机](https://github.com/Azure/azure-cli/blob/dev/doc/configuring_your_machine.md)
[编写命令模块](https://github.com/Azure/azure-cli/tree/dev/doc/authoring_command_modules)
[代码生成](https://github.com/Azure/aaz-dev-tools)
## 贡献代码
本项目已采用 [Microsoft 开源行为准则](https://opensource.microsoft.com/codeofconduct/)。
有关更多信息,请参阅[行为准则 FAQ](https://opensource.microsoft.com/codeofconduct/faq/),或如有任何其他问题或意见,请联系 [opencode@microsoft.com](mailto:opencode@microsoft.com)。
如果您想成为该项目的活跃贡献者,请遵循 [Microsoft 开源准则](https://opensource.microsoft.com/collaborate) 中提供的说明。
标签:Python, 云计算, 微软Azure, 无后门, 规则引擎, 请求拦截, 运维, 逆向工具