Azure CLI 使用指南 #
什么是 Azure CLI? #
Azure CLI(命令行界面)是微软提供的跨平台命令行工具,用于管理 Azure 资源。
text
┌─────────────────────────────────────────────────────────────┐
│ Azure CLI 概览 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 特点 │
│ ├── 跨平台: Windows, macOS, Linux │
│ ├── 轻量级: 基于 Python │
│ ├── 易用性: 简洁的命令语法 │
│ ├── 可脚本化: 支持 Bash, PowerShell │
│ └── 可扩展: 支持扩展插件 │
│ │
│ 与其他工具对比 │
│ ├── Azure Portal: 图形界面,适合初学者 │
│ ├── Azure CLI: 命令行,适合自动化 │
│ ├── Azure PowerShell: PowerShell 模块 │
│ └── REST API: 编程接口 │
│ │
└─────────────────────────────────────────────────────────────┘
安装 Azure CLI #
各平台安装方式 #
text
┌─────────────────────────────────────────────────────────────┐
│ 安装方式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ macOS (使用 Homebrew) │
│ $ brew install azure-cli │
│ │
│ Windows (使用 MSI) │
│ 下载并运行 MSI 安装包 │
│ https://aka.ms/installazurecliwindows │
│ │
│ Linux (Ubuntu/Debian) │
│ $ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash │
│ │
│ Linux (RHEL/CentOS) │
│ $ sudo rpm --import https://packages.microsoft.com/keys... │
│ $ sudo dnf install azure-cli │
│ │
│ Docker │
│ $ docker run -it mcr.microsoft.com/azure-cli │
│ │
└─────────────────────────────────────────────────────────────┘
验证安装 #
bash
# 检查版本
az --version
# 输出示例
azure-cli 2.50.0
core 2.50.0
telemetry 1.0.8
Dependencies:
msal 1.20.0
azure-mgmt-resource 23.0.1
Python location '/usr/local/Cellar/azure-cli/2.50.0/libexec/bin/python'
Extensions directory '/Users/you/.azure/cliextensions'
Python (Darwin) 3.11.4
更新 Azure CLI #
bash
# macOS
brew upgrade azure-cli
# Windows
az upgrade
# Linux
sudo dnf update azure-cli
# 或
sudo apt-get update && sudo apt-get upgrade azure-cli
登录与认证 #
登录方式 #
text
┌─────────────────────────────────────────────────────────────┐
│ 登录方式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 交互式登录(推荐) │
│ $ az login │
│ └── 自动打开浏览器进行认证 │
│ │
│ 设备码登录 │
│ $ az login --use-device-code │
│ └── 适用于无浏览器环境 │
│ │
│ 服务主体登录 │
│ $ az login --service-principal \ │
│ -u <app-id> \ │
│ -p <password-or-cert> \ │
│ --tenant <tenant-id> │
│ └── 适用于自动化脚本 │
│ │
│ 托管身份登录 │
│ $ az login --identity │
│ └── 适用于 Azure 资源内部 │
│ │
└─────────────────────────────────────────────────────────────┘
交互式登录 #
bash
# 登录 Azure
az login
# 输出示例
[
{
"cloudName": "AzureCloud",
"homeTenantId": "xxx-xxx-xxx",
"id": "subscription-id",
"isDefault": true,
"name": "My Subscription",
"state": "Enabled",
"tenantId": "xxx-xxx-xxx"
}
]
服务主体登录 #
bash
# 创建服务主体
az ad sp create-for-rbac --name myServicePrincipal
# 输出
{
"appId": "xxx-xxx-xxx",
"displayName": "myServicePrincipal",
"password": "xxx-xxx-xxx",
"tenant": "xxx-xxx-xxx"
}
# 使用服务主体登录
az login --service-principal \
-u <appId> \
-p <password> \
--tenant <tenant-id>
订阅管理 #
查看和管理订阅 #
bash
# 列出所有订阅
az account list --output table
# 输出
Name CloudName SubscriptionId State IsDefault
---------------------- ----------- ---------------- ------- -----------
My Subscription AzureCloud xxx-xxx-xxx Enabled True
Test Subscription AzureCloud yyy-yyy-yyy Enabled False
# 设置默认订阅
az account set --subscription "<subscription-id-or-name>"
# 查看当前订阅
az account show
# 切换订阅
az account set --subscription "Test Subscription"
常用命令 #
资源组管理 #
bash
# 创建资源组
az group create \
--name myResourceGroup \
--location eastus
# 列出所有资源组
az group list --output table
# 查看资源组详情
az group show --name myResourceGroup
# 删除资源组(包含所有资源)
az group delete --name myResourceGroup --yes --no-wait
虚拟机管理 #
bash
# 创建虚拟机
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys
# 列出虚拟机
az vm list --output table
# 启动虚拟机
az vm start --resource-group myResourceGroup --name myVM
# 停止虚拟机
az vm stop --resource-group myResourceGroup --name myVM
# 重启虚拟机
az vm restart --resource-group myResourceGroup --name myVM
# 删除虚拟机
az vm delete --resource-group myResourceGroup --name myVM --yes
# 获取虚拟机公网 IP
az vm show \
--resource-group myResourceGroup \
--name myVM \
-d --query publicIps -o tsv
存储账户管理 #
bash
# 创建存储账户
az storage account create \
--name mystorageaccount123 \
--resource-group myResourceGroup \
--location eastus \
--sku Standard_LRS \
--kind StorageV2
# 列出存储账户
az storage account list --output table
# 获取存储账户密钥
az storage account keys list \
--resource-group myResourceGroup \
--account-name mystorageaccount123
# 删除存储账户
az storage account delete \
--name mystorageaccount123 \
--resource-group myResourceGroup
Web 应用管理 #
bash
# 创建 App Service 计划
az appservice plan create \
--name myAppServicePlan \
--resource-group myResourceGroup \
--sku F1 \
--is-linux
# 创建 Web 应用
az webapp create \
--name myWebApp123 \
--resource-group myResourceGroup \
--plan myAppServicePlan \
--runtime "NODE|18-lts"
# 列出 Web 应用
az webapp list --output table
# 部署代码
az webapp deployment source config \
--name myWebApp123 \
--resource-group myResourceGroup \
--repo-url https://github.com/Azure-Samples/nodejs-docs-hello-world \
--branch master \
--manual-integration
# 查看 Web 应用日志
az webapp log tail \
--name myWebApp123 \
--resource-group myResourceGroup
数据库管理 #
bash
# 创建 SQL Server
az sql server create \
--name mysqlserver123 \
--resource-group myResourceGroup \
--location eastus \
--admin-user sqladmin \
--admin-password "P@ssw0rd123!"
# 创建 SQL 数据库
az sql db create \
--name myDatabase \
--resource-group myResourceGroup \
--server mysqlserver123 \
--service-objective S0
# 创建防火墙规则
az sql server firewall-rule create \
--name AllowAllIPs \
--resource-group myResourceGroup \
--server mysqlserver123 \
--start-ip-address 0.0.0.0 \
--end-ip-address 255.255.255.255
输出格式 #
支持的输出格式 #
text
┌─────────────────────────────────────────────────────────────┐
│ 输出格式 │
├─────────────────────────────────────────────────────────────┤
│ │
│ json (默认) │
│ └── 完整的 JSON 格式 │
│ │
│ jsonc │
│ └── 带颜色高亮的 JSON │
│ │
│ table │
│ └── 表格格式,适合查看 │
│ │
│ tsv │
│ └── 制表符分隔,适合脚本处理 │
│ │
│ yaml │
│ └── YAML 格式 │
│ │
│ none │
│ └── 无输出 │
│ │
└─────────────────────────────────────────────────────────────┘
输出示例 #
bash
# JSON 输出
az vm list --output json
# 表格输出
az vm list --output table
# TSV 输出(适合脚本)
az vm list --query "[].{Name:name, RG:resourceGroup}" --output tsv
# YAML 输出
az vm list --output yaml
查询语法 #
JMESPath 查询 #
bash
# 列出所有虚拟机名称
az vm list --query "[].name" --output tsv
# 获取特定字段
az vm list --query "[].{Name:name, RG:resourceGroup, Location:location}" --output table
# 过滤结果
az vm list --query "[?location=='eastus'].name" --output tsv
# 获取第一个结果
az vm list --query "[0].name" --output tsv
# 排序
az vm list --query "sort_by([], &name)" --output table
# 聚合
az vm list --query "length([])" --output tsv
常用查询示例 #
bash
# 获取虚拟机 IP 地址
az vm list-ip-addresses \
--resource-group myResourceGroup \
--query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" \
--output tsv
# 获取存储账户主密钥
az storage account keys list \
--resource-group myResourceGroup \
--account-name mystorageaccount \
--query "[0].value" \
--output tsv
# 获取订阅 ID
az account show --query "id" --output tsv
脚本编写 #
Bash 脚本示例 #
bash
#!/bin/bash
# 设置变量
RESOURCE_GROUP="myResourceGroup"
LOCATION="eastus"
VM_NAME="myVM"
# 创建资源组
echo "Creating resource group..."
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
# 创建虚拟机
echo "Creating virtual machine..."
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys \
--output json
# 获取虚拟机 IP
echo "Getting VM public IP..."
PUBLIC_IP=$(az vm show \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
-d --query publicIps \
--output tsv)
echo "VM created successfully!"
echo "Public IP: $PUBLIC_IP"
echo "SSH: ssh azureuser@$PUBLIC_IP"
PowerShell 脚本示例 #
powershell
# 设置变量
$RESOURCE_GROUP = "myResourceGroup"
$LOCATION = "eastus"
$VM_NAME = "myVM"
# 创建资源组
Write-Host "Creating resource group..."
az group create `
--name $RESOURCE_GROUP `
--location $LOCATION
# 创建虚拟机
Write-Host "Creating virtual machine..."
az vm create `
--resource-group $RESOURCE_GROUP `
--name $VM_NAME `
--image UbuntuLTS `
--admin-username azureuser `
--generate-ssh-keys
# 获取虚拟机 IP
$PUBLIC_IP = az vm show `
--resource-group $RESOURCE_GROUP `
--name $VM_NAME `
-d --query publicIps `
--output tsv
Write-Host "VM created successfully!"
Write-Host "Public IP: $PUBLIC_IP"
使用变量和参数 #
bash
#!/bin/bash
# 参数处理
if [ $# -eq 0 ]; then
echo "Usage: $0 <resource-group> <vm-name>"
exit 1
fi
RESOURCE_GROUP=$1
VM_NAME=$2
LOCATION="eastus"
# 检查资源组是否存在
if az group show --name $RESOURCE_GROUP &>/dev/null; then
echo "Resource group exists"
else
echo "Creating resource group..."
az group create --name $RESOURCE_GROUP --location $LOCATION
fi
# 创建虚拟机
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys
扩展管理 #
安装和管理扩展 #
bash
# 列出已安装扩展
az extension list --output table
# 查看可用扩展
az extension list-available --output table
# 安装扩展
az extension add --name azure-devops
# 更新扩展
az extension update --name azure-devops
# 移除扩展
az extension remove --name azure-devops
常用扩展 #
| 扩展名 | 功能 |
|---|---|
| azure-devops | Azure DevOps 管理 |
| aks-preview | AKS 预览功能 |
| storage-preview | 存储预览功能 |
| vm-repair | 虚拟机修复工具 |
配置管理 #
配置文件 #
text
┌─────────────────────────────────────────────────────────────┐
│ 配置文件位置 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Linux/macOS │
│ ~/.azure/config │
│ │
│ Windows │
│ %USERPROFILE%\.azure\config │
│ │
│ 配置内容示例: │
│ [cloud] │
│ name = AzureCloud │
│ │
│ [core] │
│ output = table │
│ collect_telemetry = yes │
│ │
│ [logging] │
│ enable_log_file = yes │
│ log_dir = ~/.azure/logs │
│ │
└─────────────────────────────────────────────────────────────┘
配置命令 #
bash
# 查看当前配置
az configure --list-defaults
# 设置默认输出格式
az configure --defaults output=table
# 设置默认资源组
az configure --defaults group=myResourceGroup
# 设置默认位置
az configure --defaults location=eastus
# 清除默认设置
az configure --defaults group='' location=''
最佳实践 #
命令编写建议 #
text
┌─────────────────────────────────────────────────────────────┐
│ 最佳实践 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 使用变量 │
│ └── 避免硬编码,便于维护 │
│ │
│ 2. 添加错误处理 │
│ └── 检查命令执行结果 │
│ │
│ 3. 使用 --output 参数 │
│ └── 控制输出格式 │
│ │
│ 4. 使用 --no-wait 参数 │
│ └── 长时间操作异步执行 │
│ │
│ 5. 使用 --query 参数 │
│ └── 提取所需信息 │
│ │
│ 6. 使用服务主体 │
│ └── 自动化脚本避免交互登录 │
│ │
│ 7. 使用 --dry-run 参数 │
│ └── 预览变更(部分命令支持) │
│ │
└─────────────────────────────────────────────────────────────┘
错误处理示例 #
bash
#!/bin/bash
set -e # 遇错即停
RESOURCE_GROUP="myResourceGroup"
# 检查命令是否成功
if az group show --name $RESOURCE_GROUP &>/dev/null; then
echo "Resource group exists"
else
echo "Creating resource group..."
az group create --name $RESOURCE_GROUP --location eastus
fi
# 使用 || 处理错误
az vm create --resource-group $RESOURCE_GROUP --name myVM || {
echo "Failed to create VM"
exit 1
}
echo "VM created successfully"
下一步 #
现在你已经掌握了 Azure CLI 的基本使用,接下来学习 虚拟机基础 深入了解 Azure 计算服务!
最后更新:2026-03-29