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

您可以使用数据中心命令行界面 (DCLI) 导入虚拟机,该界面随 VMware Integrated OpenStack 管理服务器打包在一起,且由 VMware Integrated OpenStack vAPI 提供程序提供支持。

尽管导入的虚拟机将成为 OpenStack 实例,但在很多方面仍然不同:
  • 如果导入的虚拟机具有多个磁盘:
    • 不支持创建 Nova 快照。
    • 不支持 Nova 大小调整操作。
  • 现有网络作为提供程序网络类型的端口组导入,且使用 DHCP 创建的子网处于禁用状态。这可防止 OpenStack 中的 DHCP 节点与外部 DHCP 服务器之间发生冲突。
    注: 如果 DHCP 服务器在续租期间不能保持相同的 IP 地址,则 OpenStack 中的实例信息将显示错误的 IP 地址。因此,建议您在现有的 DHCP 服务器上使用静态 DHCP 绑定。此外,建议不要在导入的网络上启动新的 OpenStack 实例,因为外部服务器中的 DHCP 地址(如有)可能会与 OpenStack 冲突。
  • 导入的虚拟机能够显示正确的 CPU 和内存,但根磁盘错误地显示为 0 GB。

前提条件

  • 确认您运行的是 VMware Integrated OpenStack 版本 4.0
  • 确认 VMware Integrated OpenStack 已部署且正在运行。
  • 确认要导入的虚拟机位于同一个 vCenter 中。
  • 适用于 Neutron 的 NSXVDS 插件支持导入虚拟机。
    注: 如果您运行的是 VMware Integrated OpenStack 3.0,则无法导入由 NSX 逻辑交换机提供后备支持的虚拟机。网络支持必须是一个常规的分布式端口组。而在 VMware Integrated OpenStack 3.1 及更高版本中则支持此功能。

过程

  1. 将包含要导入的虚拟机的群集添加到 VMware Integrated OpenStack 部署中。
    1. vSphere Web Client 中,确定包含要导入的虚拟机的群集。
    2. 将该群集作为 Nova 计算群集添加到 VMware Integrated OpenStack 部署。
    3. 如有必要,对多个群集重复上述操作。
    将该群集添加为 Nova 计算群集后,可以导入虚拟机。
  2. 使用 SSH 登录到 VMware Integrated OpenStack Manager。
  3. 连接到 VMware Integrated OpenStack vAPI 端点。
    该端点在本地运行。
    dcli +server http://localhost:9449/api +i
    此命令将打开一个交互式 shell ( dcli)。
  4. 列出 VMware Integrated OpenStack vAPI 提供程序中的所有命名空间。
    dcli> com vmware vio 
    The vio namespace provides namespaces to manage components related to OpenStack and vSphere
    Available Namespaces:
    vm
  5. (可选) 列出与导入非受管虚拟机相关的命令。
    非受管虚拟机是 VMware Integrated OpenStack 中不作为 OpenStack 实例进行管理的虚拟机。在此示例中,非受管虚拟机包括群集中已添加到计算节点的虚拟机。
    dcli> com vmware vio vm unmanaged 
    The Unmanaged namespace provides commands to manage virtual machine not under OpenStack
    Available Commands:
    importall   Imports all unmanaged virtual machines into OpenStack
    importvm    Imports given virtual machine into OpenStack
    list        Enumerates the list of unmanaged virtual machines
  6. (可选) 列出特定目标群集中已添加到 Nova 计算节点的非受管虚拟机。
    com vmware vio vm unmanaged list --cluster <vcenter cluster mor-id>

  7. 将虚拟机导入 VMware Integrated OpenStack
    可以导入所有虚拟机或某个特定虚拟机。
    1. 导入所有虚拟机:
      com vmware vio vm unmanaged importall [-h] --cluster CLUSTER [--tenant-mapping {FOLDER,RESOURCE_POOL}] [--root-folder ROOT_FOLDER]
                                                   [--root-resource-pool ROOT_RESOURCE_POOL]
      选项 说明
      --cluster CLUSTER

      指定虚拟机所在的 Nova 计算群集。

      --tenant-mapping {FOLDER,RESOURCE_POOL}

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

      此参数为可选。如果未指定租户映射,则导入的虚拟机将变为 OpenStack import_service 项目中的实例。

      --root-folder ROOT_FOLDER

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

      • 指定 root 文件夹中的所有虚拟机均会导入,其中包括子文件夹中所含的虚拟机。
      • 这些虚拟机将作为实例导入与指定 root 文件夹同名的 OpenStack 项目。
      • 如果 root 文件夹包含子文件夹中的虚拟机,这些虚拟机将导入与子文件夹同名的 OpenStack 项目。
      注: 如果未指定 root 文件夹,则默认情况下将使用群集中的顶级文件夹的名称。
      --root-resource-pool ROOT_RESOURCE_POOL

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

      • 指定根资源池中的所有虚拟机均会导入,其中包括子资源池中所含的虚拟机。
      • 这些虚拟机将作为实例导入与指定根资源池同名的 OpenStack 项目。
      • 如果根资源池包含子资源池中的虚拟机,这些虚拟机将导入与子资源池同名的 OpenStack 项目。
    2. 导入某一特定虚拟机:
      com vmware vio vm unmanaged importvm [-h] \
           --vm VM [--tenant TENANT] [--nic-mac-address NIC_MAC_ADDRESS] \
           [--nic-ipv4-address NIC_IPV4_ADDRESS]
      选项 说明
      --vm VM

      指定要导入的特定虚拟机的 vm-<id>

      您可以通过运行 com vmware vio vm unmanaged list 命令查看要导入的所有虚拟机的 ID 值。

      --tenant TENANT

      将导入的虚拟机所在的 OpenStack 项目指定为 OpenStack 实例。

      此参数为可选。如果未指定,导入的虚拟机将变为 OpenStack import_service 项目中的实例。

      --nic-mac-address NIC_MAC_ADDRESS

      (可选)为虚拟机的网卡提供 MAC 地址。

      如果导入过程无法发现此值,导入将会失败。此参数允许您手动输入网卡 MAC 地址。

      注: 如果指定,则还必须提供 nic-ipv4-address 参数。
      --nic-ipv4-address NIC_IPV4_ADDRESS

      (可选)为虚拟机的网卡提供 IP 地址。

      如果导入过程无法发现此值,导入将会失败。此参数允许您手动输入网卡 IP 地址。

      注: 如果指定,则还必须提供 nic-mac-address 参数。
  8. (可选) 您可以修改 custom.yml 文件,对导入的虚拟机启用或禁用重定位和重命名。
    默认情况下,将启用该选项。
    1. 如果您尚未执行此操作,请执行 custom.yml 文件。
      sudo mkdir -p /opt/vmware/vio/custom
      sudo cp /var/lib/vio/ansible/custom/custom.yml.sample /opt/vmware/vio/custom/custom.yml
    2. 要对导入的虚拟机禁用重定位和重命名,请在 custom.yml 文件中取消对以下参数的注释。
      nova_import_vm_relocate: false
    3. 保存 custom.yml 文件。