Apache CloudStack has proved itself to be a great cloud orchestrator and is probably one of the best open-source platforms available for deployment of new IaaS environments. However, until now there has been little or no support for importing an existing cloud environment with all its resources and entities into CloudStack. This is going to change with new release CloudStack 4.14 which will include a new feature allowing the import of existing virtual machines (VMs) into a cloud environment.

With CloudStack 4.14 new APIs have been added to list and import unmanaged VMs. Currently, this support is only available for vSphere clusters (ie. only for VMware hypervisor) but given the vibrant community of the Apache CloudStack project, it will probably not be long before this support is extended to other hypervisors as well.

The following new APIs have been added to facilitate listing and importing of an unmanaged instance (VM):

  • listUnmanagedInstances – to list unmanaged VM instances that are present on the hypervisor end but could not be accessed from CloudStack
  • importUnmanagedInstance – to import unmanaged VM instances

While the system auto-configures several VM parameters during import (such as network, IP address, host and storage) it relies on a few pre-requisites for successful listing and import. The system requires a vSphere cluster added to CloudStack with the desired hosts and storage. It also requires CloudStack networks to be created for existing networks from vCenter. There are some additional requirements, more detail can be found in the CloudStack documentation: http://docs.cloudstack.apache.org/en/latest/adminguide/virtual_machines.html#importing-virtual-machines

Once these pre-requisites have been fulfilled, the administrator can successfully import virtual machines into CloudStack using importUnmanagedInstance which takes a number of parameters to configure template, compute, storage, network, etc. for the VM. On successful import, the imported VM operates as if it had been deployed from within CloudStack, and all normal VM operations can now be carried out.

Since the network will be the most dynamic aspect for the virtual machine, the new import API tries to automatically assign networks to its NICs. The user of the API can also manually assign the network(s) and IP addresses with appropriate parameters. To ease the creation of CloudStack network(s) for existing networks from vCenter, the new release also consists of a network discovery python script in cloudstack-common packages – discover_networks.py. This script allows the listing of all networks for a vCenter host or cluster which have at least one VM attached to them.

The addition of this new import functionality will surely aid migration of existing virtual machines into a CloudStack environment, and will help cloud operators wishing to move to CloudStack but could not due to their existing setup.