点击上方蓝字关注“汪宇杰博客”
导语
最近在学习 Azure 的命令行玩法,发现官方有不止一种命令行工具,容易对新手产生混淆,本文将介绍各种工具都是干啥的,以及如何选择。
目前,微软官方有3个Azure命令行工具,分别是:
Azure CLI
Azure PowerShell - Az Module
Azure PowerShell - AzureRM
它们的历史和作用各有不同。
Azure CLI
Azure CLI 是一个跨平台的命令行程序,可连接到 Azure 并对 Azure 资源执行管理命令。例如,若要创建 VM,可使用如下命令:
az vm create \
--resource-group CrmTestingResourceGroup \
--name CrmUnitTests \
--image UbuntuLTS
...
可通过两种方式使用 Azure CLI:通过 Azure Cloud Shell 在浏览器内使用或安装在本地 Linux、Mac 或 Windows 计算机上使用。通过这两种方式,均可以交互方式或编写脚本的方式使用 Azure CLI。若要以交互方式使用,请先在 Windows 上启动 cmd.exe 等 shell 或是在 Linux 或 macOS 上启动Bash,然后在 shell 提示符处发出命令。若要自动执行重复性任务,请使用所选 shell 脚本语法将命令配置到 shell 脚本中,然后执行该脚本。
(以上内容摘自 Microsoft Learn 官方免费学习平台)
Azure PowerShell
Azure PowerShell 是可添加到 Windows PowerShell 或 PowerShell Core 的模块,可用于连接 Azure 订阅并管理资源。Azure PowerShell 需通过 PowerShell 才能运行。PowerShell 提供 shell 窗口、命令解析等服务。Azure PowerShell 可添加特定于 Azure 的命令。
例如,Azure PowerShell 提供了可在 Azure 订阅中创建虚拟机的 New-AzVM 命令。若要使用 Azure PowerShell,请启动 PowerShell 应用程序,然后发出如下命令:
New-AzVm `
-ResourceGroupName "CrmTestingResourceGroup" `
-Name "CrmUnitTests" `
-Image "UbuntuLTS"
...
同样可通过两种方式使用 Azure PowerShell:通过 Azure Cloud Shell 在浏览器内使用或安装在本地 Linux、Mac 或 Windows 计算机上使用。对于这两种方式,均有两种模式可供选择。可在交互模式下使用,一次手动发出一个命令;也可在脚本模式下使用,执行包含多个命令的脚本。
(以上内容摘自 Microsoft Learn 官方免费学习平台)
然而,Azure PowerShell 里其实有两种:Az模块和AzureRM,这是两套不同的命令行工具,但功能非常重合。这一点在 Microsoft Learn 官网上并没有提到。
Az 模块
此新模块是采用 .NET Standard 从头开始编写的。 由于采用了 .NET Standard,Azure PowerShell 可以在 Windows 上的 PowerShell 5.1 下运行,也可以在任何平台上的 PowerShell Core 6.x 及更高版本下运行。Az 模块现在是通过 PowerShell 与 Azure 进行交互的首选方式。AzureRM 将继续进行 bug 修复,但不会再收到新功能。
(摘自微软官网文档 https://docs.microsoft.com/zh-CN/powershell/azure/overview?view=azps-2.5.0)
AzureRM
这实际上就是多年前的 Windows Azure PowerShell,我在2014年的博客文章里介绍过。但因为已经被微软官方遗弃,所以新学习 Azure 的读者,现在可以完全无视 AzureRM 这套 PowerShell 工具,也不用去看使用这个工具的文章。
有关迁移到 Az 模块的文档和所有变更,都可以在上面的微软官网文档里找到。
如何选择
现在,我们的命令行选项其实只剩下了 Azure CLI 以及 Azure PowerShell (Az 模块),如何选择用哪个工具呢?
依然摘录 Microsoft Learn 官方免费学习平台 里的说明:
就可管理的 Azure 对象及可创建的配置而言,门户、Azure CLI 和 Azure PowerShell 大致上是相同的。三者也都是跨平台的工具。这就意味着在选择时,通常要考虑其他几个因素:
自动化:是否需要自动执行一系列复杂的或重复性任务?Azure PowerShell 和 Azure CLI 支持自动化,而门户则不支持。
学习曲线:是否需要在不学习新命令或语法的情况下快速完成任务?使用 Azure 门户,无需学习语法或记住命令。使用 Azure PowerShell 和 Azure CLI 时,必须了解所使用的每个命令的详细语法。
团队技能组:团队是否拥有现成的专业知识?例如,团队可能使用过 PowerShell 来管理 Windows。若是如此,团队成员可快速熟练使用 Azure PowerShell。
示例
回想一下,你正在选择管理工具来为 CRM 应用程序创建测试环境。你的管理员需要执行两项特定的 Azure 任务:
为每种测试(单元、集成和验收)创建一个资源组。
在进行每轮测试前,在每个资源组中创建多个 VM。
若要创建资源组,可以选择 Azure 门户。这些是一次性任务,无需使用脚本来执行。
确定创建 VM 的最佳工具则更具挑战。你需要创建数个 VM 并且需要重复创建,可能每周要创建几次。这就意味着你需要自动化,因此 Azure 门户并非一个好的选择。在这种情况下,Azure PowerShell 或 Azure CLI 可满足你的需求。如果团队成员拥有现成的 PowerShell 知识,那么 Azure PowerShell 可能就是最佳选择。Azure PowerShell 可在管理团队使用的各种操作系统上运行,可支持自动化,且团队很容易上手。
大多数管理员首次接触 Azure 时都是使用的门户。这是一个很好的起点,因为门户提供了一个干净的、结构清晰的图形界面,但限制了自动化选项。如果需要自动化,Azure 提供了两个选项:Azure PowerShell 适用于具有 PowerShell 经验的管理员;Azure CLI 适用于其他所有人。
在实践中,企业通常既有一次性任务,也有重复性任务。这就意味着通常需要同时使用门户和脚本解决方案。在我们的 CRM 示例中,通过门户创建资源组,并使用 PowerShell 自动创建 VM,这样做是合适的。