VMEmperor is a system for automated creation of virtual machines in Xen environment under XAPI management.
The system should be able to do the following.
List of hosts and pools used by VMEmperor should be defined in system settings. Sensitive admin credentials should be stored in separate protected (encrypted) files or plain-text files (defined by user-choice).
Root-level auth should be separate from user-level auth. User-level login subsystem should be implemented in pluggable way with intermediate interface that this subsystem should provide. Optional (in near future): per-user granulated resource quotas + group-granulated resource quotas. Optional (in far future): fail2ban module for hacking defense.
Each user should be able to:
- Start
- Stop
- Delete (should be turnable-off by an option in config)
- View info
- Attach additional disks (should be turnable-off by an option in config)
- View the desktop through VNC-proxy
Users and admins should see different pool info. In general admins should see sensitive info (like addresses, full template list, full VMs list) and users should not.
VMEmperor should provide a basic HTTP-server that provide net-install procedures for automated OS installation using templating systems over preseed and kickstart installation instructions. Basically we should support CentOS 6-7 and Ubuntu-server deploiments 12.04-16.04 versions.
The system should provide VNC-proxy with HTML5 VNC web-view for VMs installation and control.
The system should provide options for creating PV and HVM virtual machines by administrator choice. The choice should be done on tempalates config stage.
Guest-utils should be installed during the system installation since it's the only way to know machines actual IP addresses after OS installation process.
All the actions should be logged somehow.
Sentry location should be configurable via VMEmperor config. It should be an optional feature.
https://docs.sentry.io/clients/python/integrations/tornado/
It should be an optional feature in VMEmperor config.
System should provide an ability to choose network to use. Also network configuration should provide automatic mode (dhcp) or static config.
Administrator should be able to shadow specific networks for users (like management network) via web-interface.
The system should provide an ability to write some kind of manifest (description, input parameters, subject for action) and ansible scenarios to use. These scenarios should be read by the system on system start and should be shown to system administrators. Administrator should be able to set these scenarios for OS templates as "available for usage", "activated always" or "disabled" in user-interface. Admin should be able to set default parameters values (as a hint for users) per-template. Just in case: templates themselves are pool-specific, so it's ok.
Admin should be able to set up mirror for net-install and some basic parameters for VM automated creation (like PV or HVM mode). Admin can mark a template as a template for manual interactive installation.
Info about templates, shadowed nets, users-to-VMs correspondance should be stored via Xen tags in Xenserver pools themselves.
At least for creation status and VM states. The data should be collected via XAPI in some intervals but pushed to users in stream-like mode.