Skip to content
Pavel Zinin edited this page Jul 2, 2019 · 10 revisions

Table of Contents

Deployment

Prerequisites

VMEmperor is supposed to be installed as a group of microservices using Docker Compose. Install Docker Compose prior to deployment process.

Configuration

The main configuration file is located in configs/config.ini. These are the important fields that are required to be changed:

Name Description
debug False in production environments
username Your XenServer username (usually root). Administrator account is required
password XenServer password
vmemperor_host Hostname of the host used by VMEmperor or an IP that is accessible from the VMs (for auto installation scenarios)
authenticator One of the authenticator classes. This setting represent a file name in backend/auth directory
ansible_pubkey Container path to a pubkey used for executing Ansible
ansible_networks A list of UUIDs of networks that represent physical networks accessed by your VMEmperor installation. This is used for determining an IP of a VM when ansible-playbook (always installed alongside VMEmperor) is executing a playbook
logging Python loglevel for logger

Deployment

On a target machine, install Docker Compose and run from a project directory: docker-compose up -d

This command sets up the infrastructure, binds port 80 to a web interface and port vmemperor_port to a VMEmperor backend.

Updates

After updating the git repository, run docker-compose build to rebuild the services and docker-compose restart to restart.

Consult Docker Compose documentation for details.

Usage

See Quick Start

Development

We use Python 3 - Tornado for backend, RethinkDB for caching data and providing real-time data updates. It is available in /backend

API

We use REST for authentication API and GraphQL for other means.

We use WebSockets to provide VNC via RFB and Ansible output updates.

frontend

We use TypeScript with React.js for frontend. It is available in /frontend

Frontend expects backend to be running on localhost:8889.

Host / VM usage data

We use InfluxDB for storing host usage data.

The data is imported from XenAPI via a client written in Java available in /xenservertoinflux.

The data then presented via Grafana scripted dashboards available in /configs/grafana.

Clone this wiki locally