您可以将虚拟机从 vSphere 导入 VMware Integrated OpenStack 部署,并像管理 OpenStack 实例一样进行管理。

此过程适用于使用 NSX-T Data Center 网络的部署。对于 VDSNSX Data Center for vSphere 部署,请参见具有 NSX Data Center for vSphere 的 VMware Integrated OpenStack

以下条件适用于导入的虚拟机:

  • 如果虚拟机有多个磁盘,可以将这些磁盘作为 Cinder 卷导入。
  • 导入具有特定网络备份的虚拟机后,无法将同一网络导入到不同的项目。要将某个网络用于多个项目,请将其配置为共享网络。
  • 导入虚拟机操作只能在 Nova 实例和特定实例之间设置链接。无法根据特定实例配置调整实例大小。

Integrated OpenStack Manager 工具箱中使用 Data Center Command-Line Interface (DCLI) 导入虚拟机。

前提条件

要导入虚拟机,请确认它们位于同一 vCenter Server 实例中。

过程

  1. VMware Integrated OpenStack 部署中,将包含所需虚拟机的集群添加为计算集群。
    有关说明,请参见 向部署中添加计算群集
  2. 将虚拟机连接到 Neutron 网络。
    在此过程中,可以使用提供商网络或租户网络。
    1. vSphere Client 中,打开主机和集群视图。
    2. 要导入虚拟机,请右键单击每个虚拟机,然后选择编辑设置...
    3. 从网络适配器旁边的下拉菜单中选择 Neutron 网络。
    4. 展开网络适配器设置,并记录其 MAC 地址。
  3. 导入虚拟机后,要将虚拟机的多个 vNIC 连接到不同的 Neutron 网络,必须从 VMware Integrated OpenStack 创建相应的 Neutron 网络。
  4. 将未导入的虚拟机 vNIC 从 vCenter Server 连接到相应的 Neutron 网络(NSXT 分段)。
    注: 可以将多个 vNIC 连接到同一个 Neutron 网络,也可以连接到不同的 Neutron 网络。
  5. 为虚拟机创建一个临时的含糊网络。
    • 对于 NSX-T 2.5,创建一个逻辑交换机。请参见创建逻辑交换机以添加交换机,然后执行以下步骤以获取逻辑交换机 ID。
      1. 逻辑交换机列中,单击要创建的交换机的名称。
      2. 记录概览列中显示的交换机 ID。
    • 对于 NSX-T 3.0,创建一个分段。请参见添加分段并记录添加的分段的名称。
  6. 通过 viocli update nova-compute 编辑 Nova 计算配置,添加 import_net_id 参数,并将其值设置为在步骤 5 中创建的分段的名称。
    viocli update nova-compute
  7. 创建多个使用虚拟机 vNIC 的 MAC 地址的 Neutron 端口。
    neutron port-create network --name port --tenant-id project-id --mac-address vm-mac [--fixed-ip ip_address=vm-ip]
    注: 要创建多个端口,必须重复执行 Neutron port create 命令。可以在同一个 Neutron 网络上创建这些端口,也可以在不同的 Neutron 网络上创建。此方案取决于虚拟机 vNIC 的连接要求。
    选项 说明

    network

    输入虚拟机所连接到的 Neutron 网络的名称。

    --name

    输入端口的名称。

    --tenant-id

    要创建端口,请指定项目的 UUID。

    --mac-address

    输入您在步骤 2d 中记录的虚拟机网络适配器的 MAC 地址。

    --fixed-ip

    输入虚拟机的 IP 地址。

    如果不希望保留现有的 IP 地址,或者如果虚拟机没有 IP 地址,则可以省略此参数。

  8. 连接到 VMware Integrated OpenStack vAPI 端点。

    该端点位于部署的专用 OpenStack 端点。

    dcli +server https://internal-vip:9449/api +i
  9. 将虚拟机导入 VMware Integrated OpenStack
    1. 要使用单个 vNIC 将虚拟机导入 VIO,请使用以下命令:
      com vmware vio vm unmanaged importvm --vm vm-moid --nic-net-id network-uuid --nic-port-id port-uuid [--tenant project-name] [--root-disk root-disk-path]
    2. 要使用多个 vNIC 将虚拟机导入 VIO,请使用以下命令:
      com vmware vio vm unmanaged importvm --vm vm-moid --nics '[{"port_id": "port1_uuid"}, {"port_id": "port2_uuid"}]' " 
      例如:
      com vmware vio vm unmanaged importvm --vm vm-88 --tenant admin --nics '[{"port_id": "41fa621e-89d6-493f-876c-ed052905042d"}, {"port_id": "e97c74e9-e930-4837-a6d2-33bd065d8e32"}]'
      注: 在导入过程中,端口会使用相应的 MAC 地址自动绑定到 vNIC。
    选项 说明

    --vm

    输入虚拟机的受管对象标识符 (MOID)。

    可以通过运行 com vmware vio vm unmanaged list 命令查看所有非受管虚拟机的 MOID。

    --nics

    以 JSON 格式输入虚拟机 vNIC 的键-值对数组。

    --nic-net-id

    输入虚拟机所连接到的 Neutron 网络的 UUID。

    --nic-port-id

    输入您为虚拟机创建的端口的 UUID。

    --tenant

    指定要将虚拟机导入其中的 OpenStack 项目。

    如果不包括此参数,则默认情况下使用 import_service 项目。

    --root-disk

    对于具有多个磁盘的虚拟机,请按以下格式指定根磁盘数据存储路径:--root-disk '[datastore1] dir/disk_1.vmdk'

    注: 执行命令时,DCLI 会提示您输入 vCenter Server 实例的管理员凭据。为避免每次都输入用户名和密码,可以保存这些凭据。
  10. 对于卷类型,从 VMware Integrated OpenStack 创建所需的多个卷类型,并记录卷类型的 ID。
    openstack volume type create vol-type-ssd
  11. 根据卷类型将虚拟机导入到 VIO。
    1. 使用默认卷类型导入虚拟机。

      例如,可以使用以下命令:

      "com vmware vio vm unmanaged importvm --vm vm-183 --root-disk '[vdnetSharedStorage] 2nic-001/2nic-001.vmdk' --nics '[{"port_id":"5b8f18e7-f77b-457f-9618-4dcb5fccb833"}, {"port_id": "96a26fe8-1458-4a25-ba85-9a7dcaac88fe"}]' --default-volume-type '059c97ce-f5ef-47fa-8552-1c7eeeac058b' --flavor 0a3cf2a0-754c-4a64-9ce5-a9eb2ef34e0c --tenant admin"
    2. 要通过为每个磁盘指定卷类型导入虚拟机,请使用以下命令:
      com vmware vio vm unmanaged importvm --vm vm-moid --nic -net-id network-uuid --nic -port-id port-uuid  --tenant project-name --volume type 
      '[{"disk_path":"[datastore1] dir/disk_1.vmdk", "type_id": "volume-type1-uuid"}, {"disk_path":"[datastore1] dir/disk_2.vmdk", "type_id": "volume-type2-uuid"}]'  "
      例如:
      com vmware vio vm unmanaged importvm --vm vm-109 --nic -net-id e10b0037-6705-46d8-a8c5-20fbfdc1598d --nic -port-id be9bb062-d7b3-47f7-8566-f7b1f1c6ce2d  --volume type 
      [{"disk_path":"[datastore1] dir/disk_1.vmdk", "type_id": "096ef8ea-85ca-40f4-ba7f-9637f5fe95d2"}, {"disk_path":"[datastore1] dir/disk_2.vmdk", "type_id": "9969dd48-23dc-4010-a852-716f173fd59b"}]' --tenant admin
  12. 对于特定实例部分,记录现有特定实例类型的 ID。
  13. 根据特定实例类型将虚拟机导入到 VIO。
    com vmware vio vm unmanaged importvm --vm vm-moid --nic -net-id network-uuid --nic -port-id port-uuid --flavor flavor-uuid --tenant project-name
    例如:
    com vmware vio vm unmanaged importvm --vm vm-109 --nic -net-id e10b0037-6705-46d8-a8c5-20fbfdc1598d --nic -port-id be9bb062-d7b3-47f7-8566-f7b1f1c6ce2d --flavor 256ac8d6-6fb1-4434-a007-bb6db6837e5a --tenant admin

结果

导入后,指定的虚拟机将位于 OpenStack 部署中,可以将其作为 OpenStack 实例进行管理。