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

此过程适用于使用 VDSNSX Data Center for vSphere 网络的部署。对于 NSX-T Data Center 部署,请参见使用 NSX-T Data Center 将虚拟机导入 VMware Integrated OpenStack

导入的虚拟机将变为 OpenStack 实例,但有所不同。

  • 如果虚拟机有多个磁盘,这些磁盘将作为 Cinder 卷导入。

  • 现有网络作为 portgroup 类型的提供商网络导入,访问权限限于给定租户。

  • 导入具有特定网络支持的虚拟机后,将无法向不同项目导入相同的网络。

  • 将自动创建 Neutron 子网,但禁用 DHCP。

  • 根据虚拟机网卡的 IP 和 MAC 地址自动创建 Neutron 端口。

注:

如果 DHCP 服务器在续租期间不能保持相同的 IP 地址,则 OpenStack 中的实例信息将显示错误的 IP 地址。为避免出现此问题,请在现有 DHCP 服务器上使用静态 DHCP 绑定,并且不要在导入的网络上运行新 OpenStack 实例。

OpenStack 管理服务器 上使用 Data Center Command-Line Interface (DCLI) 导入虚拟机。

前提条件

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

过程

  1. vSphere 中,将包含所需虚拟机的群集添加为 VMware Integrated OpenStack 部署中的计算群集。有关说明,请参见向 OpenStack 部署中添加计算群集
  2. viouser 用户身份登录到 OpenStack 管理服务器
  3. 如果要防止导入的虚拟机重新放置或重命名,请更新您的部署配置。
    1. 如果您的部署未使用 custom.yml 文件,请将模板 custom.yml 文件复制到 /opt/vmware/vio/custom 目录。
      sudo mkdir -p /opt/vmware/vio/custom
      sudo cp /var/lib/vio/ansible/custom/custom.yml.sample /opt/vmware/vio/custom/custom.yml
    2. 在文本编辑器中打开 /opt/vmware/vio/custom/custom.yml 文件。
    3. 取消对 nova_import_vm_relocate 参数的注释并将其值设置为 false
    4. 部署更新的配置。
      sudo viocli deployment configure

      部署此配置会短暂中断 OpenStack 服务。

  4. 连接到 VMware Integrated OpenStack vAPI 端点。
    dcli +server https://mgmt-server-ip:9449/api +i

    如果无法连接到服务器,请参见DCLI 无法连接到服务器

  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 ROOT_FOLDER

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

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

      注:

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

      --root-resource-pool 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] foo/foo_1.vmdk'

      --nics

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

      使用以下键值对:

      • mac_address:标准格式的网卡 MAC 地址

      • ipv4_address:CIDR 表示法的 IPv4 地址

      例如:

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