Skip to content

grycap/im

Repository files navigation

IM - Infrastructure Manager

PyPI Tests Codacy Badge Codacy Badge License Docs SQAaaS badge

IM is a tool that deploys complex and customized virtual infrastructures on IaaS Cloud deployments (such as AWS, OpenStack, etc.). It eases the access and the usability of IaaS clouds by automating the VMI (Virtual Machine Image) selection, deployment, configuration, software installation, monitoring and update of the virtual infrastructure. It supports APIs from a large number of virtual platforms, making user applications cloud-agnostic. In addition it integrates a contextualization system to enable the installation and configuration of all the user required applications providing the user with a fully functional infrastructure.

Read the documentation and more at http://www.grycap.upv.es/im.

There is also an Infrastructure Manager YouTube reproduction list with a set of videos with demos of the functionality of the platform: https://www.youtube.com/playlist?list=PLgPH186Qwh_37AMhEruhVKZSfoYpHkrUp.

Please acknowledge the use of this software in your scientific publications by including the following reference:

Miguel Caballer, Ignacio Blanquer, German Molto, and Carlos de Alfonso. "Dynamic management of virtual infrastructures". Journal of Grid Computing, Volume 13, Issue 1, Pages 53-70, 2015, ISSN 1570-7873, DOI: 10.1007/s10723-014-9296-5.

Achievements

SQAaaS badge

This software has received a gold badge according to the Software Quality Baseline criteria defined by the EOSC-Synergy project.

1 DOCKER IMAGE

The recommended option to use the Infrastructure Manager service is using the available docker image. A Docker image named ghcr.io/grycap/im has been created to make easier the deployment of an IM service using the default configuration. It is available in the IM Github Container registry.

How to launch the IM service using docker::

sudo docker run -d -p 8899:8899 -p 8800:8800 --name im ghcr.io/grycap/im

To make the IM data persistent you also have to specify a persistent location for the IM database using the IM_DATA_DB environment variable and adding a volume::

sudo docker run -d -p 8899:8899 -p 8800:8800 -v "/some_local_path/db:/db" \
                -e IM_DATA_DB=/db/inf.dat --name im ghcr.io/grycap/im

You can also specify an external MySQL server to store IM data using the IM_DATA_DB environment variable::

sudo docker run -d -p 8899:8899 -p 8800:8800 \
                -e IM_DATA_DB=mysql://username:password@server/db_name \
                --name im ghcr.io/grycap/im

Or you can also add a volume with all the IM configuration::

sudo docker run -d -p 8899:8899 -p 8800:8800 \
                -v "/some_local_path/im.cfg:/etc/im/im.cfg"
                --name im ghcr.io/grycap/im

2 Kubernetes Helm Chart

The IM service and web interface can be installed on top of Kubernetes using Helm.

How to install the IM chart:

First add the GRyCAP repo:

helm repo add grycap https://grycap.github.io/helm-charts/

Then install the IM chart (with Helm v2):

helm install --namespace=im --name=im  grycap/IM

Then install the IM chart (with Helm v3):

helm install --namespace=im --create-namespace im  grycap/IM

All the information about this chart is available at the IM chart README.

3 CONFIGURATION

Check the parameters in $IM_PATH/etc/im.cfg or /etc/im/im.cfg. See IM Manual to get a full reference of the configuration variables.

Please pay attention to the next configuration variables, as they are the most important:

DATA_DB - must be set to the URL to access the database to store the IM data. Be careful if you have two different instances of the IM service running in the same machine!!. It can be a MySQL DB: mysql://username:password@server/db_name, SQLite: sqlite:///etc/im/inf.dat or MongoDB: mongodb://username:password@server/db_name,

3.1 SECURITY

Security is disabled by default. Please notice that someone with local network access can "sniff" the traffic and get the messages with the IM with the authorisation data with the cloud providers.

Security can be activated both in the XMLRPC and REST APIs. Setting this variables:

XMLRCP_SSL = True

or

REST_SSL = True

And then set the variables: XMLRCP_SSL_* or REST_SSL_* to your certificates paths.