描述可用于创建和管理 Azure 虚拟机的选项
在入门阶段,使用 Azure 门户创建资源(例如 VM)是最简单的途径。 不过它不一定是使用 Azure 最高效或最快速的方法,特别是在需要同时创建多个资源时。 在本例中,我们最终会创建数十个 VM 来处理不同的任务。 在 Azure 门户中手动创建它们会非常麻烦!
接下来一起看看在 Azure 中创建和管理资源的一些其他方式:
- Azure Resource Manager 模板
- Azure PowerShell
- Azure CLI
- Azure REST API
- Azure 客户端 SDK
- Azure VM 扩展
- Azure 自动化服务
Resource Manager 模板
假设需要以同样的设置创建一个 VM 的副本。 可以创建 VM 映像,将其上传至 Azure 并将其引用为新 VM 的基础。 这是一个低效且耗时的过程。 在 Azure 中可选择创建模板,进而从该模板创建精确的 VM 副本。
资源管理器模板是定义需要为解决方案部署的资源的 JSON 文件。
可以为 VM 创建资源模板。 在 VM 菜单的“自动化”下,选择“导出模板”。
注意
此 Learn 模块沙盒中包含的资源的适用策略会阻止导出刚创建的 VM;也就是说,导出的模板是一个易于编辑的 JSON 文件。 可选择下载或保存模板以供将来使用,也可立即基于此模板部署新的 VM。 例如,你可能在测试环境中通过模板创建了 VM,但发现它并不能有效地代替你的本地计算机。 可以删除该资源组,这会删除所有资源,然后调整该模板并重试。 如果只想对现有已部署的资源进行更改,可更改用于创建该资源的模板,然后再重新部署。 资源管理器会更改资源,让其与新的模板相匹配。
如果资源已按你的要求运行,可使用该模板轻松地复制多个版本的基础结构,例如临时过程和生产。 可对 VM 名称、网络名称、存储帐户名称等字段进行参数化,并重复加载模板,使用不同的参数对每个环境进行自定义。
有关使用模板的详细信息,请参阅快速入门:使用 ARM 模板创建 Ubuntu Linux 虚拟机。
Azure CLI
可以选择 Azure CLI 来处理脚本和命令行 Azure 交互操作。
Azure CLI 是用于从命令行管理 Azure 资源(例如虚拟机和磁盘)的 Microsoft 跨平台命令行工具。 它适用于 Linux、macOS 和 Windows,或通过 Cloud Shell 在浏览器中使用。
例如,可以在 CLI 中使用 az vm create
命令创建 Azure VM。
az vm create \
--resource-group TestResourceGroup \
--name test-wp1-eus-vm \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Azure CLI 可以和其他脚本编写语言(例如 Ruby 和 Python)配合使用。
可通过“使用 Azure CLI 工具管理虚拟机”模块详细了解如何创建和管理 VM。
有关使用 Azure CLI 创建 VM 的详细信息,请参阅快速入门:使用 CLI 创建 Linux 虚拟机。
Azure PowerShell
Azure PowerShell 适用于一次性的交互式任务和/或重复性任务的自动化。
注意
PowerShell 是一种跨平台 shell,提供类似 shell 窗口和命令分析的服务。 Azure PowerShell 是一个可选的附加包,用于添加特定于 Azure 的命令(即 cmdlet)。 有单独的培训模块介绍如何安装和使用 Azure PowerShell。
例如,可以使用 New-AzVM
cmdlet 来新建基于 Debian 的 Azure 虚拟机。
New-AzVm `
-ResourceGroupName "TestResourceGroup" `
-Name "test-wp1-eus-vm" `
-Location "East US" `
-Image Debian11 `
-VirtualNetworkName "test-wp1-eus-network" `
-SubnetName "default" `
-SecurityGroupName "test-wp1-eus-nsg" `
-PublicIpAddressName "test-wp1-eus-pubip" `
-GenerateSshKey `
-SshKeyName myPSKey
-OpenPorts 22
如此处所示,可提供各种参数来处理大量可用的 VM 配置设置。 大多数参数都有合理的值;只需指定所需的参数。 可在“通过将脚本与 PowerShell 结合使用来自动执行 Azure 任务”模块中详细了解如何使用 Azure PowerShell 创建并管理 VM。
有关使用 PowerShell 创建 VM 的详细信息,请参阅快速入门:使用 PowerShell 创建 Linux 虚拟机。
Terraform
Azure 也具有 Terraform 提供程序,因此你可以轻松地使用 Terraform 创建和管理 VM。 使用 Terraform 可以定义、预览和部署云基础结构。 使用 Terraform 时,请使用 HCL 语法来创建配置文件。 利用 HCL 语法,可指定 Azure 这样的云提供程序和构成云基础结构的元素。 创建配置文件后,请创建一个执行计划,利用该计划,可在部署基础结构更改之前先预览这些更改。 验证了更改后,请应用该执行计划以部署基础结构。
有关详细信息,请参阅 Azure Terraform 提供程序和快速入门:使用 Terraform 创建 VM。
编程方式 (API)
一般来说,如果需要运行简单的脚本并且想坚持使用命令行工具,则 Azure PowerShell 和 Azure CLI 都是很好的选择。 如果出现更复杂的情况,例如所要创建和管理的 VM 属于某个具备复杂逻辑的大型应用程序,则需要采用另一种方法。
在 Azure 中能以编程方式与所有类型的资源进行交互。
Azure REST API
Azure REST API 为开发人员提供按资源分类的操作,并让他们能创建和管理 VM。 操作是以 URI 的形式公开的,带有相应的 HTTP 方法(GET
、PUT
、POST
、DELETE
和 PATCH
)和相应的响应。
Azure 计算 API 提供对虚拟机及其支持的资源的编程式访问。
有关详细信息,请参阅虚拟机 REST API 参考。
Azure 客户端 SDK
即使 REST API 是不限平台和语言的,很多时候开发人员仍想实现更高级别的抽象。 Azure 客户端 SDK 封装了 Azure REST API,让开发人员可以更轻松地与 Azure 交互。
Azure 客户端 SDK 可用于各种语言和框架,包括基于 .NET 的语言,例如 C#、Java、Node.js、PHP、Python、Ruby 和 Go。
下面是一个使用 Microsoft.Azure.Management.Fluent
NuGet 包创建 Azure VM 的 C# 代码片段示例。
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithDefaultSubscription();
// ...
var vmName = "test-wp1-eus-vm";
azure.VirtualMachines.Define(vmName)
.WithRegion(Region.USEast)
.WithExistingResourceGroup("TestResourceGroup")
.WithExistingPrimaryNetworkInterface(networkInterface)
.WithLatestWindowsImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter")
.WithAdminUsername("jonc")
.WithAdminPassword("aReallyGoodPasswordHere")
.WithComputerName(vmName)
.WithSize(VirtualMachineSizeTypes.StandardDS1)
.Create();
下面是用 Java 表示的同一片段,使用的是 Azure Java SDK。
String vmName = "test-wp1-eus-vm";
// ...
VirtualMachine virtualMachine = azure.virtualMachines()
.define(vmName)
.withRegion(Region.US_EAST)
.withExistingResourceGroup("TestResourceGroup")
.withExistingPrimaryNetworkInterface(networkInterface)
.withLatestWindowsImage("MicrosoftWindowsServer", "WindowsServer", "2012-R2-Datacenter")
.withAdminUsername("jonc")
.withAdminPassword("aReallyGoodPasswordHere")
.withComputerName(vmName)
.withSize("Standard_DS1")
.create();
Azure VM 扩展
假设在初始部署后,需要将更多软件部署并安装在虚拟机上。 并且需要在此任务中使用特定的配置,自动监视任务和执行任务。
Azure VM 扩展是一些小型应用程序,用于在初始部署后配置并自动执行 Azure VM 上的任务。
有关详细信息,请参阅 Azure 虚拟机扩展和功能。
Azure 自动化服务
在管理远程基础结构时,在操作管理方面所要应对的一些最大的挑战包括但不限于:节省时间、减少错误和提升效率。 如果有很多基础结构服务,可能需考虑使用 Azure 中更高级别的服务,以便从更高级别进行操作。
可通过 Azure 自动化来集成服务,轻松地自动完成频繁进行的、耗时的、易出错的管理任务。 这些服务包含流程自动化、配置管理和更新管理。
流程自动化。 假设已针对某个特定的错误事件对 VM 进行监视。 需要在报告该事件的时候立刻采取措施并解决问题。 通过流程自动化,可设置观察程序任务来响应数据中心中可能出现的事件。
配置管理。 也许你想要跟踪可用于自己 VM 操作系统的软件更新。 你可能想要包括或排除某些特定的更新内容。 通过配置管理,可跟踪这些更新内容并根据需要采取措施。 使用 Microsoft Endpoint Configuration Manager 管理公司的 PC、服务器和移动设备。 可使用 Configuration Manager 将此支持扩展至 Azure VM。
更新管理。 使用此服务管理 VM 的更新和修补程序。 使用此服务,可以评估可用更新的状态、计划安装并查看部署结果以便验证是否已成功应用更新。 更新管理包含了用于管理流程和配置的服务。 可以直接通过 Azure 自动化帐户为 VM 启用更新管理。 还可通过门户中的虚拟机窗格为单个虚拟机启用更新管理。
自动关闭
自动关闭是 Azure 中的一项功能,可用于按日程安排自动关闭 VM。 使用自动关闭可确保 VM 在不需要时不运行,从而节省成本。 可以将自动关闭的日程安排设置为每天或每周进行,还可以指定日程安排的时区。
若要导航到 Azure 门户 VM 中的自动关闭功能,请转到门户中 VM 的边栏选项卡,单击“操作”部分下的“自动关闭”,然后根据首选项配置自动关闭设置。
有关详细信息,请参阅自动关闭。
可以看到,Azure 提供多种工具用于创建和管理资源,因此你可将管理操作集成到一个适合自己的流程中。 下面我们来查看一些其他 Azure 服务,这些服务可确保基础结构资源平稳运行。