描述可用于创建和管理 Azure 虚拟机的选项

已完成

Azure 门户是入门时创建资源(例如 VM)的最简单方法。 但是,它不一定是使用 Azure 的最高效或最快的方法,特别是如果需要一起创建多个资源。 在本例中,我们最终会创建数十个 VM 来处理不同的任务。 在 Azure 门户中手动创建它们不会是一项有趣的任务!

让我们看看在 Azure 中创建和管理资源的一些其他方法:

  • Azure 资源管理器模板
  • Azure PowerShell
  • Azure CLI
  • Azure REST API
  • Azure 客户端 SDK
  • Azure VM 扩展
  • Azure 自动化服务

资源管理器模板

假设要创建具有相同设置的 VM 副本。 可以创建 VM 映像,将其上传到 Azure,并将其引用为新 VM 的基础。 此过程效率低下且耗时。 Azure 提供了创建模板的选项,用于创建 VM 的确切副本。

资源管理器模板 是 JSON 文件,用于定义为解决方案部署所需的资源。

可以为 VM 创建资源模板。 在 VM 菜单中,在 “自动化 ”下选择“ 导出模板”。

显示 VM 的“导出模板”选项的屏幕截图。

注释

此 Learn 模块沙盒中包含的资源策略可防止导出刚刚创建的 VM;也就是说,导出的模板是一个易于编辑的 JSON 文件。 可以选择下载或保存模板供以后使用,或立即部署基于模板的新 VM。 例如,您可能会在测试环境中从模板创建一个虚拟机,却发现它不太能有效替换您的本地计算机。 可以删除资源组,这会删除所有资源、调整模板,然后重试。 如果只想更改现有已部署的资源,可以更改用于创建资源的模板,然后重新部署它。 资源管理器将更改资源以匹配新模板。

如果资源已按你的要求运行,可使用该模板轻松地复制多个版本的基础结构,例如临时过程和生产。 可以使用不同的参数来自定义每个环境,参数化 VM 名称、网络名称、存储帐户名称等字段,并重复加载模板。

有关使用模板的详细信息,请参阅 快速入门:使用 ARM 模板创建 Ubuntu Linux 虚拟机

Azure CLI

用于脚本编写和命令行 Azure 交互的选项是 Azure CLI

Azure CLI 是Microsoft跨平台命令行工具,用于从命令行管理 Azure 资源(例如虚拟机和磁盘)。 它适用于 Linux、macOS、Windows,或在浏览器中使用 Cloud Shell。

例如,在 CLI 中,可以使用命令创建 Azure VM az vm create

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 配置设置。 大多数参数都具有合理的值;只需指定所需的参数。 详细了解如何使用 Azure PowerShell 创建和管理 VM,请参阅使用脚本和 PowerShell 模块自动化 Azure 任务

有关使用 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 方法(GETPUTPOSTDELETEPATCH)以及相应的响应。

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。

下面是使用 NuGet 包创建 Azure VM Microsoft.Azure.Management.Fluent 的 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();

下面是使用 Azure Java SDK 的 Java 中的相同代码片段。

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 来管理公司的电脑、服务器和移动设备。 可以使用 Configuration Manager 将此支持扩展到 Azure VM。

  • 更新管理。 使用此服务管理 VM 的更新和修补程序。 使用此服务,可以评估可用更新的状态、计划安装和查看部署结果,以验证已成功应用的更新。 更新管理包含提供流程和配置管理的服务。 直接从 Azure 自动化 帐户为 VM 启用更新管理。 还可以从门户中的虚拟机窗格中为单个虚拟机启用更新管理。

自动关机

自动关闭是 Azure 中的一项功能,可用于按计划自动关闭 VM。 使用自动关闭来确保 VM 在不需要时未运行,从而节省成本。 可以将自动关闭的计划设置为每天或每周进行,还可以指定计划的时区。

若要导航到 Azure 门户中 VM 中的自动关闭功能,请转到门户中的 VM 边栏选项卡,单击“作”部分下的“自动关闭”,然后根据首选项配置自动关闭设置。

显示 VM 的自动关闭选项的屏幕截图。

有关详细信息,请参阅 自动关闭

正如你所看到的,Azure 提供了各种工具来创建和管理资源,以便你可以将管理作集成到 适合你的流程中。 让我们检查一些其他 Azure 服务,确保基础结构资源运行顺利。