In this blog post, we will show how Virtomize helps you to create a new virtual machines and installing the operating system.
Setup
First let us see, where the Virtomize instance is situated, what it accesses and what it offers.
Virtomize is set up as a virtual machine inside one of the hypervisors it controls. It can be installed by importing a premade virtual machine or by running an install script on an already existing virtual machine. This means you don’t need any additional hardware, apart from the one running the hypervisor you already have. Once installed, Virtomize offers a simple web UI for both users and administrators.
An administrator will need to configure Virtomize to correctly access the hypervisor and setup the basic rights for users and groups. Those rights are concerned with things like which users can create or edit templates, can see and use which networks, and how may resources such as CPUs or RAM a given group can consume. The administrator can and should also create the Virtomize virtual machine templates for common business cases. These templates ensure that virtual machine created for these business cases are configured for the correct networks and have a balanced set of parameters.
After that, users can start creating VMs by either specifying all their needs or simply selecting a template and Virtomize will talk to the hypervisor in the user’s stead and take care of the rest.
Installation process
Manual process
How does such an installation work? As a base for comparison, let us begin by examining the traditional manual installation process.
It starts with the user creating a virtual machine on the hypervisor. Next, the user needs an installation medium. If not at hand, this usually leads to an internet search to find the correct version of the desired operating system. This installation medium is then inserted into the virtual machine through the hypervisor and the virtual machine is turned on.
What follows is the process of installing the operating system. Depending on that operating system, the user will have to navigate a series of dialogs. Most installations try to pose all relevant questions at the beginning, some even start installing while gathering this information, but must require a manual step at the end, such as rebooting the machine.
After the installation is finished, the user then must connect to the virtual machine through either the hypervisor or some other means like SSH and finish the configuration of the operating system. Only then is the virtual machine ready to use.
Template process
A more automized way is to use templates. These are specially prepared virtual machines, which are copied, when a user needs a new virtual machine. They are usually maintained by an administrator and contain the needed configuration information and dependencies needed for their respective use cases. When needed, the user creates a copy of the corresponding template machine and has a mostly ready base to work from.
This approach has several advantages. It is saver compared to the manual process, as the configuration is ususally managed and maintained by an administrator. It is also fast, as copying takes considerably less time than installing.
The disadvantage is cost, as someone must maintain all the templates. As the template is copied, the resulting virtual machine contains the state from the day the template was created. The further back in time this happened, the more out ouf data the template becomes. This increases the likelihood, that a created virtual machine is missing necessary security updates or uses an outdated configuration. To compensate for this, the templates are usually regularly recreated to keep them current. However, this is often done by hand. The amount of work needed for recreating these templates explodes really fast, as it has to be done for each supported variation of operating system, network configuration and use case.
Templates also have some restrictions on when they can be used, most notably static network configurations. As each copy of the template contains the same network configuration as the template, it is only practical in cases where the configuration is automatically assigned. Administrators also will tend to keep the number of templates relatively small to avoid the previously mentioned manual maintenance. The result are more general template. Therefore, a user needs to perform more steps after the automatic installation to customize the virtual machine for his use-case.
Virtomize process
Finally, let us look at the process when using Virtomize. In contrast to the previous mentioned processes, Virtomize completely automizes the creation of highly customized virtual machines.
After checking that the user has the appropriate rights and resources to create the virtual machine, Virtomize will create a customized installation medium for the virtual machine the user requested. This medium contains all the instructions on how to install the operating system and configure it to the user’s needs. This might sound simple, but creating it requires a lot of specialized knowledge about the operating system, its installation process, and its configuration. For this, we created a custom templating process, that supports may operating systems and creates a specific, fully automized installation medium is specific to a given user request.
Next, Virtomize talks to the hypervisor and creates a new virtual machine to the requested configuration and inserts the installation medium. The installation will then take a while, depending on factors such as internet speed, server load and selected operating system. Virtomize will monitor the virtual machine during that time and notify the user, once his VM is installed. Once this is done, Virtomize will delete the installation medium to save server space.
Compared to the manual process, this is faster and saver, as it does not require user input and automatically ensures a correct configuration. Compared to normal templates, the resulting virtual machines is up to date and can also be configured for static network configurations or even more complex setups like multiple network situations with different configurations.
A last additional advantage is that Virtomize only needs access to the hypervisor. As all configuration and installation is done through the installation medium, Virtomize does not need to connect to the virtual machine. This means Virtomize can be configured into a very restrictive network configuration, as long as it can connect to the hypervisor. This makes Virtomize very secure.
Conclusion
As we have seen, installing a virtual machine requires quite a few steps. The user is required to provide input during most of the manual installation process. As some of these inputs can be tricky when not done regularly a user is unlikely to work on anything meaningful during the installation process. This wastes time, better spend productively.
Templates partially automize this process by creating base installations that only need to be customized by the user for their use-case. However, these templates need to be maintained, and they also have some limitations on when they can be use.
In contrast, Virtomize collects all necessary information upfront and executes the complete installation process automatically. More intricate and use case dependent configuration details can also be pre-configured by an administrator using templates. This way, a user can focus on important tasks, while Virtomize takes care of the installation process.