您可以将虚拟机从 vSphere 导入 VMware Integrated OpenStack 部署,并将其作为 OpenStack 实例管理。

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

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

  • 如果虚拟机有多个磁盘,这些磁盘将作为 Cinder 卷导入。
  • 作为基于端口组的提供商网络导入现有网络,且访问限制为指定的项目。
  • 导入具有特定网络支持的虚拟机后,将无法向不同项目导入相同的网络。
  • 将自动创建 Neutron 子网,但禁用 DHCP。
  • 根据虚拟机网卡的 IP 和 MAC 地址自动创建 Neutron 端口。
注: 如果 DHCP 服务器在续租期间不能保持相同的 IP 地址,则 OpenStack 中的实例信息将显示错误的 IP 地址。为避免出现此问题,请在现有 DHCP 服务器上使用静态 DHCP 绑定,并且不要在导入的网络上运行新 OpenStack 实例。

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

前提条件

确认要导入的虚拟机位于同一 vCenter Server 实例中。

过程

  1. VMware Integrated OpenStack 部署中,将包含所需虚拟机的集群添加为计算集群。
    有关说明,请参见 向部署中添加计算集群
  2. root 用户身份登录到 Integrated OpenStack Manager
    ssh root@mgmt-server-ip
  3. 如果要防止导入的虚拟机重新放置或重命名,请更新您的部署配置。
    1. 修改 Nova 计算配置。
      viocli update nova-compute
    2. vmware 部分中,添加 import_vm_relocate 参数并将其值设置为 false

    如果不执行此步骤,则导入的虚拟机将按如下方式进行修改:

    • 导入的虚拟机的名称将更改为以下格式:original-name (instance-uuid)
    • 导入的虚拟机放在 vSphere 的以下文件夹中:datacenter > root-VM-folder > OpenStack > Project (project-uuid)
  4. 打开工具箱并连接到 VMware Integrated OpenStack vAPI 端点。

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

    toolbox
    dcli +server https://internal-vip:9449/api +i
  5. 将非受管虚拟机导入 VMware Integrated OpenStack
    注: 执行命令时,DCLI 会提示您输入 vCenter Server 实例的管理员凭据。您可以保存这些凭据,避免每次都需要输入用户名和密码。
    • 运行以下命令导入所有非受管虚拟机:
      com vmware vio vm unmanaged importall --cluster cluster-name [--tenant-mapping {FOLDER | RESOURCE_POOL} [--root-folder root-folder | --root-resource-pool root-resource-pool]]
      选项 说明

      --cluster

      输入包含要导入的虚拟机的计算集群。

      --tenant-mapping {FOLDER | RESOURCE_POOL}

      指定是否根据导入的虚拟机在文件夹或资源池中的位置将其映射到 OpenStack 项目。

      如果不包括此参数,则默认情况下,导入的所有虚拟机将成为 import_service 项目中的实例。

      --root-folder

      如果为 --tenant-mapping 参数指定 FOLDER,则可提供包含要导入的虚拟机的 root 文件夹的名称。

      指定文件夹或其任何子文件夹中的所有虚拟机都将作为实例导入到与所在文件夹具有相同名称的 OpenStack 项目中。

      注: 如果指定 --tenant-mapping FOLDER 但不指定 --root-folder,则默认情况下将使用集群中的顶级文件夹的名称。

      --root-resource-pool

      如果为 --tenant-mapping 参数指定 RESOURCE_POOL,则可提供包含要导入的虚拟机的 root 资源池的名称。

      指定资源池或其任何子资源池中的所有虚拟机都将作为实例导入到与所在资源池具有相同名称的 OpenStack 项目中。

    • 运行以下命令导入指定的虚拟机:
      com vmware vio vm unmanaged importvm --vm vm-id [--tenant project-name] [--nic-mac-address nic-mac --nic-ipv4-address nic-ip] [--root-disk root-disk-path] [--nics specifications]
      选项 说明

      --vm

      输入要导入的虚拟机的标识符。

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

      --tenant

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

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

      --nic-mac-address

      输入虚拟机上网卡的 MAC 地址。

      如果不包括此参数,导入过程将尝试自动发现 MAC 和 IP 地址。

      注: 如果包括此参数,还必须包括 nic_ipv4_address 参数。

      --nic-ipv4-address

      输入虚拟机上网卡的 IP 地址和前缀。以 CIDR 表示法输入值(例如,10.10.1.1/24)。

      此参数必须与 --nic-mac-address 参数结合使用。

      --root-disk

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

      --nics

      对于具有多个网卡的虚拟机,请按 JSON 格式指定每个网卡的 MAC 和 IP 地址。

      使用以下键值对:

      • mac_address:标准格式的网卡 MAC 地址
      • ipv4_address:CIDR 表示法的 IPv4 地址

      例如:

      --nics '[{"mac_address": "00:50:56:9a:f5:7b", "ipv4_address": "192.0.2.10/24"}, {"mac_address": "00:50:56:9a:ee:be", "ipv4_address": "192.0.2.11/24"}]'

结果

指定的虚拟机将导入至 OpenStack 部署中,并可作为 OpenStack 实例进行管理。