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 [STRIKEOUT: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)