This blog describes how you can overcome the limitations of AWS VM ImportInstance feature. There are several reasons for users to want to import their existing server and client system VMs (OVF, OVA, VMX/VMDK, QCOW) to AWS. If you have existing virtualized multi tier applications and you want to leverage public clouds for dev/test/training environments for these applications, you would want a way to quickly run these applications on public cloud while preserving their software and configuration settings. Another scenario is, if you develop applications that run on multiple windows clients, you are probably testing them on multiple windows clients like Windows 7, Windows 8, windows 8.1, Windows 10 etc. Public cloud presents a very attractive alternative to run on-demand, at scale client testing.
Most leading public clouds in the recent years have added support for importing existing VMs from data Center and for building cloud instances using the imported VM image. This process involves using CLI based cloud interface and converts the existing VM image to an AMI. Then, the user can instantiate instances from the AMI and has to redefine the networking, to replicate the application’s existing network topology. There are some known limitations on the disk formats, networking and other configurations of a VM that can’t be moved over AS IS during this import process. This can pose a problem for a variety of purposes. For dev/test purposes, you want the application environment on AWS to mirror your DC hosted application topology and environment configurations. This is essential for high fidelity testing and for eliminating false positives during testing. Some known examples of where such limitations can be a challenge are:
Ravello Systems lets you import VM/KVM images and run them unmodified on AWS and Google Cloud. Ravello technology is high performance nested hypervisor capable of running unmodified guests on top of already virtualized hardware. HVX exposes VMware or KVM devices to the virtual machine running on top. This means that the VM images are not converted or modified during the import process. They run unmodified on top of Ravello on top of AWS. Everything about the VM stays the same - the same operating system, paravirtualized drivers (VMXNet3 network driver, PVSCSI storage driver etc.), application settings, network settings, VMware tools etc.
Download Ravello VM import tool from your Ravello account and connect to your ESXi vCenter. You can also upload VM images directly from your laptop if you have already exported them. Select the Vm images you want to upload and start the upload. Depending on the size of the VM image and your network bandwidth, this may take some time. There are some best practices, tools and tips to optimize the upload time.
You can start multiple VM image uploads at the same time and monitor the progress in the upload tool. There is also a CLI version available for those who like command line interface.
Once the VM images are uploaded, they are available in your private VM library.
Drag and drop the VM image from the library on the Application workspace area. Then, you can verify the VM software configuration, disk and networking configuration before running it on top of AWS or Google Cloud.
The VM image is not converted and comes over unmodified with the same system properties as were set in your DC.
All disk/volume configurations are supported and you don’t need to change the existing disk configuration of your VM to run it on top of AWS and Google cloud. Ravello HVX transparently maps it to underlying cloud storage. You can have as many disks and each of your disks can be 25TB.
The uploaded VM image retains all the networking configuration. If your NIC is configured with multiple NICs, you can define those under networking configuration with the same static IPs as your DC.
You can drag and drop multiple VM images that you have uploaded for your application environment, verify that all Vms have retained the networking and other configurations and publish/run the application on AWS or Google Cloud.
To summarize, you can take your existing application VM images(VMWare or KVM - ova, ovf, qcow, vmx/vmdks), upload them using an easy to understand GUI tool and run them unmodified on AWS and Google Cloud. You can upload and run VM images which are built using custom linux kernel, Windows Vms with custom patches, Vms with multiple NICs, GUID Partition Table (GPT) partitioned volumes, 32 bit windows VM images or windows XP and large multiple disks(in TB).