Azure CLI 快速入门:基础教程
欢迎来到 Azure 的世界!作为微软的云计算平台,Azure 提供了海量服务和资源供我们使用。管理这些资源可以通过多种方式,其中命令行接口(CLI)以其高效、灵活和可脚本化的特性,成为许多开发者、运维工程师以及自动化工作流的首选工具。本文将带领您踏上 Azure CLI 的入门之旅,从安装到执行基本操作,为您打下坚实的基础。
引言:什么是 Azure CLI?为什么选择它?
Azure CLI 是一个跨平台的命令行工具,它允许您通过简单的命令与 Azure 进行交互,管理几乎所有的 Azure 资源,包括虚拟机、存储账户、数据库、网络配置等等。
为什么选择 Azure CLI?
- 跨平台性: Azure CLI 支持在 Windows、macOS 和 Linux 等多种操作系统上运行,您可以在您熟悉的开发环境中工作。
- 高效与自动化: 命令行操作通常比图形界面更快。更重要的是,您可以将一系列 Azure CLI 命令编写成脚本(如 Bash、PowerShell 或 Python),实现重复性任务的自动化,这对于部署、配置和日常管理至关重要。
- 灵活与精确: 通过命令行,您可以精确地控制每个资源的配置参数,执行复杂的批量操作或精细调整设置,这是图形界面有时难以实现的。
- 与 DevOps 流程集成: Azure CLI 是 CI/CD (持续集成/持续部署) 管道中常用的工具,可以轻松集成到 Jenkins, Azure DevOps, GitHub Actions 等自动化平台。
- 强大的帮助系统: Azure CLI 内置了详细的帮助文档,您可以随时通过命令查询各种模块、命令和参数的用法。
- 快速迭代与更新: Azure CLI 紧跟 Azure 服务的更新步伐,通常新服务或新特性发布后很快就能在 CLI 中获得支持。
简而言之,掌握 Azure CLI 不仅能提高您管理 Azure 资源的效率,更是迈向 Azure 自动化和 DevOps 的重要一步。
准备工作:踏上旅程前的必要条件
在开始安装和使用 Azure CLI 之前,您需要准备好以下内容:
- 一个 Azure 订阅: 如果您还没有 Azure 订阅,可以访问 Azure 官网注册一个免费账户。免费账户通常包含一定额度的免费服务或试用期,足够您完成本教程中的所有练习。
- 一台安装有支持的操作系统的计算机: Azure CLI 支持 Windows、macOS 和 Linux。您需要在其中任一系统上进行安装。
- 网络连接: 安装和使用 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
“`根据您的需要选择合适的输出格式。对于初学者和日常查看,
table
和jsonc
通常是最友好的。对于自动化脚本,json
和tsv
更常用。
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 的最基础知识。在此基础上,您可以进一步学习:
- 管理其他 Azure 服务: 学习如何使用 Azure CLI 管理虚拟机 (
az vm
), 虚拟网络 (az network vnet
), Web 应用 (az webapp
), 数据库 (az sql server
,az cosmosdb
) 等各种 Azure 资源。每个服务都有其自己的命令组和参数。 - 使用环境变量和 Shell 脚本: 如何在 Bash、PowerShell 或 Python 脚本中集成 Azure CLI 命令,使用变量存储资源名称、位置等信息,实现自动化部署和管理。
- 参数文件: 对于包含大量参数的复杂命令,可以使用
--parameters @file.json
的方式从 JSON 文件中读取参数,提高命令的可读性和复用性。 - Service Principal (服务主体): 对于自动化和脚本执行,不推荐使用交互式登录。Service Principal 是一种用于应用程序、服务和自动化工具访问 Azure 资源的身份。学习如何创建和使用服务主体进行非交互式登录 (
az login --service-principal ...
)。 - 更高级的查询: 深入学习 JMESPath 语法,更灵活地处理 CLI 输出。
- 使用 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 的学习和使用中一切顺利!