Diese Woche wollten wir dem Entwicklungsalltag entfliehen und
heben eine Woche eingeschoben, in der wir uns um die Automatisierung der
Installation und Wartung kümmern wollen, also mehr “Devops”
Tätigkeiten verrichten.
Für den Bereich der automatischen Installation und der Automatisierung
der Wartungstätigkeiten haben wir uns nun auf die
Automatisierungssoftware Puppet (http://puppetlabs.com/) festgelegt.
Puppet ist ein weiterer Dienst, der auf der virtuellen Maschine
installiert wird und zeit- oder durch Randbedingungen gesteuert,
Aufgaben durchführen kann.
Ein Argument für Puppet lag darin, dass es in Ruby programmiert werden
kann, der Programmiersprache, in der wir über das größte Know How
verfügen.
Allerdings hilft uns Puppet wenig beim Bootstrapping, also, wenn wir uns
Münchhausen gleich, am Beginn der Installation an der eigenen
Stiefelschlaufe aus dem Sumpf ziehen müssen. Wir verwenden dazu
ebenfalls eine auf Ruby basierende Software Veewee
(https://github.com/jedi4ever/veewee). Mit Veewee programmierten wir die
Erzeugung virtueller Maschinen für unterschiedliche Hypervisor
(Virtualbox, KVM, VmWare und Parallels). Es kann in diesen dann auch
automatisiert das Betriebssystem (in unserem Fall Ubuntu Linux)
installieren. Auch nach der Basisistallation kann Veewee noch weitere
Aufgaben durchführen, wie etwa Puppet installieren, das dann die weitere
Installation, Konfiguration und Wartung übernimmt.
Veewee selbst bedient sich bei der Erstellung der virtuellen Maschine
eines weiteren Tools: Vagrant (https://www.vagrantup.com/). Wie alle
anderen Komponenten ist Vagrant Open Source, sodass wir am Schluss eine
Guided Selling Lösung mit einem komplett freien Softwarestack
implementiert haben werden.
Die erzeugten Festplattien-Images können dann für praktisch alle
Hypervisor konvertiert werden.
Beispielscript Installation rvm mit Veewee
Puppet
Wir haben ein Script erstellt, das uns Entwicklungsmaschinen und
Demomaschinen für Referenzkunden und Marketingtermine auf Knopfdruck
erstellen kann.
Bei den weiteren Installationsschritten mittels Puppet haben wir Erfolge
erzielt, aber auch mit einem Problem zu kämpfen.
Das Positive: Wir können problemlos den Webserver Apache, die Datenbank
MySQL und deren Verwaltungstool PHPMyadmin und den Ruby Versionsmanager
RVM installieren.
Bei der Installation von Ruby selbst und Ruby On Rails haben wir mit der
Problematik zu tun, dass wir gewöhnlich Ruby und Rails unter einem
niedrig privilegierten User “rails” installieren. Puppet kommt mit
einem eigenen Benutzer “puppet”, sodass wir mit jedem Script
zunächst den Benutzer wechseln müssten. Eine Alternative wäre auf
vorgefertigte Ruby und Ruby On Rails Pakete umzusteigen, hier haben wir
uns noch nicht entschieden.
Wir können zum Beispiel auch die Mercator Applikation selbst mit allen
ihren Modulen aus den Repositories automatisch installieren.