One of the most important thing about Archipel is real time. Every event is pushed as soon as it occurs.
Nothing is polled. When an entity - virtual machine, hypervisor or whatever - has something to say,
the information is sent over the platform. If nothing happens, well, nothing happens.
For the needs of Archipel, we wrote a port of Growl for Cappuccino applications, smartly named
GrowlCappuccino.
Thanks to this framework, you are notified as soon as an event occurs, wherever you are doing on the application.
All the real time stuff is done thanks to XMPP (formely known as
Jabber). Each virtual machine, hypervisor or
controller is a XMPP entity able to send and receive messages, commands and information from other
entities, real or virtual.
Like GrowlCappuccino, for Archipel needs, we also wrote a Cappuccino framework to provide high level
abstraction layer of XMPP commands. It relies on Strophe.js,
a pure javascript framework, and turns it into Cappuccino objects.
This framework, StropheCappuccino is also available for free.
Libvirt is an open source library that allows applications to drive virtualization engines
using an unified protocol. We are not only talking about starting or shutdowning a virtual machine,
but also defining them, setting hypervisor's networks and creating storage pools.
Libvirt is compatible with
KVM,
OpenVZ,
Sun's VirtualBox,
Xen and even with
VMware.
And so is Archipel (note that all hypervisors haven't the same level of support. We strongly suggest to use KVM).
You can use different virtualization engines and control them all from the same web interface.
Libvirt is packaged in a majority of Linux distributions. It is very easy to install and configure.
Note that at the moment we only support KVM/QEMU. This is due to lack of features or bugs on other
libvirt's drivers. Xen support is coming soon.
Because extensability is great, Archipel is built around a foundation (Archipel Core) basically a XMPP roster and a
module loading system. No less, no more. All virtualization features are bundled into a set of modules that
extends functionalities step by step. You can load the "Virtual Machine Controls" module
then you'll be able to control your virtual machines ; Load the "Hypervisor Networks" modules, and you'll be able to
manage the hypervisor's networks etc. Archipel comes with a set of modules to manage your virtual
infrastructure. But if you have some very specific needs, creating your module is very easy.
On the hypervisor part, we also support modules using python's code injection. This method is very flexible
and makes development easy because there is no plotted API. You can use all the core features, right from your module.
Archipel has different types of sample modules, for both GUI and hypervisor sides.
You can download these samples if you want to try to build your own great features.
Once you get the SDK, you may need to learn how it works. Follow this tutorial in
order to learn the basics of Archipel bundle development.
Archipel includes a VNC client right from one of its module. You can control your virtual machine's
screens. If your virtual machine is a graphical terminal (Linux Xorg or Windows), you can use your mouse
right from your browser to do anything you want, just like you were in front of a real computer.
This VNC module uses only Javascript, thanks to noVNC. No Java anymore.
Archipel completely relies on XMPP so its entities can communicate all over the world, in a secure way using XMPP
Server-to-Server communication (s2s) feature. You can remotely control your distant datacenters – from your garage
to the other side of the world – in real time.
Create and run a virtual machine, check distant hypervisors' health and stats, move virtual machine
from a host to another, without moving from your chair. Archipel doesn't know distance.
If you want to configure a multi-site virtual infrastructure, follow this tutorial to learn
how to configure your XMPP servers to handle server to server secure communication.
Even if you have only one datacenter, you can avoid the presence of a single point of failure (SPOF) by
building. Learn how!
On the server side, Archipel uses exclusively Python.
This language is fast, easy and have a bunch of modules. Python runs under every operating system.
The principal module used by Archipel is xmpppy,
the StropheCappuccino equivalent in Python. All the code is bundled into one folder that
can be anywhere on the file system. Deployment is incredibly easy. No database, no
webserver, nothing. All is already packaged in Archipel.
Archipel runs as daemon, and support network or XMPP servers failures. If your network goes down,
Archipel will wait for services to be up again and will reconnect by itself, keeping safe your virtual.
Objective-J – the main user interface technology – is to Javascript what Objective-C is to C
and Cappuccino mimics Cocoa. It embeds Foundation,
AppKit, Core Animation, MapKit and many more Frameworks. If you know Mac or iPhone development, you surely already
know Cappuccino.
All of these tools allow to build really great applications in no time, focusing on the features, not on the code.