Skip to content

osism/vmware2openstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VMware to OpenStack migration script (vmware2openstack)

This script may be used to migrate VMs from VMware to an OpenStack environment.

The script itself must be run on a machine which has access to:

  • the ESXI host where the VM to migrated resides on
  • the OpenStack environment where the VM needs to migrated to

Usage

usage: vmware2scs.py [-h] -c CONFIG -n NAME [-fc]

VMWare to OpenStack move script

options:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Config file to use (default: None)
  -n NAME, --name NAME  Name of the server to create during migration (default: None)
  -fc, --forceCopy      Force copying of image files from ESXI if already present in data directory (default: False)

At least a configuration file and the name of the server must be given.

The server will be migrated into the configured OpenStack environment using the name given at command line.

Configuration

Example configuration

converter:
  # path on converter host to store vmdk files
  # and converted raw images
  data_path: /convert/vmware2scs

esxi:
  # the ESXI host
  host: vmhost05.example.com
  
  # ESXI password
  password: nudelsuppe
  
  # ESXI ssh port
  ssh-port: 22
  
  # Name of virtual machine to migrate
  vm: glados-42

openstack:
  
  target:
    # Target flavor
    flavor: SCS-8V-16
    
    # Target security group
    security_group: 13371337-12f1-47e4-ac7a-e3a2a8813ca6
    
    # Target networks (name: <IP>)
    networks:
      - somenet: auto

  env:
    # Target openstack environment
    OS_AUTH_TYPE: password
    OS_AUTH_URL: https://your.keystone.example.com:32443/v3
    OS_IDENTITY_API_VERSION: 3
    OS_INTERFACE: public
    OS_PASSWORD: 1337
    OS_PROJECT_DOMAIN_NAME: Default
    OS_PROJECT_NAME: someproject
    OS_PROJECT_ID: 133713375cc54a1e8ea17dc27d77af2a
    OS_USERNAME: chell
    OS_USER_DOMAIN_NAME: Default
    OS_VOLUME_API_VERSION: 3
    OS_REGION_NAME: Testchamber23

Example migration

(venv) conv-user@converter:~/vmware2openstack$ python3 main.py -c etc/migrate-glados.yaml -n glados
2024-04-23 13:25:48,808 - main:INFO - Starting
2024-04-23 13:25:48,810 - migrator:INFO - Creating migration directory at /convert/vmware2openstack/glados
2024-04-23 13:25:48,992 - migrator:INFO - Found VM glados-42 on ESXI host esxi.example.com with id 42 and path /vmfs/volumes/13371337-1584da60-0d47-80c16e72faa0/glados-42
2024-04-23 13:25:48,992 - migrator:INFO - Checking ssh connection to ESXI host
2024-04-23 13:25:49,274 - migrator:INFO - Openstack: network show somenet
2024-04-23 13:25:50,100 - migrator:INFO - Openstack: security group show 13371337-12f1-47e4-ac7a-e3a2a8813ca6

W A R N I N G ! ! !
        
The virtual machine glados-42 (42) will be shutdown after you proceed.    
Be very sure from here on.
        
Proceed? [y/N] y
2024-04-23 13:25:56,447 - migrator:INFO - VM powered off successfully
2024-04-23 13:25:56,448 - migrator:INFO - Copying vmdk files from vmhost05.a.uintra.net:/vmfs/volumes/536f131e-1584da60-0d47-80c16e72faa0/nxc-sat06dt-02 to /convert/vmware2openstack/mig2
2024-04-23 13:25:58,808 - migrator:INFO - Progress: /convert/vmware2openstack/glados/glados-42-disc0-flat.vmdk: 0%
...
2024-04-23 13:30:38,822 - migrator:INFO - Progress: /convert/vmware2openstack/glados/glados-42-disc0-flat.vmdk: 100%
2024-04-23 13:30:48,822 - migrator:INFO - Progress: /convert/vmware2openstack/glados/glados-42-disc1-flat.vmdk: 0%
...
2024-04-23 13:35:28,838 - migrator:INFO - Progress: /convert/vmware2openstack/glados/glados-42-disc1-flat.vmdk: 100%
2024-04-23 13:35:33,109 - migrator:INFO - Converting vmdk files in /convert/vmware2openstack/glados
2024-04-23 13:35:33,110 - migrator:INFO - Converting /convert/vmware2openstack/glados/glados-42-disc0.vmdk
    (100.00/100%)
2024-04-23 13:36:37,727 - migrator:INFO - Converting /convert/vmware2openstack/glados/glados-42-disc1.vmdk
    (100.00/100%)
2024-04-23 13:37:36,658 - migrator:INFO - Openstack: image list
2024-04-23 13:37:37,981 - migrator:INFO - Skipping import of glados-42-disc0.vmdk.raw: already imported as 13371337-3863-49b2-aa0f-16bd7711d76e
2024-04-23 13:37:37,981 - migrator:INFO - Openstack: image show 13371337-3863-49b2-aa0f-16bd7711d76e
2024-04-23 13:37:38,787 - migrator:INFO - Skipping import of glados-42-disc1.vmdk.raw: already imported as 13371337-f86c-4bbd-8cc8-65853c022278
2024-04-23 13:37:38,787 - migrator:INFO - Openstack: image show 13371337-f86c-4bbd-8cc8-65853c022278
2024-04-23 13:37:39,583 - migrator:INFO - Creating server with the following settings:
2024-04-23 13:37:39,583 - migrator:INFO -     Flavor: SCS-8V-16
2024-04-23 13:37:39,583 - migrator:INFO -     Security group: 13371337-12f1-47e4-ac7a-e3a2a8813ca6
2024-04-23 13:37:39,583 - migrator:INFO -     Network: somenet with IP auto
2024-04-23 13:37:39,583 - migrator:INFO -     Boot volume with image: 13371337-3863-49b2-aa0f-16bd7711d76e, size 20.0GB
2024-04-23 13:37:39,583 - migrator:INFO -     Additional volume with image: 13371337-f86c-4bbd-8cc8-65853c022278, size 20.0GB
2024-04-23 13:37:39,584 - migrator:INFO - Openstack: server create --flavor SCS-8V-16 --image 13371337-3863-49b2-aa0f-16bd7711d76e --boot-from-volume 20 --security-group 13371337-12f1-47e4-ac7a-e3a2a8813ca6 --nic net-id=13371337-b6ef-4f4e-b999-9d6cc6088a95 --block-device uuid=13371337-f86c-4bbd-8cc8-65853c022278,source_type=image,destination_type=volume,volume_size=20 --os-compute-api-version 2.90 glados
2024-04-23 13:37:40,940 - migrator:INFO - Openstack server created, have fun