Open Source im professionellen Einsatz
Linux-Magazin 05/2013
© french_03, photocase.com

© french_03, photocase.com

Perl steuert Virtualbox

Entspannt nach draußen

Das Paket Vagrant (Vagabund) verwaltet mit Virtualbox als Hypervisor virtuelle Maschinen einfach von der Kommandozeile aus. Der Entwickler kann seinen Kunden, die einfach mal in ein Produkt hineinschnuppern wollen, fertig installierte Umgebungen mitgeben.

549

"Also bei mir funktioniert's!" – die alte Ausrede bei defekten Produkten sollte unter Software-Entwicklern spätestens mit der Erfindung virtueller Maschinen ausgedient haben. Denn auf einer nackten, virtuellen Distribution lassen sich prima ganze Softwaresuiten reproduzierbar installieren, um vorher zu testen, ob das Gesamtsystem später beim Kunden funktioniert oder nicht.

Um diese Tests zu automatisieren, benötigt der Entwickler ein Kommandozeilentool zum Hochfahren der virtuellen Maschine, ein Einrichtungstool zum Installieren der Applikationspakete und ihrer Abhängigkeiten sowie ein Skript zum Anwerfen der Testsuite. Oft erstrecken sich Applikationen über mehrere Instanzen – wie bei einem Client, der zu einem Webserver Kontakt aufnimmt, der wiederum eine Datenbankinstanz nutzt.

Geschäftiger Vagabund

Das Tool Vagrant [2] definiert die in einem Softwareprojekt genutzten virtuellen Maschinen per Konfigurationsdatei, die das Entwicklungsteam versioniert und neben dem Sourcecode im Projekt-Repository mitführt. Vagrant nutzt als Virtualisierer das kostenlose Virtualbox [3] , das auf Linux, Mac OS X und Windows läuft ( Abbildung 1 ) und noch mehr Betriebssysteme als Gäste virtualisiert. Vagrant richtet die VMs in so genannten Boxes so her, dass in ihnen ein SSH-Daemon läuft und ein User namens »vagrant« Sudo-Rechte besitzt ( Abbildung 2 ).

So startet die Sequenz »vagrant up« (oder »vagrant ssh« ) eine vorher von einem Distributionsserver wie Vagrantbox.es heruntergeladene Box als VM und wechselt auf der Kommandozeile in sie hinein. Um Softwarepakete automatisch einzurichten und Konfigurationsdateien anzupassen, stehen Softwareprovision-Tools wie Puppet [4] , Chef [5] und Saltstack [6] bereit. Diese laden Distributionspakete vom Repositoryserver, installieren sie, lösen Abhängigkeiten auf, stellen rollenspezifische Konfigurationen ein, starten Services und halten sie am Laufen.

Abbildung 1: Vagrant und Virtualbox: Wer wollte nicht schon einmal auf einem Macbook mit einem Aufruf von der Kommandozeile in ein 64-Bit-Ubuntu wechseln?

Abbildung 2: Auf Vagrantbox.es stehen alle gängigen Linux-Distributionen als Vagrant-Boxes zum Download bereit.

Puppet als Innenarchitekt

Das Kommando »vagrant init« in einem frisch angelegten Verzeichnis im Hostsystem legt eine Datei namens »VagrantFile« an, die außer einer langen Liste von auskommentierten Optionen nur den Ruby-Code

Vagrant::Config.run do |config|
  config.vm.box = "base"
end

enthält. Das anschließend abgesetzte Kommando »vagrant box add ...« ersetzt in der angegebenen Datei den Wert für »base« für die neu angelegte Box ( »precise32« in Listing 1 ) und lädt die Box vom Webserver an der angegebenen URL. Unterstützt die heruntergeladene VM-Box ein Einrichtungstool wie Puppet, Chef oder Saltstack, darf das Vagrant-File die Konfiguration der VM diesem überlassen. Listing 1 verweist zum Beispiel auf:

Damit erwartet Vagrant in der Datei »manifests/default.pp« unter dem Vagrant-Verzeichnis eine Puppet-Konfigurationsdatei nach Art von Listing 2 . Abbildung 3 zeigt das Datei-Layout im Hostsystem, das im Source-Control-Repository des Entwicklungsteams liegt.

Listing 1

VagrantFile

1 Vagrant::Config.run do |config|
2
3     # 32-bit Ubuntu Box
4   config.vm.box = "precise32"
5
6     # provision with Puppet
7   config.vm.provision :puppet
8 end
config.vm.provision :puppet

Listing 2

default.pp

01 # Basic Puppet Mojo manifest
02
03 class mojo {
04   exec { 'apt-get update':
05     command => '/usr/bin/apt-get update'
06   }
07
08   package { "libmojolicious-perl":
09     ensure => present
10   }
11
12   file { '/usr/bin/mymojo':
13     ensure => link,
14     target => "/vagrant/mymojo",
15     force  => true
16   }
17 }
18
19 include mojo

Abbildung 3: Diese Dateien in der Sourcecode-Verwaltung bestimmen Parameter und Inventar der Vagrant-VM.

Abbildung 4: In wenigen Schritten ist eine virtuelle Maschine unter Ubuntu Precise (32 Bit) mit Vagrant und Virtualbox installiert.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Vagrant & Co.

    Bereits seit 2010 arbeitet der Kalifornier Mitchell Hashimoto mit seiner Firma Hashicorp emsig an vier Open-Source-Tools. Vagrant & Co. erleichtern nicht nur die Arbeit von Devops, sondern helfen auch herkömmlichen Administratoren. Jedes Werkzeug löst dabei elegant eine ganz spezielle Aufgabe

  • Devops-Tool erweitert

    Das Open-Source-Tool Vagrant hilft Entwicklern und Admins, rasch standardisierte virtuelle Umgebungen einzurichten. Nun unterstützt Vagrant neben den Virtualisierungslösungen Virtualbox und VMware auch Microsofts Hyper-V.

  • Der Screencast zum Perl-Snapshot Linux-Magazin 05/2013

    Das Paket Vagrant (Vagabund) verwaltet mit Virtualbox als Hypervisor virtuelle Maschinen einfach von der Kommandozeile aus. Der Entwickler kann seinen Kunden, die einfach mal in ein Produkt hineinschnuppern wollen, fertig installierte Umgebungen mitgeben.

  • Perl-Snapshot

    Statt den Continuous-Integration-Server Jenkins im Browser mittels Mausklicks und Texteingaben für Builds zu konfigurieren, legen faule Tipper die nötigen Daten im Source-Control-System ab und lassen ein Perl-Skript die Handlangerarbeit tun.

  • Perl-Snapshot

    Das überlichtgeschwinde Provisionierungstool Ansible eignet sich nicht nur für Konfigurations- und Releasemanagement mittelgroßer Serverfarmen, sondern auch für den Hausgebrauch, zum Restaurieren von Anpassungen auf dem Linux-Desktop daheim.

comments powered by Disqus