Archipel ist eine webbasierte Software, die es ermöglicht virtuelle Maschinen über eine Weboberfläche zu verwalten und Einstellungen vorzunehmen. Die Software nutzt zur Kommunikation das XMPP Protokoll und zur Verwaltung die libvirt. So ist es möglich verschiedene Virtualisierungslösungen wie zum Beispiel KVM, OpenVZ, Xen und weitere zu verwalten.
Die folgende Anleitung bezieht sich auf die Verwendung mit KVM unter Ubuntu 11.04, sie sollte sich jedoch auch leicht auf andere Systeme übertragen lassen.
Client
Für einen schnellen Test wurden der Client und der Jabber Server auf einem Server installiert. Dies kann jedoch auch ohne Probleme getrennt werden. Zu empfehlen ist jedoch einen Jabber Server zu verwenden, der nur von den Administratoren bzw. nur von Archipel verwendet wird, da zum Beispiel für jede virtuelle Maschine ein neues Jabber-Konto angelegt wird.
Von den Entwicklern wird die Verwendung des ejabberd empfohlen. Dieser wird wie folgt installiert.
$ sudo apt-get install ejabberd
Anschließend muss die Konfigurationsdatei /etc/ejabberd/ejabberd.cfg
bearbeitet werden. Hierfür bietet sich die Verwendung der
~~vorbereiteten Konfiguration auf der Github-Seite unter "Ejabberd configuartion"~~ Beschreibung im Installation
Manual
unter "Configure ejabberd" an. Anschließend wird der ejabberd Server
neu gestartet.
$ sudo service ejabberd restart
Für einen ersten Test wird ein Administrator Nutzer benötigt.
$ ejabberdctl register admin HOSTNAME_DES_JABBER_SERVERS PASSWORT
Da der Archipel Client kein Backend benötigt, wird ein leicht gewichtiger Webserver wie Lighttpd verwendet.
$ sudo apt-get install lighttpd
Nach der Installation wird die Konfiguration /etc/lighttpd/lighttpd.conf
angepasst.
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_proxy",
)
server.document-root = "/var/www/"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
index-file.names = ( "index.php", "index.html",
"index.htm", "default.htm",
"index.lighttpd.html" )
accesslog.filename = "/var/log/lighttpd/access.log"
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.pid-file = "/var/run/lighttpd.pid"
dir-listing.encoding = "utf-8"
server.dir-listing = "enable"
server.username = "www-data"
server.groupname = "www-data"
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ("text/plain", "text/html", "application/x-javascript", "text/css")
proxy.server = ( "/http-bind" => ( ( "host" => "127.0.0.1", "port" => 5280 ) ) )
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
$HTTP["remoteip"] =~ "127.0.0.1" {
alias.url += (
"/doc/" => "/usr/share/doc/",
"/images/" => "/usr/share/images/"
)
$HTTP["url"] =~ "^/doc/|^/images/" {
dir-listing.activate = "enable"
}
}
Der Archipel Client kann über die Webseite heruntergeladen werden. Als Beispiel wird an dieser Stelle das Nightly verwendet.
$ wget http://nightlies.archipelproject.org/latest-archipel-client.tar.gz
$ tar -vxf latest-archipel-client.tar.gz
$ sudo mv Archipel /var/www/archipel
Nach dem Entpacken steht die Benutzeroberfläche unter
http://NAME-DES-WEBSERVERS/archipel/ zur Verfügung. Bei "BOSH
service" wird http://NAME-DES-WEBSERVERS/http-bind
eingetragen.
Weitere Einstellungen zur Sicherheit des Web-Servers müssen selbst
vorgenommen werden.
Agent
Im weiteren wird davon ausgegangen, dass die entsprechenden Pakete zur Verwendung von KVM auf dem Host-System(auch Node genannt) schon installiert sind.
Bevor die virtuellen Maschinen verwaltet werden können, muss zusätzlich auf den Host-Systemen der Archipel Agent installiert werden. Hierfür bietet es sich an, die vorgefertigten Pakete direkt von PyPi zu verwenden.
$ sudo apt-get install python-pip libvirt-bin python-imaging qemu-kvm python-libvirt
$ sudo easy_install archipel_agent
$ sudo archipel-initinstall
War die Installation erfolgreich, wird zur weiteren Einrichtung die
Konfigurationsdatei /etc/archipel/archipel.conf
bearbeitet. Damit der
Agent auch den Jabber Server erreichen kann, sind die XMPP Einstellungen
anzupassen. Zusätzlich ist es von Vorteil, wenn der Wert für
machine_ip
nicht auf auto
zu belassen, sondern auf die
tatsächliche IP einzustellen. Diese Einstellung behob in der
Testumgebung das Problem, dass der Client den VNC-Server nicht erreichen
konnte.
Abschluss
Ob sich der Agent erfolgreich am ejabberd angemeldet hat, kann wie folgt überprüft werden.
$ sudo ejabberdctl connected_users
Die virtuellen Maschinen sollten sich jetzt über die Weboberfläche verwalten lassen.
Links
- Archipel Project (englisch)
- Archipel Download (englisch)
- Archipel Wiki auf github (englisch)
- libvirt (englisch)
- lighttpd (englisch)
- PyPi (englisch)