使用 Azure CLI 预配 Linux 虚拟机

已完成

你可以在 Linux、macOS 和 Windows 操作系统上本地安装 Azure CLI。 安装细节取决于操作系统,对于 Linux,也取决于分发版。

注意

有关 Linux 安装选项的详细信息,请参阅在 Linux 上安装 Azure CLI

若要以交互方式使用 Azure CLI,请启动操作系统中可用的 shell(例如 Windows 中的 cmd.exe、Linux 或 macOS 中的 Bash),然后在命令提示符处发出命令。 若要自动执行重复任务,请使用所选 shell 的脚本语法将 CLI 命令组合到 shell 脚本中,然后运行该脚本。

若要避免安装 Azure CLI,可以使用 Azure Cloud Shell。 Azure Cloud Shell 是一个经过身份验证的交互式 shell,可用于从 Web 浏览器管理 Azure 资源。 Azure Cloud Shell 可以运行 Bash 和 Azure PowerShell,并且已经预装了当前版本的 Azure CLI。 若要访问 Azure Cloud Shell,请在 Web 浏览器中打开 Azure Cloud Shell 链接,或通过选择全局搜索文本框旁边的 Azure Cloud Shell 图标从 Azure 门户启动它。

Screenshot showing the Azure Cloud Shell icon in the Azure portal.

Azure Cloud Shell 提供内置身份验证的优势,该身份验证使用从 Web 浏览器访问 Azure 订阅时提供的凭据。 这样就无需在每个会话开始时运行 az login 命令,而在本地运行 Azure CLI 时需要运行该命令。

使用 Azure CLI 部署 Linux VM

使用 Azure CLI 预配运行 Linux 的 Azure VM 的过程通常涉及以下一系列主要步骤:

  • 确定合适的 VM 映像。
  • 确定合适的 VM 大小。
  • 创建资源组。
  • 创建和配置虚拟网络。
  • 创建 Azure VM。

根据现有的环境和要求,可能不需要完成上述每个步骤。 例如,可以使用现有资源组或虚拟网络子网进行部署。 此外,Azure CLI 支持各种默认设置,如果你决定不将这些值显式分配给某些资源设置,这些设置将自动应用。 例如,与基于 Azure 门户的部署一样,如果未指定现有虚拟网络,Azure CLI 将自动预配一个虚拟网络。 在本模块中,你将依赖于 Azure CLI 默认设置,并跳过创建虚拟网络的过程。

注意

有关使用 Azure CLI 实现虚拟网络的信息,请参阅快速入门:使用 Azure CLI 创建虚拟网络

确定合适的 VM 映像

在开始预配过程之前,首先需要确定要使用的 VM 映像。 还必须验证该映像在将承载部署的 Azure 区域中的可用性。

若要列出订阅中可用的 Azure 区域,请从 Azure Cloud Shell 窗格中的 Bash 会话运行以下命令:

az account list-locations --output table

查看输出,并在“名称”列中确定要使用的区域的值。 假设你选择“美国东部”区域作为目标,因此名称为“eastus”

若要确定合适的映像,需要确定其发布者、产品/服务和 SKU。 若要缩小可用选项列表的范围,请运行以下命令,列出之前确定的区域的非 Microsoft 发布者:

az vm image list-publishers --location eastus --query [].name --output tsv | grep -v "Microsoft" | more

注意

该列表非常广泛,因此应确保将输出限制为可用的会话缓冲区。

假设你选择了 Canonical。 接下来,运行以下命令,确定该发布者提供的产品/服务:

az vm image list-offers --location eastus --publisher Canonical --query [].name --output tsv

假设你选择了 0001-com-ubuntu-server-jammy。 接下来,运行以下命令,确定该产品/服务可用的 SKU:

az vm image list-skus --location eastus --publisher Canonical --offer 0001-com-ubuntu-server-focal --query [].name --output tsv

注意

Canonical 最近更改了产品/服务名称。 在 Ubuntu 20.04 之前,产品/服务名称为 UbuntuServer。 对于 Ubuntu 20.04,产品/服务名称为 0001-com-ubuntu-server-focal,对于 Ubuntu 22.04,则为 0001-com-ubuntu-server-jammy

若要使用特定映像部署 Azure VM,需要确定其 Urn 属性的值。 此值由发布者、产品/服务、SKU 和唯一标识映像的版本号(可选)组成。 还可以将版本号设置为“最新”,以指定分发版的最新版本。 若要显示美国东部区域所有 Ubuntu 22_04-lts 映像的 Urn 属性的值,请运行以下命令:

az vm image list --location eastus --publisher Canonical --offer 0001-com-ubuntu-server-jammy --sku 22_04-lts --all --output table

注意

可以将 UrnAlias 属性用于更简单(但不太灵活)的方法来指定要在部署期间使用的映像。 此属性随时可用于最常见的映像,可以通过运行 az vm image list --output table Azure CLI 命令来检索其值。 例如,UrnAliasUbuntu2204 对应于映像 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest

确定合适的 VM 大小

除了映像可用性之外,还应确保要使用的 VM 大小在将承载部署的 Azure 区域中可用。 若要确认这一点,请运行以下命令:

az vm list-sizes --location eastus --output table

从列表中确定适合示例部署的 VM 大小,并记下“名称”列中的值。 运行启动 Azure VM 预配的 Azure CLI 命令时,需要以相同的格式输入名称。 假设你选择了“Standard_F4s”

重要

在继续操作之前,请验证此 VM 大小在目标 Azure 区域中是否可用,并根据需要相应地调整后续命令中的参数值。

创建资源组

确定 Azure VM 映像和大小后,现在可以开始预配过程。 首先创建一个资源组,用于承载 Azure VM 及其依赖资源。 若要创建资源组,请使用 az group create 命令。 此命令要求指定名称和位置参数的值,分别指定资源组名称和目标 Azure 区域。

az group create --name rg_lnx-cli --location eastus

该命令的输出应与下面的示例类似:

{
  "id": "/subscriptions/fd7edadd-187f-41dd-a5df-f80bad63c167/resourceGroups/sample-RG",
  "location": "eastus",
  "managedBy": null,
  "name": "rg_lnx-cli",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

创建 Azure VM

若要创建 VM,请使用 az vm create 命令。 此命令支持各种参数,包括 OS 映像、磁盘大小和管理凭据。 在以下示例中,az vm create 命令触发名为 sample-cli-vm0 的 Azure VM 的部署,该 VM 承载最新的 Ubuntu 22_04-lts-gen2 SKU 版本。 预配过程使用基于 SSH 密钥对的身份验证来配置名为 azureuser 的管理用户帐户。 私钥和公钥在本地生成并存储在默认位置 (~/.ssh),以允许对 Azure VM 进行 SSH 访问。 使用以下代码示例创建 Azure VM:

az vm create \
    --resource-group rg_lnx-cli \
    --name lnx-cli-vm \
    --image Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest \
    --size Standard_F4s \
    --admin-username azureuser \
    --generate-ssh-keys

注意

--size 参数是可选的。 如果决定排除它,则结果大小将取决于你选择的映像。

Azure VM 将在不久之后开始运行,通常在几分钟内。 Azure CLI 命令的输出将包含有关新部署的 Azure VM 的 JSON 格式信息:

{
  "fqdns": "",
  "id": "/subscriptions/fd7edadd-187f-0000-0000-000000000000/resourceGroups/rg_lnx-cli/providers/Microsoft.Compute/virtualMachines/lnx-cli-vm",
  "location": "eastus",
  "macAddress": "00-0D-3A-8C-C6-AE",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "20.51.149.212",
  "resourceGroup": "rg_lnx-cli",
  "zones": ""
}

此时,你将能够通过从存储私钥的计算机运行以下命令(将 <public_ip_address> 占位符替换为在 Azure CLI 生成的输出中标识的 IP 地址后)连接到 Azure VM:

ssh azureuser@<public_ip_address>