Moving my VPS from VMware to Fuga was successful. First I copied the VMDK from the ESXi host to a Fuga instance with enough storage:
scp some.esxi.host:/vmfs/volumes/storage-node/autostatic1.autostatic.cyso.net/autostatic1.autostatic.cyso.net-flat.vmdk ./
And then converted it to QCOW2 with qemu-img:
qemu-img convert -O qcow2 autostatic1.autostatic.cyso.net-flat.vmdk autostatic1.autostatic.cyso.net.qcow2
Next step was mounting it with guestmount:
guestmount -a /var/www/html/images/autostatic1.autostatic.cyso.net.qcow2 -m /dev/sda8 /mnt/tmp/
And changing some settings, i.e. network and resolvconf. When that was done I unmounted the image:
guestunmount /mnt/tmp
And uploaded it to my Fuga tenant:
openstack image create --disk-format qcow2 --container-format bare --file /path/to/images/autostatic1.autostatic.cyso.net.qcow2 --private autostatic1.autostatic.cyso.net.qcow2
Last step was launching an OpenStack image from this image, I used Ansible for this:
- name: Launch OpenStack instance
hosts: localhost
connection: local
gather_facts: no
vars:
os_flavor: c1.large
os_network: int1
os_image: 5b878fee-7071-4e9c-9d1b-f7b129ba0644
os_hostname: autostatic1.autostatic.cyso.net
os_portname: int-port200
os_fixed_ip: 10.10.10.200
os_floating_ip: 185.54.112.200
tasks:
- name: Create port
os_port:
network: "{{ os_network }}"
fixed_ips:
- ip_address: "{{ os_fixed_ip }}"
name: "{{ os_portname }}"
- name: Launch instance
os_server:
state: present
name: "{{ os_hostname }}"
timeout: 200
flavor: "{{ os_flavor }}"
nics:
- port-name: "{{ os_portname }}"
security_groups: "{{ os_hostname }}"
floating_ips: "{{ os_floating_ip }}"
image: "{{ os_image }}"
meta:
hostname: "{{ os_hostname }}"
And a few minutes later I had a working VPS again. While converting and uploading I made the necessary DNS changes and by the time my VPS was running happily on Fuga all DNS entries pointed to the new IP address.