How To: Vagrant als Multi Machine System aufsetzen

How To: Vagrant als Multi Machine System aufsetzen

Im Vorigen Kapitel habe ich beschrieben wie wir uns unsere eigene default Package für Vagrant aufsetzen und damit eine eigene Box erstellen, heute möchte ich zeigen, wie einfach es ist, sich ein Multi Machine System aufzusetzen um jeden Service als autonome Kapsel laufen lasse zu können.

Ich habe bei mir im Netzwerk einen Server mit verschiedenen Diensten drauf und immer wenn ich gezwungen bin größere Umbaumaßnahmen durchzuführen, muss ich alle Dienste auch wieder neu einrichten, das frißt Zeit, auch wenn Übung den Meister macht ;)

Zu dem kann man diese Boxen auch mit Kollegen und Freunden sharen und sie damit in den Genuß diverser Services bringen ohne das sie sich selbst die Arbeit machen müssen.

Ausgangslage sind folgende Services, die alle ein eigenes System bekommen sollen:

  • Samba
  • DHCP
  • DNS
  • LDAP
  • FTP/SFTP
  • DB Server
  • GIT
  • SVN
  • WEB (Apache)
  • Jenkins



Wie wir die eigenen Services auf den Maschinen an sich installieren, dazu kommen wir in weiteren Tutorials, hier geht es erst einmal darum, Vagrant dazu zu bewegen, die Maschinen zu starten und wie wir uns diese jeweiligen Maschinen überhaupt anlegen.


Wir legen und mit folgendem Befehl eine Box an:

BASH
vagrant box add MaschineName package.box


Wobei package.box für das von uns erstellte Paket steht oder wahlweise auch ein package von diversen Drittanbietern sein kann.

dem zu folge können wir jetzt nacheinander unsere Boxen anlegen :


BASH
vagrant box add samba package.box
vagrant box add dhcp package.box
vagrant box add dns package.box
vagrant box add ldap package.box
vagrant box add ftp package.box
vagrant box add db package.box
vagrant box add git package.box
vagrant box add svn package.box
vagrant box add web package.box
vagrant box add jenkins package.box



Nun legen wir uns einen rudimentäre Vagrantfile an und tragen unsere Maschinen ein:


RUBY
# -*- mode: ruby -*-
# -*- mode: ruby -*-

# -*- mode: ruby -*-
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do
config


config.vm.define "samba" do
samba

samba.ssh.private_key_path = "~/.ssh/id_rsa"
samba.vm.box = "samba"
# -*- mode: ruby -*-

config.vm.define "dhcp" do
dhcp

dhcp.ssh.private_key_path = "~/.ssh/id_rsa"
dhcp.vm.box = "dhcp"
# -*- mode: ruby -*-

config.vm.define "dns" do
dns

dns.ssh.private_key_path = "~/.ssh/id_rsa"
dns.vm.box = "dns"
# -*- mode: ruby -*-

config.vm.define "ldap" do
ldap

ldap.ssh.private_key_path = "~/.ssh/id_rsa"
ldap.vm.box = "ldap"
# -*- mode: ruby -*-

config.vm.define "ftp" do
ftp

ftp.ssh.private_key_path = "~/.ssh/id_rsa"
ftp.vm.box = "ftp"
# -*- mode: ruby -*-

config.vm.define "db" do
db

db.ssh.private_key_path = "~/.ssh/id_rsa"
db.vm.box = "db"
# -*- mode: ruby -*-

config.vm.define "git" do
git

git.ssh.private_key_path = "~/.ssh/id_rsa"
git.vm.box = "git"
# -*- mode: ruby -*-

config.vm.define "svn" do
svn

svn.ssh.private_key_path = "~/.ssh/id_rsa"
svn.vm.box = "svn"
# -*- mode: ruby -*-

config.vm.define "web" do
web

web.ssh.private_key_path = "~/.ssh/id_rsa"
web.vm.box = "web"
# -*- mode: ruby -*-

config.vm.define "jenkins" do
jenkins

jenkins.ssh.private_key_path = "~/.ssh/id_rsa"
jenkins.vm.box = "jenkins"
# -*- mode: ruby -*-
# -*- mode: ruby -*-



wir haben nun die Möglichkeit eine der Boxen explizit zu starten


BASH
vagrant up samba


und auch so wieder anzuhalten

BASH
vagrant halt samba


oder alle miteinander starten, indem wir in dem Verzeichnis wo unser Vagrantfile liegt, einfach folgenden Befehl ausführen:

BASH
vagrant up


und natürlich analog dazu auch wieder beenden


BASH
vagrant halt



Welche Boxen laufen sehen wir über folgenden Befehl:

BASH
vagrant status


man kann sich das aber auch mit Hilfe der VirtualBox Oberfläche ansehen:

Bild Oracle VM VirtualBox Manager_010.png nicht gefunden !



Vagrant benennt unsere Box automatisch beim ersten start um und hinterlegt sie bei VirtualBox, da dies als Basis zum starten der VM's genutzt wird. Jede unserer Boxen trägt das Prefix vagrant_ gefolgt vom namen der Box und einem timestamp den vagrant erstellt.


Verbinden können wir uns auch ganz entspannt auf die Boxen, wir müssen uns dazu nicht die jeweiligen SSH-Ports der Boxen merken, übrigen setzt Vagrant automastisch den SSH Port der Box auf einen anderen Port, wenn dieser bereits von einer Box belegt ist.


Auf eine Spezielle Box verbinden wir uns wie gesagt per

BASH
vagrant ssh samba



Das wars fürs erste, in weiteren Tutorials werden wir uns mit dem optimieren der Boxen über das VagrantFile befassen und außerdem kennen lernen, wie man die jeweiligen Dienste aufsetzt.
Autor mastercad
Veröffentlicht 17.06.2014