Author:
Emmanuel Kayode Akinshola Ogunshile
Affiliation:
University of the West of England, United Kingdom
Keyword(s):
Command Line Utility, Cloud Images, Virtual Machines, Public and Private Cloud Environments.
Abstract:
The purpose of this paper is to create and demonstrate a command line utility that uses freely available
cloud images—typically intended for deployment within public and private cloud environments—to rapidly
provision virtual machines on a local server, taking advantage of the ZFS file system. This utility, qvm,
aims to provide syntactical consistency for both potential contributors and users alike—it is written in
Python and uses YAML for all user configuration; exactly like cloud-init, the post-deployment
configuration system featured in the cloud images used by qvm to allow its rapid provisioning. qvm itself
does not use the libvirt API to create virtual machines, instead parsing pre-defined templates containing
options for the commonly used virt-install tool, installed alongside virt-manager, the de facto graphical
libvirt client. The utility is capable of importing cloud images into zvols and creating clones for each virtual
machine using the pyzfs Python wrapper for th
e libzfs_core C library, as well as a custom recreation of
pyzfs based on the zfs command line utility. qvm aims to introduce some basic IaC constructs to the
provisioning of local virtual machines using the aforementioned common tools, requiring no prior
experience beyond the usage of these tools. Its use of cloud-init allows for portability into existing cloud
infrastructure, with no requirements on common Linux distributions, such as Red Hat Enterprise Linux,
Debian, or SUSE, and their derivatives, beyond their base installation with virtualisation server packages
and the prerequisite Python libraries required by qvm.
(More)