Menu Close
Settings Close

Language and Page Formatting Options

第 1 章 在 Microsoft Azure 上部署 Red Hat Enterprise Linux 7 镜像作为虚拟机

您有多个选项可在 Azure 上部署 Red Hat Enterprise Linux(RHEL)7 镜像。本章讨论选择镜像的选项,以及列出或引用主机系统和虚拟机(VM)的系统要求。本章还提供了从 ISO 镜像创建自定义虚拟机、将其上传到 Azure 以及启动 Azure 虚拟机实例的步骤。

重要

您可以从 ISO 镜像创建自定义虚拟机,但红帽建议您使用 Red Hat Image Builder 产品来创建自定义镜像,供特定云供应商使用。如需更多信息,请参阅镜像构建器指南

本章在很多位置使用了 Azure 文档。如需了解更多详细信息,请参阅相关的 Azure 文档。

注意

有关您可以在 Azure 上安全使用的红帽产品列表,请参阅 Microsoft Azure 上的红帽产品

先决条件

1.1. Azure 上的 Red Hat Enterprise Linux 镜像选项

下表列出了镜像的不同选择并记录镜像选项的不同。

表 1.1. 镜像选项

镜像选项订阅示例情境注意事项

选择部署一个 Red Hat Gold Image。

利用您现有的红帽订阅。

通过 Red Hat Cloud Access 程序 启用订阅,然后在 Azure 上选择 Red Hat Gold Image。如需了解有关 Gold Images 以及如何在 Azure 上访问它们的详细信息,请参阅 Red Hat Cloud Access 指南

订阅包括了红帽产品的成本;您需要向 Microsoft 支付其他费用。

Red Hat Gold Images 被称为 "Cloud Access" 镜像,因为您使用现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。

选择部署一个要移至 Azure 的自定义镜像。

利用您现有的红帽订阅。

通过 Red Hat Cloud Access 程序 启用订阅,上传您的自定义镜像并附加您的订阅。

订阅包括了红帽产品的成本;您需要向 Microsoft 支付其他费用。

移动到 Azure 的自定义镜像是 "Cloud Access" 镜像,因为您利用了您现有的红帽订阅。红帽直接为 Cloud Access 镜像提供支持。

选择部署一个包含 RHEL 的现有 Azure 镜像。

Azure 镜像包括一个红帽产品。

使用 Azure 控制台创建虚拟机时选择 RHEL 镜像,或者从 Azure Marketplace 中选择虚拟机。

根据 pay-as-you-go 模式每小时向微软支付。这样的镜像名为 "on-demand"。 Azure 通过支持协议提供对 on-demand 镜像的支持。

红帽提供了镜像的更新。Azure 通过 Red Hat Update Infrastructure(RHUI)提供更新。

注意

您可以使用 Red Hat Image Builder 为 Azure 创建自定义镜像。如需更多信息,请参阅镜像构建器指南

本章的以下部分包括了与 Red Hat Enterprise Linux 自定义镜像相关的信息和流程。

1.2. 理解基础镜像

本节介绍使用预配置的基础镜像及其配置设置的信息。

1.2.1. 使用自定义基础镜像

要手动配置虚拟机,请以基础(启动程序)虚拟机镜像开始。创建基本虚拟机镜像后,您可以修改配置设置并添加虚拟机在云中操作的软件包。您可在上传镜像后为特定应用程序进行额外的配置更改。

要准备 RHEL 的 Hyper-V 云镜像,请参阅从 Hyper-V 管理器准备 RHEL 7 虚拟机

1.2.2. 所需的系统软件包

本章的步骤假设您使用运行 Red Hat Enterprise Linux 的主机系统。要成功完成这些操作,主机系统必须安装以下软件包。

表 1.2. 系统软件包

软件包描述命令

qemu-kvm

这个软件包提供用户级别的 KVM 模拟器,并可方便主机和客户机虚拟机间的通信。

# yum install qemu-kvm libvirt

qemu-img

这个软件包为客户机虚拟机提供磁盘管理。qemu-img 软件包作为 qemu-kvm 软件包的依赖项安装。

libvirt

这个软件包为服务器和主机端提供与虚拟机监控程序、主机系统和主机系统以及处理库调用、管理虚拟机和控制虚拟机监控程序的 libvirtd 守护进程交互的服务器和主机库。

表 1.3. 其他虚拟化软件包

软件包描述命令

virt-install

这个软件包提供从命令行创建虚拟机的 virt-install 命令。

# yum install virt-install libvirt-python virt-manager virt-install libvirt-client

libvirt-python

这个软件包包含一个模块,它允许使用 Python 编程语言编写的应用程序使用 libvirt API 提供的接口。

virt-manager

这个软件包提供 virt-manager 工具,也称 Virtual Machine Manager(VMM)。VMM 是一个图形化工具用于管理虚拟机。它使用 libvirt-client 库作为管理 API。

libvirt-client

这个软件包为访问 libvirt 服务器提供客户端 API 和库。libvirt-client 软件包包含 virsh 命令行工具,用于从命令行或特殊虚拟化 shell 管理和控制虚拟机和虚拟机监控程序。

1.2.3. Azure VM 配置设置

Azure 虚拟机必须具有以下配置设置。其中一些设置会在初始创建虚拟机期间启用。为 Azure 置备虚拟机镜像时会设置其他设置。在您进行操作时请注意这些设置 ; 如果您遇到任何错误,请参考它们。

表 1.4. 虚拟机配置设置

设置建议

ssh

ssh 必须启用才能提供对 Azure 虚拟机的远程访问权限。

dhcp

应该为 dhcp 配置主虚拟适配器(仅限 IPv4)。

swap 空间

不要创建一个专用的交换文件或者交换分区。您可以使用 Windows Azure Linux Agent(WALinuxAgent)配置 swap 空间。

NIC

为主虚拟网络适配器选择 virtio

encryption

对于自定义镜像,运行 RHEL 7.5 及更新的版本,请使用 Network Bound Disk Encryption(NBDE)在 Azure 上进行完整磁盘加密。只有 RHEL 7.5 及更新的版本支持 NBDE。

1.2.4. 从 ISO 镜像创建基础镜像

以下流程列出了创建自定义 ISO 镜像的步骤和初始配置要求。配置了镜像后,您可以使用镜像作为模板来创建额外的虚拟机实例。

流程

  1. 红帽客户门户网站下载最新的 Red Hat Enterprise Linux 7 Binary DVD ISO 镜像。
  2. 确保已为虚拟化启用主机机器。有关相关信息和步骤,请参阅虚拟化入门指南
  3. 创建并启动基本 Red Hat Enterprise Linux 虚拟机。具体步骤请查看使用虚拟化命令行界面入门

    1. 如果使用命令行创建虚拟机,请确保将默认内存和 CPU 设置为您所需的容量。将您的虚拟网络接口设置为 virtio

      下面是一个基本的命令行示例。

      virt-install --name isotest --memory 2048 --vcpus 2 --disk size=8,bus=virtio --location rhel-7.0-x86_64-dvd.iso --os-variant=rhel7.0
    2. 如果您使用 VMM 应用程序创建虚拟机,请按照 虚拟机管理器入门 中的步骤进行操作:

      • 不要选择 Immediately Start VM
      • MemoryStorage Size 设置为您需要的值。
      • 在开始安装前,请确保将 Virtual Network Interface Settings 中的 Model 更改为 virtio,并将您的 vCPU 更改为您想要的虚拟机容量设置。
  4. 查看以下额外的安装选择和修改。

    • 选择带有 standard RHEL 选项的 Minimal Install
    • 对于 Installation Destination,选择 Custom Storage Configuration。使用以下配置信息进行选择。

      • 确保 /boot 验证至少 500 MB。
      • 对于文件系统,bootroot 分区都要使用 xfs、ext4 或 ext3。
      • 删除 swap 空间。swap 空间由 WALinuxAgent 在 Azure 中的物理 blade 服务器中配置。
    • Installation Summary 屏幕中,选择 Network and Host Name。将 Ethernet 切换到 On
  5. 安装开始:

    • 创建 root 密码。
    • 创建管理用户帐户。
  6. 安装完成后,重启虚拟机并登录到 root 帐户。
  7. 登录后,您可以配置镜像 root

1.3. 为 Microsoft Azure 配置基础镜像

基础镜像需要更改配置,才能作为 Azure 中的 RHEL 7 虚拟机镜像。以下小节提供 Azure 所需的其他配置更改。

1.3.1. 安装 Hyper-V 设备驱动程序

Microsoft 为 Hyper-V 软件包提供网络和存储设备驱动程序作为其 Linux 集成服务(LIS)的一部分。在将 Hyper-V 设备驱动程序置备为 Azure 虚拟机之前,您可能需要在虚拟机镜像上安装 Hyper-V 设备驱动程序。使用 lsinitrd | grep hv 命令验证是否安装了驱动程序。

流程

  1. 输入以下 grep 命令来确定是否安装了所需的 Hyper-V 设备驱动程序。

    # lsinitrd | grep hv

    在以下示例中安装了所有必需的驱动程序。

    # lsinitrd | grep hv
    drwxr-xr-x   2 root     root            0 Aug 12 14:21 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv
    -rw-r--r--   1 root     root        31272 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/hv/hv_vmbus.ko.xz
    -rw-r--r--   1 root     root        25132 Aug 11 08:46 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/net/hyperv/hv_netvsc.ko.xz
    -rw-r--r--   1 root     root         9796 Aug 11 08:45 usr/lib/modules/3.10.0-932.el7.x86_64/kernel/drivers/scsi/hv_storvsc.ko.xz

    如果没有安装所有驱动程序,请完成剩余的步骤。

    注意

    环境中可能会存在 hv_vmbus 驱动程序。即使存在这个驱动程序,在虚拟机中完成以下步骤。

  2. /etc/hv.conf.d 中创建名为 hv.conf 的文件。
  3. hv.conf 文件中添加以下驱动程序参数。

    add_drivers+=" hv_vmbus "
    add_drivers+=" hv_netvsc "
    add_drivers+=" hv_storvsc "
    注意

    请注意引号之前和之后的空格,如 add_drivers+=" hv_vmbus "。这样可确保在环境中存在其他 Hyper-V 驱动程序时载入唯一的驱动程序。

  4. 重新生成 initramfs 镜像。

    # dracut -f -v --regenerate-all

验证步骤

  1. 重启机器。
  2. 运行 lsinitrd | grep hv 命令验证是否安装了驱动程序。

1.3.2. 进行额外的配置更改

虚拟机需要进行进一步的配置更改才能在 Azure 中操作。执行以下步骤进行额外的更改。

流程

  1. 如有必要,启动虚拟机。
  2. 注册虚拟机并启用 Red Hat Enterprise Linux 7 软件仓库。

    # subscription-manager register --auto-attach

停止和删除 cloud-init(如果存在)

  1. 停止 cloud-init 服务。

    # systemctl stop cloud-init
  2. 删除 cloud-init 软件。

    # yum remove cloud-init

完成其他虚拟机更改

  1. 编辑 /etc/ssh/sshd_config 文件并启用密码验证。

    PasswordAuthentication yes
  2. 设置通用主机名。

    # hostnamectl set-hostname localhost.localdomain
  3. 编辑(或创建) /etc/sysconfig/network-scripts/ifcfg-eth0 文件。仅使用以下列出的参数。

    注意

    RHEL 7 DVD ISO 镜像中没有 ifcfg-eth0 文件,它必须被创建。

    DEVICE="eth0"
    ONBOOT="yes"
    BOOTPROTO="dhcp"
    TYPE="Ethernet"
    USERCTL="yes"
    PEERDNS="yes"
    IPV6INIT="no"
  4. 删除所有持久的网络设备规则(如果存在)。

    # rm -f /etc/udev/rules.d/70-persistent-net.rules
    # rm -f /etc/udev/rules.d/75-persistent-net-generator.rules
    # rm -f /etc/udev/rules.d/80-net-name-slot-rules
  5. ssh 设置为自动启动。

    # systemctl enable sshd
    # systemctl is-enabled sshd
  6. 修改内核引导参数。

    1. /etc/default/grub 文件中的 GRUB_CMDLINE_LINUX 行的开头添加 crashkernel=256M。如果 crashkernel=auto 存在,请将其改为 crashkernel=256M
    2. GRUB_CMDLINE_LINUX 行末尾添加以下行(如果不存在)。

      earlyprintk=ttyS0
      console=ttyS0
      rootdelay=300
    3. 删除以下选项(如果存在)。

      rhgb
      quiet
  7. 重新生成 grub.cfg 文件。

    # grub2-mkconfig -o /boot/grub2/grub.cfg
  8. 安装并启用 Windows Azure Linux Agent(WALinuxAgent)。

    # yum install WALinuxAgent -y
    # systemctl enable waagent
    注意

    如果您看到 No package WALinuxAgent available 错误信息,安装 rhel-7-server-extras-rpms 仓库。在再次尝试安装前运行 # subscription-manager repos --enable=rhel-7-server-extras-rpms 命令。

  9. 编辑 /etc/waagent.conf 文件中的以下行,为置备的虚拟机配置 swap 空间。为您置备的虚拟机设置 swap 空间。

    Provisioning.DeleteRootPassword=n
    ResourceDisk.Filesystem=ext4
    ResourceDisk.EnableSwap=y
    ResourceDisk.SwapSizeMB=2048

准备置备

  1. 从 Red Hat Subscription Manager 取消注册虚拟机。

    # subscription-manager unregister
  2. 通过清理现有置备详情来准备 Azure 置备。Azure 在 Azure 中重新置备虚拟机。这个命令会生成数据丢失警告信息,这是预期的。

    # waagent -force -deprovision
  3. 清理 shell 历史记录并关闭虚拟机。

    # export HISTSIZE=0
    # poweroff

1.4. 将镜像转换为固定 VHD 格式

所有 Microsoft Azure VM 镜像都必须采用固定的 VHD 格式。镜像必须在将镜像转换为 VHD 之前被对齐到 1 MB 边界。本节论述了如何将镜像从 qcow2 转换为固定的 VHD 格式,并在需要时匹配镜像。转换镜像后,您可以将其上传到 Azure。

流程

  1. 将镜像从 qcow2 转换为 raw 格式。

    $ qemu-img convert -f qcow2 -O raw <image-name>.qcow2 <image-name>.raw
  2. 使用以下内容创建一个 shell 脚本。

    #!/bin/bash
    MB=$((1024 * 1024))
    size=$(qemu-img info -f raw --output json "$1" | gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')
    rounded_size=$((($size/$MB + 1) * $MB))
    if [ $(($size % $MB)) -eq  0 ]
    then
     echo "Your image is already aligned. You do not need to resize."
     exit 1
    fi
    echo "rounded size = $rounded_size"
    export rounded_size
  3. 运行脚本。这个示例使用名称 align.sh

    $ sh align.sh <image-xxx>.raw
    • 如需显示 "Your image is already aligned.You do not need to resize.",执行以下步骤。
    • 如果显示了一个值,代表您的镜像没有被对齐。在继续执行下一步前,按照 Aligning the image 部分中的步骤重新定义镜像大小。
  4. 使用以下命令将文件转换为固定的 VHD 格式。

    示例使用 qemu-img 版本 2.12.0。

    $ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd

    转换后,VHD 文件就可以上传到 Azure。

对齐镜像

只有在 raw 文件没有被对齐时才执行以下步骤。

  1. 使用在运行验证脚本时显示的舍入值重新定义 raw 文件大小。

    $ qemu-img resize -f raw <image-xxx>.raw <rounded-value>
  2. raw 镜像文件转换为 VHD 格式。

    示例使用 qemu-img 版本 2.12.0。

    $ qemu-img convert -f raw -o subformat=fixed,force_size -O vpc <image-xxx>.raw <image.xxx>.vhd

    转换后,VHD 文件就可以上传到 Azure。

1.5. 安装 Azure CLI

完成以下步骤,在主机上安装 Azure 命令行界面(Azure CLI 2.1)。Azure CLI 2.1 是基于 Python 的实用程序,可在 Azure 中创建和管理虚拟机。

先决条件

  • 在使用 Azure CLI 之前,您需要具有 Microsoft Azure 帐户。
  • Azure CLI 安装需要 Python 3.x。

流程

  1. 导入 Microsoft 软件仓库密钥。

    $ sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
  2. 创建本地 Azure CLI 存储库条目。

    $ sudo sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
  3. 更新 yum 软件包索引。

    $ yum check-update
  4. 检查您的 Python 版本(python --version),如果需要安装 Python 3.x。

    $ sudo yum install python3
  5. 安装 Azure CLI。

    $ sudo yum install -y azure-cli
  6. 运行 Azure CLI。

    $ az

1.6. 在 Azure 中创建资源

完成以下步骤,在上传 VHD 文件并创建 Azure 镜像前创建所需的 Azure 资源。

流程

  1. 输入以下命令使用 Azure 验证您的系统并登录。

    $ az login
    注意

    如果在您的环境中有浏览器,则 CLI 会打开浏览器到 Azure 登录页面。如需更多信息和选项,请参阅使用 Azure CLI 登录

  2. 在 Azure 区域中创建资源组。

    $ az group create --name <resource-group> --location <azure-region>

    例如:

    $ az group create --name azrhelclirsgrp --location southcentralus
    {
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp",
      "location": "southcentralus",
      "managedBy": null,
      "name": "azrhelclirsgrp",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
  3. 创建存储帐户。有关有效 SKU 值的更多信息,请参阅 SKU Types

    $ az storage account create -l <azure-region> -n <storage-account-name> -g <resource-group> --sku <sku_type>

    例如:

    $ az storage account create -l southcentralus -n azrhelclistact -g azrhelclirsgrp --sku Standard_LRS
    {
      "accessTier": null,
      "creationTime": "2017-04-05T19:10:29.855470+00:00",
      "customDomain": null,
      "encryption": null,
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Storage/storageAccounts/azrhelclistact",
      "kind": "StorageV2",
      "lastGeoFailoverTime": null,
      "location": "southcentralus",
      "name": "azrhelclistact",
      "primaryEndpoints": {
        "blob": "https://azrhelclistact.blob.core.windows.net/",
        "file": "https://azrhelclistact.file.core.windows.net/",
        "queue": "https://azrhelclistact.queue.core.windows.net/",
        "table": "https://azrhelclistact.table.core.windows.net/"
    },
    "primaryLocation": "southcentralus",
    "provisioningState": "Succeeded",
    "resourceGroup": "azrhelclirsgrp",
    "secondaryEndpoints": null,
    "secondaryLocation": null,
    "sku": {
      "name": "Standard_LRS",
      "tier": "Standard"
    },
    "statusOfPrimary": "available",
    "statusOfSecondary": null,
    "tags": {},
      "type": "Microsoft.Storage/storageAccounts"
    }
  4. 获取存储帐户连接字符串。

    $ az storage account show-connection-string -n <storage-account-name> -g <resource-group>

    例如:

    [clouduser@localhost]$ az storage account show-connection-string -n azrhelclistact -g azrhelclirsgrp
    {
      "connectionString": "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
    }
  5. 通过复制连接字符串并将其粘贴到以下命令来导出连接字符串。这个字符串将您的系统连接到存储帐户。

    $ export AZURE_STORAGE_CONNECTION_STRING="<storage-connection-string>"

    例如:

    [clouduser@localhost]$ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=azrhelclistact;AccountKey=NreGk...=="
  6. 创建存储容器。

    $ az storage container create -n <container-name>

    例如:

    [clouduser@localhost]$ az storage container create -n azrhelclistcont
    {
      "created": true
    }
  7. 创建虚拟网络。

    $ az network vnet create -g <resource group> --name <vnet-name> --subnet-name <subnet-name>

    例如:

    [clouduser@localhost]$ az network vnet create --resource-group azrhelclirsgrp --name azrhelclivnet1 --subnet-name azrhelclisubnet1
    {
      "newVNet": {
        "addressSpace": {
          "addressPrefixes": [
          "10.0.0.0/16"
          ]
      },
      "dhcpOptions": {
        "dnsServers": []
      },
      "etag": "W/\"\"",
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1",
      "location": "southcentralus",
      "name": "azrhelclivnet1",
      "provisioningState": "Succeeded",
      "resourceGroup": "azrhelclirsgrp",
      "resourceGuid": "0f25efee-e2a6-4abe-a4e9-817061ee1e79",
      "subnets": [
        {
          "addressPrefix": "10.0.0.0/24",
          "etag": "W/\"\"",
          "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Network/virtualNetworks/azrhelclivnet1/subnets/azrhelclisubnet1",
          "ipConfigurations": null,
          "name": "azrhelclisubnet1",
          "networkSecurityGroup": null,
          "provisioningState": "Succeeded",
          "resourceGroup": "azrhelclirsgrp",
          "resourceNavigationLinks": null,
          "routeTable": null
        }
      ],
      "tags": {},
      "type": "Microsoft.Network/virtualNetworks",
      "virtualNetworkPeerings": null
      }
    }

1.7. 上传并创建 Azure 镜像

完成以下步骤,将 VHD 文件上传到容器并创建 Azure 自定义镜像。

注意

系统重启后,导出的存储连接字符串不会保留。如果以下步骤中的任何命令失败,请再次导出连接字符串。

流程

  1. VHD 文件上传到存储容器,可能需要几分钟时间。要获取存储容器列表,请输入 az storage container list 命令。

    $ az storage blob upload --account-name <storage-account-name> --container-name <container-name> --type page --file <path-to-vhd> --name <image-name>.vhd

    例如:

    $ az storage blob upload --account-name azrhelclistact --container-name azrhelclistcont --type page --file rhel-image-7.vhd --name rhel-image-7.vhd
    Percent complete: %100.0
  2. 获取上传的 VHD 文件的 URL,以便在以下步骤中使用。

    $ az storage blob url -c <container-name> -n <image-name>.vhd

    例如:

    $ az storage blob url -c azrhelclistcont -n rhel-image-7.vhd
    "https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-7.vhd"
  3. 创建 Azure 自定义镜像。

    $ az image create -n <image-name> -g <resource-group> -l <azure-region> --source <URL> --os-type linux
    注意

    虚拟机的默认 hypervisor 系列为 V1。您可以通过包括选项 --hyper-v-generation V2 来将 hypervisor 系列指定为 V2。第二代虚拟机使用基于 UEFI 的引导架构。如需有关生成 2 代虚拟机的信息,请参阅 Azure 生成 2 个虚拟机的支持

    该命令可能会返回错误 "Only blobs formatted as VHDs can be imported." 这个错误可能意味着,在镜像转换为 VHD 前,镜像没有与最接近的 1 MB 边界一致。

    例如:

    $ az image create -n rhel7 -g azrhelclirsgrp2 -l southcentralus --source https://azrhelclistact.blob.core.windows.net/azrhelclistcont/rhel-image-7.vhd --os-type linux

1.8. 在 Azure 中创建并启动虚拟机

以下步骤提供从镜像创建 managed-disk Azure 虚拟机的最低命令选项。如需了解更多选项,请参阅 az vm create

流程

  1. 输入以下命令来创建虚拟机。

    $ az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --generate-ssh-keys --image <path-to-image>
    注意

    选项 --generate-ssh-keys 会创建一个私有/公钥对。私钥和公钥文件会在您的系统 ~/.ssh 中创建。公钥添加到虚拟机上由 --admin-username 选项指定的用户的 authorized_keys 文件中。如需更多信息,请参阅其他验证方法

    例如:

    [clouduser@localhost]$ az vm create -g azrhelclirsgrp2 -l southcentralus -n rhel-azure-vm-1 --vnet-name azrhelclivnet1 --subnet azrhelclisubnet1  --size Standard_A2 --os-disk-name vm-1-osdisk --admin-username clouduser --generate-ssh-keys --image rhel7
    {
      "fqdns": "",
      "id": "/subscriptions//resourceGroups/azrhelclirsgrp/providers/Microsoft.Compute/virtualMachines/rhel-azure-vm-1",
      "location": "southcentralus",
      "macAddress": "",
      "powerState": "VM running",
      "privateIpAddress": "10.0.0.4",
      "publicIpAddress": "<public-IP-address>",
      "resourceGroup": "azrhelclirsgrp2"
  2. 启动 SSH 会话并登录到虚拟机。

    [clouduser@localhost]$ ssh  -i /home/clouduser/.ssh/id_rsa clouduser@<public-IP-address>.
    The authenticity of host,  '<public-IP-address>' can't be established.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '<public-IP-address>' (ECDSA) to the list of known hosts.

如果您看到用户提示,则代表成功部署了 Azure 虚拟机。

现在,您可以进入 Azure 门户,检查审计日志和资源属性。您可以在此门户中直接管理虚拟机。如果要管理多个虚拟机,您应该使用 Azure CLI。Azure CLI 为您在 Azure 中的资源提供了一个强大的接口。在 CLI 中输入 az --help 命令,或者参阅 Azure CLI 命令来了解您在 Microsoft Azure 中用来管理虚拟机的更多信息。

1.9. 其他验证方法

虽然使用 Azure 生成的密钥对不是必须的,但为了提高安全性,推荐使用。以下示例演示了使用两个 SSH 验证方法。

示例 1: 这些命令选项在不生成公钥文件的情况下置备新虚拟机。它们允许使用密码进行 SSH 验证。

$ az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --authentication-type password --admin-username <administrator-name> --admin-password <ssh-password> --image <path-to-image>
$ ssh <admin-username>@<public-ip-address>

示例 2: 这些命令选项置备一个新的 Azure 虚拟机,并允许使用现有公钥文件进行 SSH 验证。

$ az vm create -g <resource-group> -l <azure-region> -n <vm-name> --vnet-name <vnet-name> --subnet <subnet-name> --size Standard_A2 --os-disk-name <simple-name> --admin-username <administrator-name> --ssh-key-value <path-to-existing-ssh-key> --image <path-to-image>
$ ssh -i <path-to-existing-ssh-key> <admin-username>@<public-ip-address>

1.10. 附加红帽订阅

完成以下步骤以附加您之前通过 Red Hat Cloud Access 程序启用的订阅。

先决条件

您必须已启用您的订阅。

流程

  1. 注册您的系统。

    subscription-manager register --auto-attach
  2. 附加您的订阅。