Azure CLI 快速入门:基础教程 – wiki基地


Azure CLI 快速入门:基础教程

欢迎来到 Azure 的世界!作为微软的云计算平台,Azure 提供了海量服务和资源供我们使用。管理这些资源可以通过多种方式,其中命令行接口(CLI)以其高效、灵活和可脚本化的特性,成为许多开发者、运维工程师以及自动化工作流的首选工具。本文将带领您踏上 Azure CLI 的入门之旅,从安装到执行基本操作,为您打下坚实的基础。

引言:什么是 Azure CLI?为什么选择它?

Azure CLI 是一个跨平台的命令行工具,它允许您通过简单的命令与 Azure 进行交互,管理几乎所有的 Azure 资源,包括虚拟机、存储账户、数据库、网络配置等等。

为什么选择 Azure CLI?

  1. 跨平台性: Azure CLI 支持在 Windows、macOS 和 Linux 等多种操作系统上运行,您可以在您熟悉的开发环境中工作。
  2. 高效与自动化: 命令行操作通常比图形界面更快。更重要的是,您可以将一系列 Azure CLI 命令编写成脚本(如 Bash、PowerShell 或 Python),实现重复性任务的自动化,这对于部署、配置和日常管理至关重要。
  3. 灵活与精确: 通过命令行,您可以精确地控制每个资源的配置参数,执行复杂的批量操作或精细调整设置,这是图形界面有时难以实现的。
  4. 与 DevOps 流程集成: Azure CLI 是 CI/CD (持续集成/持续部署) 管道中常用的工具,可以轻松集成到 Jenkins, Azure DevOps, GitHub Actions 等自动化平台。
  5. 强大的帮助系统: Azure CLI 内置了详细的帮助文档,您可以随时通过命令查询各种模块、命令和参数的用法。
  6. 快速迭代与更新: Azure CLI 紧跟 Azure 服务的更新步伐,通常新服务或新特性发布后很快就能在 CLI 中获得支持。

简而言之,掌握 Azure CLI 不仅能提高您管理 Azure 资源的效率,更是迈向 Azure 自动化和 DevOps 的重要一步。

准备工作:踏上旅程前的必要条件

在开始安装和使用 Azure CLI 之前,您需要准备好以下内容:

  1. 一个 Azure 订阅: 如果您还没有 Azure 订阅,可以访问 Azure 官网注册一个免费账户。免费账户通常包含一定额度的免费服务或试用期,足够您完成本教程中的所有练习。
  2. 一台安装有支持的操作系统的计算机: Azure CLI 支持 Windows、macOS 和 Linux。您需要在其中任一系统上进行安装。
  3. 网络连接: 安装和使用 Azure CLI 都需要网络连接来下载安装包并与 Azure 服务通信。

安装 Azure CLI

Azure CLI 的安装过程因操作系统而异,但总体都很 straightforward。以下是主流操作系统的安装指南:

1. 在 Windows 上安装 Azure CLI

在 Windows 上安装 Azure CLI 最简单的方式是使用微软提供的 MSI 安装包。

  • 下载 MSI 安装包: 访问 Azure CLI 的官方安装页面(通常搜索 “Install Azure CLI on Windows” 即可找到),下载最新的 MSI 安装程序。
  • 运行安装包: 双击下载的 .msi 文件,按照安装向导的提示进行安装。过程非常简单,基本上是一路点击 “Next”,同意许可协议,选择安装路径(通常使用默认路径即可)。
  • 完成安装: 安装完成后,勾选“完成”或“关闭”。

安装程序会自动将 Azure CLI 添加到您的系统环境变量 PATH 中,这意味着您可以在命令提示符 (CMD)、PowerShell 或 Windows Terminal 中直接运行 az 命令。

  • 验证安装: 打开一个新的命令提示符、PowerShell 或 Windows Terminal 窗口(重要:如果安装前已经打开,需要关闭重开,或者刷新环境变量),输入以下命令并按 Enter:

    bash
    az --version

    如果安装成功,您将看到 Azure CLI 的版本信息以及相关的 Python 和其他组件信息。

2. 在 macOS 上安装 Azure CLI

在 macOS 上,推荐使用 Homebrew 包管理器来安装 Azure CLI。Homebrew 是 macOS 上非常流行的包管理器,如果您还没有安装 Homebrew,可以访问其官网(brew.sh)按照指示安装。

  • 通过 Homebrew 安装: 打开终端,输入以下命令:

    bash
    brew update && brew install azure-cli

    这个命令会先更新 Homebrew 的包定义,然后安装 Azure CLI。整个过程可能需要一些时间,取决于您的网络速度。
    * 验证安装: 安装完成后,输入以下命令验证:

    bash
    az --version

    同样,如果成功,您将看到版本信息。

3. 在 Linux 上安装 Azure CLI

Azure CLI 支持多种 Linux 发行版,包括 Debian, Ubuntu, CentOS, RHEL, Fedora, Alpine 等。推荐使用包管理器进行安装,这样可以方便地进行更新。以下以 Debian/Ubuntu 为例说明:

  • 安装必要的软件包:

    bash
    sudo apt-get update
    sudo apt-get install ca-certificates curl apt-transport-https lsb-release gnupg

    * 下载并安装微软 GPG 密钥:

    bash
    sudo mkdir -p /etc/apt/keyrings
    curl -sL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/microsoft.gpg > /dev/null

    * 添加 Azure CLI 软件源:

    bash
    AZ_REPO=$(lsb_release -cs)
    echo "deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list

    * 安装 Azure CLI:

    bash
    sudo apt-get update
    sudo apt-get install azure-cli

    这个过程会更新 APT 包列表并安装 Azure CLI。
    * 验证安装: 安装完成后,输入:

    bash
    az --version

    如果安装成功,您将看到版本信息。

对于其他 Linux 发行版,请参考 Azure CLI 官方文档获取详细的安装步骤。

4. 使用 Azure Cloud Shell (零安装)

如果您不想在本地计算机上安装任何软件,或者需要一个随时可用的预配置环境,那么 Azure Cloud Shell 是一个绝佳的选择。

  • 什么是 Cloud Shell? Azure Cloud Shell 是一个由微软管理的、基于浏览器的命令行环境,它已经预装了 Azure CLI、Azure PowerShell、Terraform 等常用的工具。
  • 如何使用?
    • 打开您的浏览器,访问 shell.azure.com
    • 或者登录 Azure Portal (portal.azure.com),点击顶部工具栏中的 Cloud Shell 图标(一个 >_ 符号)。
    • 首次使用时,需要选择一个存储账户来持久化您的文件(如脚本)。如果您没有现有的存储账户,Cloud Shell 会引导您创建一个。
  • 优点: 无需本地安装、预装常用工具、提供一个持久化的文件存储空间。
  • 缺点: 基于浏览器,有时可能受网络环境影响;会话有空闲超时限制。

对于初学者来说,Cloud Shell 是一个极好的起点,可以快速体验 Azure CLI 而无需处理本地安装的各种潜在问题。在本教程的后续部分,您可以在本地安装的 Azure CLI 或 Cloud Shell 中执行命令,结果是相同的。

登录 Azure:连接到您的订阅

安装完 Azure CLI 后,下一步是连接到您的 Azure 账户。这通过 az login 命令完成。

  • 执行登录命令: 在您的终端或 Cloud Shell 中输入:

    bash
    az login

  • 交互式登录: 执行 az login 后,Azure CLI 会在您的默认浏览器中打开一个页面,提示您登录您的 Microsoft 账户(通常是与您的 Azure 订阅关联的邮箱)。如果浏览器没有自动打开,或者您在没有图形界面的服务器上运行,CLI 会提供一个设备代码 (Device Code) 和一个 URL。您需要在其他设备或浏览器上访问该 URL,然后输入设备代码来完成登录。

    To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXX to authenticate.

    按照提示在浏览器中完成登录。成功登录后,浏览器页面会显示“您已登录到 Microsoft Azure CLI”之类的消息,并且您的终端中也会显示您的账户信息(包含订阅列表)。

  • 查看当前账户信息: 登录成功后,Azure CLI 会默认选择您的一个订阅作为当前操作的订阅。您可以通过以下命令查看当前登录的账户信息和默认订阅:

    bash
    az account show

    输出会是一个 JSON 格式的对象,其中包含 id (订阅ID), name (订阅名称), state (状态), isDefault (是否为默认订阅) 等信息。

  • 查看所有可用订阅: 如果您的账户关联了多个 Azure 订阅,可以使用以下命令列出所有订阅:

    bash
    az account list

    这个命令也会输出一个 JSON 数组,包含您有权访问的所有订阅的信息。

  • 切换订阅: 如果您需要切换到其他订阅进行操作,可以使用 az account set 命令,指定要使用的订阅 ID 或名称:

    bash
    az account set --subscription "您的订阅名称或ID"

    请将 "您的订阅名称或ID" 替换为您要切换到的订阅的实际名称或 ID。

  • 退出登录: 如果需要退出当前账户,使用:

    bash
    az logout

    这会移除本地存储的账户凭据。

现在,您已经成功登录 Azure CLI,并连接到了您的 Azure 订阅,可以开始管理资源了!

掌握基础:Azure CLI 的核心概念与命令

Azure CLI 的命令结构非常清晰,遵循 az <group> <command> <parameters> 的模式。

  • <group>: 表示 Azure 中的一个服务或一组相关的命令,例如 group (资源组), vm (虚拟机), storage (存储), webapp (Web 应用) 等。
  • <command>: 表示在特定服务组下执行的具体操作,例如 create (创建), list (列出), show (显示详细信息), delete (删除), update (更新) 等。
  • <parameters>: 命令所需的附加信息,用于指定资源的名称、位置、配置等。参数通常以 --parameter-name <value> 的形式出现,简写形式通常是 -p <value>

1. 获取帮助:您的最佳伙伴

Azure CLI 内置了非常强大的帮助系统。当您不确定某个命令的用法时,随时使用 --help 参数。

  • 获取顶级帮助: 了解所有可用的命令组。

    bash
    az --help

  • 获取某个命令组的帮助: 了解某个服务组下所有可用的命令。例如,查看资源组相关的命令:

    bash
    az group --help

  • 获取特定命令的帮助: 了解某个具体命令的用法、参数和示例。例如,查看如何创建资源组的帮助:

    bash
    az group create --help

    帮助信息通常包含命令描述、参数说明(必需参数、可选参数、参数类型、默认值等)以及一些使用示例。在学习和使用 Azure CLI 的过程中,请频繁使用 --help,它是您解决问题的最快途径。

2. 资源组 (Resource Group):组织您的资源

在 Azure 中,资源组是管理相关资源的基本单元。一个资源组是您存放 Azure 解决方案相关资源(如虚拟机、存储账户、虚拟网络、Web 应用、数据库等)的逻辑容器。将资源放在同一个资源组中有助于统一管理它们的生命周期、访问控制和成本。

  • 创建资源组: 使用 az group create 命令创建一个新的资源组。您需要指定资源组的名称和它所在的 Azure 区域(Location)。

    bash
    az group create --name MyResourceGroupCLI --location eastasia

    • --name MyResourceGroupCLI: 指定资源组的名称。名称在您的订阅内必须唯一。
    • --location eastasia: 指定资源组的地理位置(Region)。这决定了资源组的元数据存储位置,同时也通常是您在该资源组中创建资源的默认位置。您可以根据地理位置、延迟或成本等因素选择合适的区域。可以使用 az account list-locations 命令查看所有可用区域。

    如果命令成功执行,您会看到一个 JSON 输出,描述了刚刚创建的资源组。

  • 列出资源组: 查看您的订阅中所有的资源组。

    bash
    az group list

    这将输出一个 JSON 数组,包含所有资源组的信息。如果您只想看到简洁的表格输出,可以使用 --output table 参数:

    bash
    az group list --output table

  • 查看特定资源组的详细信息: 使用 az group show 命令。

    bash
    az group show --name MyResourceGroupCLI

  • 删除资源组: 删除资源组是一个非常重要不可逆的操作。删除资源组会同时删除该资源组中的所有资源!请谨慎使用此命令。

    bash
    az group delete --name MyResourceGroupCLI

    执行此命令后,CLI 会询问您是否确认删除。如果您在脚本中需要自动删除而不想被询问,可以添加 --yes-y 参数:

    bash
    az group delete --name MyResourceGroupCLI --yes --no-wait

    * --yes: 自动确认删除,不进行提示。
    * --no-wait: 发出删除请求后立即返回,不等待删除操作完成。对于大型资源组,删除可能需要较长时间。

    强烈建议在执行删除操作前仔细检查资源组名称!

3. 创建一个简单的资源:以存储账户为例

存储账户是 Azure 中最基础和常用的服务之一,用于存储各种类型的数据(Blob、文件、队列、表)。我们将以创建一个存储账户为例,演示如何在 Azure CLI 中创建资源。

  • 查找创建存储账户的命令: 使用帮助系统。

    bash
    az storage account --help # 查看存储账户相关的命令
    az storage account create --help # 查看创建存储账户的用法和参数

    通过帮助信息,您会发现创建存储账户需要指定 --name, --resource-group, --location, --sku (存储账户类型/复制策略) 等参数。

  • 创建存储账户: 选择一个唯一的存储账户名称(全局唯一,只能包含小写字母和数字,长度3-24个字符),使用您刚刚创建的资源组和位置。

    bash
    az storage account create \
    --name mystorageaccountcli12345 \
    --resource-group MyResourceGroupCLI \
    --location eastasia \
    --sku Standard_LRS \
    --kind StorageV2

    * --name mystorageaccountcli12345: 存储账户名称。请替换为一个您自己的全局唯一名称。
    * --resource-group MyResourceGroupCLI: 指定资源组。
    * --location eastasia: 指定存储账户的位置,通常与资源组位置相同或靠近。
    * --sku Standard_LRS: 指定存储账户的性能和复制策略。Standard_LRS 表示标准性能,本地冗余存储 (Locally Redundant Storage)。这是最经济的选择,适合非关键数据或可以轻松重建的数据。其他常见的 SKU 包括 Standard_GRS (异地冗余)、Standard_ZRS (区域冗余)、Premium_LRS (高级性能,本地冗余) 等。
    * --kind StorageV2: 指定存储账户的类型。StorageV2 (通用 v2) 是推荐的类型,支持 Blob、文件、队列和表,并提供最新的功能。

    执行命令后,CLI 会输出一个包含新创建的存储账户所有详细信息的 JSON 对象。创建过程可能需要一两分钟。

  • 列出存储账户: 您可以列出特定资源组下的存储账户,或列出订阅中所有的存储账户。

    “`bash

    列出特定资源组下的存储账户

    az storage account list –resource-group MyResourceGroupCLI –output table

    列出订阅中所有的存储账户

    az storage account list –output table
    “`

  • 查看特定存储账户的详细信息:

    bash
    az storage account show \
    --name mystorageaccountcli12345 \
    --resource-group MyResourceGroupCLI

    这将输出该存储账户的完整配置信息。

  • 删除存储账户:

    bash
    az storage account delete \
    --name mystorageaccountcli12345 \
    --resource-group MyResourceGroupCLI \
    --yes

    请注意,删除存储账户后,其中的所有数据都将被永久删除且无法恢复。

4. 理解输出格式:让 CLI 为您服务

Azure CLI 的默认输出格式是 JSON (JavaScript Object Notation),这是一种结构化的数据格式,非常适合机器解析和脚本处理。然而,对于人类阅读,JSON 可能不够直观。Azure CLI 支持多种输出格式,您可以通过 --output-o 参数指定。

  • 支持的输出格式:

    • json (默认): 标准 JSON 输出。
    • jsonc: 带颜色高亮的 JSON 输出,更易读。
    • table: 以表格形式显示数据,非常适合快速浏览列表或少量属性。
    • tsv: Tab-Separated Values,制表符分隔值,适合导入到电子表格或脚本处理。
    • yaml: YAML 格式输出,另一种常用的结构化数据格式。
    • none: 不输出任何内容,仅返回命令执行状态(例如在脚本中)。
  • 示例:

    “`bash

    JSON (默认)

    az group show –name MyResourceGroupCLI

    JSONC (带颜色高亮)

    az group show –name MyResourceGroupCLI –output jsonc

    Table (表格) – 适合 list 和 show 命令

    az group list –output table

    TSV (制表符分隔) – 适合脚本处理特定字段

    az group list –output tsv

    YAML

    az group show –name MyResourceGroupCLI –output yaml
    “`

    根据您的需要选择合适的输出格式。对于初学者和日常查看,tablejsonc 通常是最友好的。对于自动化脚本,jsontsv 更常用。

5. 查询特定数据:使用 --query

当 JSON 输出包含大量信息,而您只关心其中的一部分时,可以使用 --query 参数结合 JMESPath 语法来过滤和查询结果。JMESPath 是一种用于 JSON 的查询语言。

  • 示例: 假设您想获取所有存储账户的名称和资源组。

    bash
    az storage account list --query "[].{Name:name, ResourceGroup:resourceGroup}" --output table

    * []: 表示我们要处理 JSON 数组中的每一个元素。
    * .{Name:name, ResourceGroup:resourceGroup}: 对于每个元素,创建一个新的对象,包含两个属性:Name (值为原始元素的 name 属性) 和 ResourceGroup (值为原始元素的 resourceGroup 属性)。
    * --output table: 将查询结果以表格形式显示。

    再比如,查询特定资源组中所有虚拟机的名称和电源状态:

    bash
    az vm list -g MyResourceGroupCLI --query "[].{Name:name, PowerState:instanceView.statuses[?startsWith(code, 'PowerState')].displayStatus | [0]}" --output table

    这个查询稍微复杂,利用了 JMESPath 的过滤 (?) 和选择 (| [0]) 功能。

掌握 JMESPath 可以极大地提升您从 CLI 输出中提取有用信息的能力,但作为入门教程,了解 --query 参数的存在以及它可以用于过滤和转换输出就足够了。您可以在需要时深入学习 JMESPath 语法。

进阶一瞥 (后续学习方向)

本教程涵盖了 Azure CLI 的最基础知识。在此基础上,您可以进一步学习:

  1. 管理其他 Azure 服务: 学习如何使用 Azure CLI 管理虚拟机 (az vm), 虚拟网络 (az network vnet), Web 应用 (az webapp), 数据库 (az sql server, az cosmosdb) 等各种 Azure 资源。每个服务都有其自己的命令组和参数。
  2. 使用环境变量和 Shell 脚本: 如何在 Bash、PowerShell 或 Python 脚本中集成 Azure CLI 命令,使用变量存储资源名称、位置等信息,实现自动化部署和管理。
  3. 参数文件: 对于包含大量参数的复杂命令,可以使用 --parameters @file.json 的方式从 JSON 文件中读取参数,提高命令的可读性和复用性。
  4. Service Principal (服务主体): 对于自动化和脚本执行,不推荐使用交互式登录。Service Principal 是一种用于应用程序、服务和自动化工具访问 Azure 资源的身份。学习如何创建和使用服务主体进行非交互式登录 (az login --service-principal ...)。
  5. 更高级的查询: 深入学习 JMESPath 语法,更灵活地处理 CLI 输出。
  6. 使用 Azure CLI 部署 ARM/Bicep 模板: Azure CLI 可以用来部署基础设施即代码 (IaC) 模板,如 Azure Resource Manager (ARM) 模板或 Bicep 文件。

最佳实践与技巧

  • 频繁使用 --help 这是学习和查找命令用法的最有效方法。
  • 使用 --output table--output jsonc 查看结果: 这使得输出更易于人类阅读。
  • 在脚本中使用 --output json--query 这样可以方便地解析和处理命令输出。
  • 使用资源组组织资源: 保持资源的逻辑清晰,便于统一管理和删除。
  • 使用 --yes 慎重操作: 特别是删除命令,务必确认无误后再使用 --yes
  • 使用 --no-wait 提高脚本执行效率: 对于耗时较长的操作(如创建虚拟机、删除资源组),在脚本中可以使用 --no-wait 让命令立即返回,然后在后续步骤中检查操作状态。
  • 保持 Azure CLI 更新: 定期更新您的 Azure CLI 版本,以获取最新的功能、 bug 修复和对新服务的支持。
  • 在 Cloud Shell 中试验: 对于不确定或可能影响现有资源的命令,可以在 Cloud Shell 的隔离环境中先进行试验。

故障排除 (常见问题)

  • az 命令找不到: 确保 Azure CLI 已正确安装,并且安装路径已添加到系统环境变量 PATH 中。在 Windows 上,安装后可能需要重启终端或计算机。在 Linux/macOS 上,可能需要关闭并重新打开终端会话。
  • 登录失败: 检查您的网络连接。确保您输入的 Microsoft 账户凭据正确。如果您在使用设备代码登录,确保在规定的时间内完成了浏览器中的登录步骤。
  • 权限问题: 如果执行某个命令时收到权限不足的错误,这意味着您的账户或当前使用的身份(如服务主体)没有执行该操作所需的 Azure RBAC (Role-Based Access Control) 角色权限。您需要联系订阅管理员为您分配相应的权限。
  • 资源不存在: 如果您尝试操作某个资源(如显示、删除),但收到资源找不到的错误,请仔细检查资源组名称和资源名称是否正确,以及是否在正确的订阅下操作。
  • 命令执行超时: 有些操作可能需要很长时间,特别是在网络不稳定时。可以尝试增加命令的超时设置(如果支持),或者使用 --no-wait 参数并后续检查状态。

总结

恭喜您完成了 Azure CLI 的快速入门!本文详细介绍了 Azure CLI 的安装、登录、基本命令结构、资源组的概念以及如何创建、查看和删除资源。您还了解了如何使用帮助系统和控制输出格式,并对 --query 有了初步认识。

掌握 Azure CLI 是高效管理 Azure 资源的基石。通过不断练习和探索,您将能够利用其强大的功能,简化您的日常工作,并为 Azure 自动化和 DevOps 实践打下坚实基础。

接下来:

  • 尝试使用 Azure CLI 管理您感兴趣的其他 Azure 服务。
  • 查阅 Azure CLI 官方文档,探索更多命令和功能。
  • 学习如何编写简单的脚本来自动化一些任务。

祝您在 Azure CLI 的学习和使用中一切顺利!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部