Azure CLI 详细教程:从安装到高级应用 – wiki基地


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 及其他常用工具(如 terraformkubectl)。对于快速任务或不想在本地安装 CLI 的情况,这是一个极佳的选择。

如何使用 Azure Cloud Shell:

  1. 访问 Azure 门户
  2. 在顶部导航栏中,点击 Cloud Shell 图标(>_)。
  3. 首次使用时,可能需要选择 Bash 或 PowerShell 环境,并创建存储账户以持久化会话数据。

B. 本地安装

选择适合你操作系统的安装方法。

Windows:

推荐使用 WinGet (Windows 包管理器) 进行安装,它支持自动更新。

bash
winget install -id Microsoft.AzureCLI

或者,你也可以通过 MSI 安装程序:

  1. Azure CLI 官方下载页面 下载最新的 MSI 安装包。
  2. 运行 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 (命令): 要执行的具体操作(例如,createlistdelete)。
  • --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 函数应用。

    1. 创建资源组:
      bash
      az group create --name MyFunctionsRG --location eastus
    2. 创建存储账户 (函数应用必需):
      bash
      az storage account create --name mystorageaccount12345 --location eastus --resource-group MyFunctionsRG --sku Standard_LRS
    3. 创建函数应用:
      bash
      az functionapp create --resource-group MyFunctionsRG --consumption-plan-location eastus --runtime node --runtime-version 18 --functions-version 4 --name MyNodeFunctionApp --storage-account mystorageaccount12345
    4. 部署代码: 通常使用 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 集群至关重要。

    1. 创建资源组:
      bash
      az group create --name MyAKSResourceGroup --location eastus
    2. 创建 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 集群。
    3. 获取集群凭据 (与 kubectl 配合使用):
      bash
      az aks get-credentials --resource-group MyAKSResourceGroup --name MyAKSCluster --overwrite-existing

      此命令下载凭据并配置 kubectl 以连接到你的集群。
    4. 扩展节点池:
      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 setaz 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 --helpaz interactive,将是你进一步深入学习 Azure CLI 的最佳途径。

滚动至顶部