Applications and services require customized computational environments that can be provisioned
from multiple sources (e.g. on-premises Clouds, public Clouds, virtualization platforms, container orchestrators, etc.).
However, the use of these platforms require users to have non-trivial skills.
For that, IM is a tool that deploys complex and customized virtual infrastructures on multiple back-ends. The IM automates the Virtual Machine Image (VMI) selection, deployment, configuration, software installation, monitoring and update of virtual infrastructures. It supports a wide variety of back-ends, thus making user applications Cloud agnostic. In addition it features DevOps capabilities, based on Ansible to enable the installation and configuration of all the user required applications providing the user with a fully functional infrastructure.
It is a service that features a web-based GUI, a XML-RPC API, a REST API and a command-line application.
The main goal of the IM is to provide a set of functions for the effective deployment of all the required virtual infrastructures required to deploy an application or service in a Cloud environment, either composed by VMs or by Docker containers. The IM considers all the aspects related to the creation and management of virtual infrastructures:
The IM provides both XML-RPC and REST APIs to enable high-level components to access its functionality.
These APIs provide a set of functions for clients to create, destroy, and get information about the infrastructures.
The RADL language is used both to create and to get the information about the infrastructures.
The IM also provides functions to add and remove resources and modify the features of the existing ones, both
hardware and software at run-time.
The figure at the right shows the architecture of the IM. The client interfaces currently available for users are depicted at the top. The IM in the center of the figure provides the upper layers with the functionality through the APIs provided. The IM uses the "Cloud Selector" component to connect to the VMRC service to get the list of VMIs that best fit the user requirements (expressed in the RADL document) and merges this information with the list of available Cloud deployments for the user, in order to get the best option. The "Cloud Connector" layer makes effective the provision of VMs in the cloud deployments. It provides an homogeneous interface to connect to the different cloud middlewares. Finally, once the resources (VMs or Docker containers) are deployed and in the running state, the "Configuration Manager" is in charge of managing the contextualization of all the resources of the infrastructures using the Ansible.