Azure CLI 详细教程:从安装到高级应用
1. 引言
在云计算日益普及的今天,Azure 作为微软的旗舰级云服务平台,提供了丰富的服务和强大的功能。Azure CLI(Command-Line Interface)是管理这些服务和资源的强大工具。它是一个跨平台的命令行工具,允许你通过命令行与 Azure 进行交互,执行各种管理任务。
为什么选择 Azure CLI?
- 跨平台: 可在 Windows、macOS 和 Linux 上运行。
- 自动化和脚本化: 适合自动化日常任务、部署基础设施和管理资源。
- 高效性: 相比图形界面,命令行操作通常更快、更直接。
- 集成: 可以轻松集成到 CI/CD 管道和自动化工作流中。
- 一致性: 提供一致的命令结构,易于学习和使用。
本教程将引导你从安装 Azure CLI 开始,逐步深入到其基本用法和高级应用,帮助你成为 Azure CLI 的熟练使用者。
2. 安装
Azure CLI 可以在多种环境下使用,包括本地安装和 Azure Cloud Shell。
A. Azure Cloud Shell (零安装选项)
Azure Cloud Shell 是一个基于浏览器的 Shell 环境,预配置了最新版本的 Azure CLI 及其他常用工具(如 terraform 和 kubectl)。对于快速任务或不想在本地安装 CLI 的情况,这是一个极佳的选择。
如何使用 Azure Cloud Shell:
- 访问 Azure 门户。
- 在顶部导航栏中,点击 Cloud Shell 图标(
>_)。 - 首次使用时,可能需要选择 Bash 或 PowerShell 环境,并创建存储账户以持久化会话数据。
B. 本地安装
选择适合你操作系统的安装方法。
Windows:
推荐使用 WinGet (Windows 包管理器) 进行安装,它支持自动更新。
bash
winget install -id Microsoft.AzureCLI
或者,你也可以通过 MSI 安装程序:
- 从 Azure CLI 官方下载页面 下载最新的 MSI 安装包。
- 运行 MSI 文件并按照安装向导的指示完成安装。
macOS:
使用 Homebrew 进行安装是 macOS 上最简单的方式。
bash
brew update && brew install azure-cli
Linux (Ubuntu/Debian):
以下脚本会自动配置微软的包仓库并安装 Azure CLI。
bash
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
对于其他 Linux 发行版(如 RHEL/CentOS Stream 或 SLES/OpenSUSE),请参考 官方文档 获取详细安装指南。
验证安装:
安装完成后,打开一个新的终端或命令提示符窗口,运行以下命令验证安装并检查版本:
bash
az --version
3. 入门 (基本用法)
A. 登录 Azure
在使用 Azure CLI 管理资源之前,你需要登录你的 Azure 账户。
bash
az login
该命令会打开一个网页浏览器,引导你使用 Azure 凭据登录。如果你的账户关联了多个订阅,你可以使用以下命令设置默认订阅:
bash
az account set --subscription "<订阅名称或ID>"
B. 理解命令结构
Azure CLI 命令遵循一致的结构:az {命令组} {命令子组} {命令} {--参数}。
az: 根命令。command group(命令组): 组织相关命令(例如,group用于资源组,vm用于虚拟机)。command subgroup(命令子组): 在命令组内进一步细分命令(例如,vm image)。command(命令): 要执行的具体操作(例如,create、list、delete)。--parameters(参数): 为命令提供详细信息(例如,--name、--resource-group、--location)。
C. 管理资源组
资源组是 Azure 资源的逻辑容器,用于统一管理和生命周期。
- 创建资源组:
bash
az group create --name MyResourceGroup --location eastus - 列出资源组:
bash
az group list --output table - 删除资源组:
bash
az group delete --name MyResourceGroup --yes --no-wait
--yes确认删除操作,--no-wait表示命令不等待删除完成就返回。
D. 常见输出格式
Azure CLI 命令默认输出 JSON 格式。你可以使用 --output (或 -o) 参数改变输出格式。
json(默认): JSON 格式输出。jsonc: 彩色 JSON 输出。table: 人类可读的 ASCII 表格,便于快速浏览。tsv: 制表符分隔值,非常适合脚本处理。
例如:
bash
az group list --output table
E. 获取帮助
Azure CLI 提供了强大的内置帮助系统。
- 通用帮助:
bash
az --help - 命令组帮助:
bash
az vm --help - 特定命令帮助:
bash
az vm create --help - 通过关键字查找命令:
bash
az find "vm" - 交互模式:
bash
az interactive
这会进入一个交互式 Shell,提供自动补全和命令描述,极大提高使用效率。
4. 高级 Azure CLI 技巧
A. 使用 JMESPath 进行查询
JMESPath 是一种用于 JSON 的查询语言,允许你过滤和转换 Azure CLI 命令的输出。结合 --query 参数使用,可以精确提取所需数据。
- 选择特定属性:
bash
az vm list --query "[].{Name:name, Location:location, ResourceGroup:resourceGroup}" --output table
此命令列出虚拟机的名称、位置和资源组,并以表格形式呈现。 - 过滤结果:
bash
az vm list --query "[?powerState=='VM running'].name" --output tsv
此命令过滤出powerState为 ‘VM running’ 的虚拟机,并以制表符分隔值输出它们的名称。 - 嵌套查询和投影:
bash
az group show --name MyResourceGroup --query "properties.provisioningState"
这会检索特定资源组的配置状态。
B. 脚本化和自动化
Azure CLI 命令是脚本化的理想选择,可以用于 Bash、PowerShell 或其他脚本语言,以自动化重复任务。
- 遍历资源:
bash
for vm in $(az vm list --query "[].name" --output tsv); do
echo "Stopping VM: $vm"
az vm stop --name $vm --resource-group MyResourceGroup --no-wait
done
此 Bash 脚本遍历订阅中的所有虚拟机名称并停止它们。 - 命令链:
bash
az vm create -n myVM -g MyResourceGroup --image UbuntuLTS --generate-ssh-keys && \
az vm open-port --port 80 --resource-group MyResourceGroup --name myVM
这条命令会创建一个虚拟机,然后在其成功创建后打开 80 端口。
C. 管理特定 Azure 服务
Azure CLI 提供了针对各种 Azure 服务的详细命令组。
-
Azure Functions (函数应用):
Azure CLI 可以用于创建和管理 Azure 函数应用。- 创建资源组:
bash
az group create --name MyFunctionsRG --location eastus - 创建存储账户 (函数应用必需):
bash
az storage account create --name mystorageaccount12345 --location eastus --resource-group MyFunctionsRG --sku Standard_LRS - 创建函数应用:
bash
az functionapp create --resource-group MyFunctionsRG --consumption-plan-location eastus --runtime node --runtime-version 18 --functions-version 4 --name MyNodeFunctionApp --storage-account mystorageaccount12345 - 部署代码: 通常使用 Azure Functions Core Tools 进行本地开发和部署,但 CLI 可以促进 ZIP 部署。
bash
az functionapp deployment source config-zip -g MyFunctionsRG -n MyNodeFunctionApp --src "path/to/your/functionapp.zip"
- 创建资源组:
-
Azure Kubernetes Service (AKS):
Azure CLI 对于部署和管理 AKS 集群至关重要。- 创建资源组:
bash
az group create --name MyAKSResourceGroup --location eastus - 创建 AKS 集群:
bash
az aks create --resource-group MyAKSResourceGroup --name MyAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys --kubernetes-version 1.27.7
这会创建一个带有监控功能并生成 SSH 密钥的基本 AKS 集群。 - 获取集群凭据 (与
kubectl配合使用):
bash
az aks get-credentials --resource-group MyAKSResourceGroup --name MyAKSCluster --overwrite-existing
此命令下载凭据并配置kubectl以连接到你的集群。 - 扩展节点池:
bash
az aks scale --resource-group MyAKSResourceGroup --name MyAKSCluster --node-count 3
- 创建资源组:
D. 使用 ARM 模板进行基础设施即代码
Azure CLI 可以部署 Azure Resource Manager (ARM) 模板,这些 JSON 文件以声明方式定义你的基础设施。
- 部署本地 ARM 模板:
bash
az deployment group create --resource-group MyResourceGroup --template-file azuredeploy.json --parameters @azuredeploy.parameters.json
其中,azuredeploy.json是你的 ARM 模板文件,azuredeploy.parameters.json包含参数值。
E. 扩展 (Extensions)
Azure CLI 的功能可以通过各种扩展进行扩展,以支持特定的服务(如 IoT、DevOps)。
- 添加扩展:
bash
az extension add --name azure-devops - 列出已安装的扩展:
bash
az extension list
F. 配置 (Configuration)
你可以使用 az config set 或 az init 设置常用参数的默认值,从而减少输入并简化命令。
- 设置默认资源组和位置:
bash
az config set defaults.group=MyDefaultResourceGroup defaults.location=westus
现在,对于在此默认值下操作的命令,你无需再指定--resource-group MyDefaultResourceGroup或--location westus。 - 交互式配置:
bash
az init
此命令提供了一种交互式方式来设置常见配置。
5. 结论
Azure CLI 是管理 Azure 资源的强大而灵活的工具。从简单的资源创建到复杂的自动化脚本,它都能提供高效的解决方案。通过掌握其安装、基本命令、JMESPath 查询、脚本化和高级服务管理等功能,你将能够更有效地管理和操作你的 Azure 环境。不断探索 az --help 和 az interactive,将是你进一步深入学习 Azure CLI 的最佳途径。